ผมไม่แน่ใจว่า หลาย ๆ ท่านยังมีปัญหาเรื่อง DNS กันอยู่อีกหรือเปล่า หัวข้อนี้จะอธิบายถึงสาเหตุ และแนวทางวิธีแก้ไข
ระบบ MultiWAN Server นั้น ส่วนใหญ่แล้ว จะเชื่อมต่อ Internet มากกว่า 1 ISP เพื่อป้องกันการล่มของ ISP
1 ISP ก็จะมี DNS มาให้ 2 IP หลายท่านอาจจะสงสัย ว่า IP DNS นั้นเอามาจากไหน เพราะบางครั้ง ถาม ISP ไป
ก็ยังไ่ม่สามารถบอก DNS มาได้ เพราะเนื่องจากว่าในแต่ละพื้นที่ หรือแต่ละ node จะได้รับ DNS ที่แตกต่างกันออกไป
เมื่อกำหนด pppd เป็นแบบ usepeerdns เช่น
Jul 12 10:35:40 ubuntu pppd[16498]: peer from calling number 00:30:88:03:8D:FE authorized
Jul 12 10:35:40 ubuntu pppd[16498]: local IP address 110.77.147.60
Jul 12 10:35:40 ubuntu pppd[16498]: remote IP address 110.77.147.1
Jul 12 10:35:40 ubuntu pppd[16498]: primary DNS address 61.19.245.245
Jul 12 10:35:40 ubuntu pppd[16498]: secondary DNS address 202.129.27.133หรือ
Jul 12 12:49:10 ubuntu pppd[22627]: peer from calling number 00:30:88:03:8E:06 authorized
Jul 12 12:49:10 ubuntu pppd[22627]: local IP address 119.42.85.96
Jul 12 12:49:10 ubuntu pppd[22627]: remote IP address 119.42.85.1
Jul 12 12:49:10 ubuntu pppd[22627]: primary DNS address 202.129.27.135
Jul 12 12:49:10 ubuntu pppd[22627]: secondary DNS address 61.19.245.245สังเกตุว่า DNS ของแต่ละพื้นที่ ถึงแม้ว่าจะ ISP เดียวกัน ก็อาจจะไม่เหมือนกัน ซึ่งจะเป็น DNS ที่ ISP เลือกมาแล้วว่า
เหมาะสมที่สุด หรืออาจจะมีการปรับเปลี่ยน เพื่อความเหมาะสมของแต่ละ ISP
เนื่องจากว่า ระบบ MultiWAN Server มีการเชื่อมต่อ หลาย ISP ดังนั้นจึงทำให้มี DNS หลายชุด
โดยส่วนใหญ่แล้ว packet DNS ของระบบ MultiWAN Server จะไม่มีการ config ให้ออกเส้นใด เส้นนึง ดังนั้น packet
DNS จึงมักจะวิ่งออกทางเส้นเวป ถ้ามีเส้นเวปหลาย ๆ เส้น packet ก็จะวิ่งสุ่มออกไป ทุก ๆ เส้น
ปัญหาก็เลยเกิดขึ้นมา เมื่อ ISP บล๊อกการใช้งาน DNS จาก IP ที่ไม่ใช่อยู่ในความดูแลของ DNS ตัวนั้น
แปลง่าย ๆ ก็คือว่า DNS ใคร DNS มัน ถ้าใช้ DNS ของ TRUE ก็ต้องใช้เน็ต TRUE เป็นต้น
ดังนั้น เราจะต้องทำการ mark packet DNS เพื่อให้วิ่งออกตรงตาม ISP ยกตัวอย่างเช่น ใช้ ip route เป็นตัวจัดการ
ip route add 61.19.245.245 dev ppp102
ip route add 202.129.27.133 dev ppp102เป็นต้น
หรือจะใช้ iptables เป็นตัวจัดการ ก็ได้เหมือนกัน เช่น
iptables -A OUTPUT -t mangle -d 61.19.245.245 -p udp --dport 53 -j MARK --set-mark 0x102
iptables -A OUTPUT -t mangle -d 202.129.27.133 -p udp --dport 53 -j MARK --set-mark 0x102ก็ได้เหมือนกัน
หรือวิธีแก้อีกวิธีนึง ก็คือ การใช้ open dns หรือ dns ที่เป็น public สามารถใช้งานได้ทุก ISP เช่น
Free Public DNS Server
Service provider: Google
8.8.8.8
8.8.4.4
Service provider: ScrubIt
Public dns server address:
67.138.54.100
207.225.209.66
Service provider:dnsadvantage
Dnsadvantage free dns server list:
156.154.70.1
156.154.71.1
Service provider:OpenDNS
OpenDNS free dns server list:
208.67.222.222
208.67.220.220
Service provider: vnsc-pri.sys.gtei.net
Public Name server IP address:
4.2.2.1
4.2.2.2
4.2.2.3
4.2.2.4
4.2.2.5
4.2.2.6
เป็นต้น
วิธีการตรวจสอบว่า DNS ตัวนั้น สามารถใช้งานได้หรือไม่ ก็คือ ให้ใช้คำสั่ง
nslookup [ชื่อเวป] [IP ของ DNS]
ยกตัวอย่างเช่น
>
nslookup www.google.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53Non-authoritative answer:
www.google.com canonical name =
www.l.google.com.
Name: www.l.google.com
Address: 64.233.181.104
ถ้ามีการตอบกลับมาโดย IP Server นั้น ก็แสดงว่า DNS ตัวนั้น สามารถนำมาใช้งานได้
แต่ถ้าผลออกมาเป็น
>
nslookup www.google.com 4.4.4.4Server: 127.0.0.1
Address: 127.0.0.1#53Non-authoritative answer:
www.google.com canonical name =
www.l.google.com.
Name: www.l.google.com
Address: 64.233.181.104
ก็แสดงว่า DNS ตัวดังกล่าว ไม่สามารถนำมาใช้งานได้
แต่วิธีการที่ดีที่สุด สำหรับ MultiWAN Server นั้น ก็คือ การสร้างสคริปนำ DNS ที่ได้รับมาจาก ISP โดย usepeerdns
มาปรับแต่ง ให้เหมาุะสม และให้ packet DNS วิ่งออกตรงตาม ISP และการใช้ bind9 แทน dnsmasq เป็นต้น
แล้ว MultiWAN Server ของท่าน จะหมดปัญหาเรื่อง DNS อีกต่อไป