02 August 2013

Named resolve ไม่ออก แต่ Firewall ออกเน็ตได้สบาย เป็นไรหว่า?

อีกหนึ่งปัญหาของความยืดหยุ่นมากเกินไปของการตั้งค่า Linux Server ปัญหานี้เกิดบน Firewall ของ Network เพื่อนบ้านที่เพิ่งตั้งขึ้นใหม่ กรณีนี้ใช้เวลาในการนั่งหาปัญหาถึง 30 นาที (ถือว่านานมาก) จนต้องเอามา Blog ไว้

ปัญหาที่พบคือเมื่อ 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 ...