ปัญหาที่พบคือเมื่อ Setup Linux Firewall ขึ้นมาแล้ว ตัว Server สามารถใช้งาน internet ได้ปกติ, หลังจากทำ iptables MASQUERADE ออกแล้ว เครื่อง client ก็สามารถ ping ออกโดย IP address ได้ปกติ แต่ ทำยังไง named (BIND) ก็ไม่ทำงาน แม้จะตั้ง config อย่างถูกต้องแล้ว
การคาดเดาเบื้องต้น network admin ทุกคนต้องหลงทางไปนั่งแก้ BIND config (ซึ่งอยู่ใน named.conf หรือ named.caching-nameserver.conf) ก็จะบว่า จะแก้ config อย่างไรก็ไม่หาย หรือแม้จะไปแก้ไข resolve.conf อย่างไรก็ไม่สามารถทำให้ client ใช้งาน DNS caching แบบ non-authoritive ได้ แต่ปัญหามันกลับไปอยู่ที่ network conflict ในส่วนของ gateway ดังตัวอย่างต่อไปนี้
สมมติ Core router มี IP address เป็น 192.168.1.1
** Configuration of eth0 **
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
IPADDR=192.168.1.50
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
** Configuration of eth1 **
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
TYPE=Ethernet
USERCTL=no
PEERDNS=yes
IPV6INIT=no
IPADDR=10.160.0.1
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
** Shown route table **
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
ดูผาดๆแล้วดูเหมือนไม่มีอะไรเพราะการ route ออกถูกต้อง แต่สิ่งที่ผิดและทำให้ named service ไม่สามารถทำงานได้นั้น อยู่ที่ Gateway IP ของ eth1 ซึ่งไม่สมควรที่จะมีอยู่ ส่งผลให้ทิศทางของการ resolve วิ่งออกไปผิดทาง วิธีการแก้ไขคือ เอา gateway IP ที่อยู่ใน LAN interface ออก ก็จะทำให้ caching named service สามารถทำงานได้ตามปกติอย่างที่ควรจะเป็น
การ config นี้สอนให้รู้ว่า ด้วยความยืดหยุ่นของการ config บน linux แม้การตั้งค่าจะอนุญาตให้กำหนดได้, มี routing ถูกต้อง ก็ไม่ได้รับประกันว่า application บางอย่างจะทำงานได้ถูกต้อง ซึ่ง System Admin ควรให้ความระมัดระวังในความ clean ของ config เล็กๆน้อยๆนี้ด้วย
Written by Tiwakorn Laophulsuk
No comments:
Post a Comment
Give a comment ...