สอบถาม DNS ผ่าน TCP ด้วยการส่งต่อ SSH ภายในเครื่อง
ส่งต่อพอร์ต TCP ภายในเครื่องที่ไม่ต้องใช้สิทธิ์พิเศษไปยังเซิร์ฟเวอร์ DNS ระยะไกล และร้องขอ DNS over TCP อย่างชัดเจนด้วย dig
การส่งต่อภายในเครื่องของ OpenSSH ขนส่ง TCP DNS ก็ใช้ TCP ได้เช่นกัน หากเครื่องมือสอบถามและบริการ DNS ระยะไกลใช้การขนส่งนั้น
สำหรับเซิร์ฟเวอร์ DNS ที่เข้าถึงได้จากโฮสต์ SSH ให้เปิดการส่งต่อที่ฟังเฉพาะบน loopback:
ssh -N -L 127.0.0.1:1053:dns.internal:53 [email protected]
จากนั้นส่งคำถาม TCP DNS อย่างชัดเจนจากเครื่องภายใน:
dig +tcp @127.0.0.1 -p 1053 app.internal A
แทนที่เซิร์ฟเวอร์ DNS โฮสต์ SSH และชื่อที่สอบถามด้วยค่าที่ต้องการ ฝั่งเซิร์ฟเวอร์ SSH ต้องเข้าถึง dns.internal:53 ได้ และนโยบายการส่งต่อต้องอนุญาต
พอร์ตภายในอยู่ในช่วงที่สูงกว่าพอร์ตที่ต้องใช้สิทธิ์พิเศษ คำถามไปยังพอร์ตภายใน 1053 ไม่จำเป็นต้องผูกพอร์ต DNS ของระบบ 53
สิ่งนี้ไม่ได้เปลี่ยนเส้นทางคำถาม UDP DNS ทั่วไปโดยอัตโนมัติ ท่อไบต์ UDP-ไป-TCP แบบดิบไม่เพียงพอ เพราะ DNS over TCP เพิ่มฟิลด์ความยาวและการแบ่งเฟรมสตรีม การผสานกับตัวแก้ไขของระบบต้องใช้ DNS forwarder ที่เหมาะสมหรือการกำหนดค่า TCP ที่รองรับอย่างชัดเจน
สุดท้าย การได้ที่อยู่ผ่านเส้นทางนี้ไม่ได้ส่งการเชื่อมต่อเว็บถัดไปผ่าน SSH การค้นหา DNS และการขนส่งไปยังปลายทางยังคงเป็นการเลือกที่แยกจากกัน