ฉันใช้ Unifi UDM Pro เป็นเกตเวย์สำหรับ 2 VLAN:
- LAN หลัก (อินเทอร์เฟซ:
br0
เครือข่ายย่อย: 192.168.1.1/24
)
- อุปกรณ์ IoT VLAN (อินเทอร์เฟซ:
br3
เครือข่ายย่อย: 192.168.3.1/24
)
แต่ละคนมีเซิร์ฟเวอร์ DNS (Adguard Home) ในเครื่องของตัวเอง (192.168.1.52
และ 192.168.3.52
ตามลำดับ). สำหรับแต่ละซับเน็ต ฉันต้องการป้องกันไม่ให้ไคลเอ็นต์ข้ามเซิร์ฟเวอร์ DNS ในเครื่องที่กำหนดผ่าน DHCP ในการทำเช่นนี้ ฉัน SSH ใน UDM Pro และรันคำสั่งเหล่านี้:
iptables -t nat -A PREROUTING -i br0 ! -s 192.168.1.52 ! -d 192.168.1.52 -p tcp --dport 53 -j DNAT --to 192.168.1.52
iptables -t nat -A PREROUTING -i br0 ! -s 192.168.1.52 ! -d 192.168.1.52 -p udp --dport 53 -j DNAT --to 192.168.1.52
iptables -t nat -A PREROUTING -i br3 ! -s 192.168.3.52 ! -d 192.168.3.52 -p tcp --dport 53 -j DNAT --to 192.168.3.52
iptables -t nat -A PREROUTING -i br3 ! -s 192.168.3.52 ! -d 192.168.3.52 -p udp --dport 53 -j DNAT --to 192.168.3.52
iptables -t nat -A POSTROUTING -p tcp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -p udp --dport 53 -j MASQUERADE
ฉันทดสอบสิ่งเหล่านี้โดยใช้สองวิธีหลัก: ขุด
และผ่านอุปกรณ์ WLAN (เช่น iPad):
ใช้ ขุด
วิธีการ ฉันทดสอบการค้นหา DNS โดยตรงก่อน จากนั้นจึงทดสอบหนึ่งไปยังเซิร์ฟเวอร์ DNS ของ Google ฉันเรียกใช้ทั้งสองคำสั่งบนโฮสต์จริงสำหรับเซิร์ฟเวอร์ DNS ของฉัน (ซึ่งเป็นสมาชิกของทุก VLAN ผ่าน Debian วแลน
บรรจุุภัณฑ์):
ขุด linux.org '@ 192.168.3.52' -b '192.168.3.52'
ขุด linux.org '@8.8.8.8' -b '192.168.3.52'
คำสั่งแรกด้านบนทำงานได้ดี อันที่สองทำให้ฉันมีเวลานอก ฉันคาดว่าอันที่สองจะยังคงใช้งานได้ ยกเว้นจะถูกส่งผ่าน 192.168.3.52
.
ถ้าวิ่งเหมือนกัน ขุด
คำสั่งด้านบนแต่บน LAN หลัก ทั้งสองทำงานได้ดีและฉันเห็นทั้งสองคำสั่งบนเซิร์ฟเวอร์ DNS ในเครื่องของฉัน
ฉันไม่แน่ใจว่าทำไม VLAN 3 ไม่ทำงานในกรณีเปลี่ยนเส้นทาง แต่ LAN หลักของฉันทำงาน ใครสามารถช่วยฉันเข้าใจว่าทำไมสิ่งนี้ถึงใช้งานไม่ได้และแสดงวิธีแก้ปัญหาที่ใช้งานได้