เน็ตเวิร์กคนจน
การเซ็ตเครือข่ายในบ้านที่มีเครื่องลูกข่าย 2-3 เครื่อง กับโมเด็มหนึ่งตัว เพื่อใช้อินเทอร์เน็ต ก็ต้องเซ็ต gateway มาหนึ่งเครื่อง โดยมีบริการที่ต้องจัดการต่อไปนี้เป็นอย่างน้อย:
- IP Masquerade
- DNS
- SMTP
ลองมาตั้ง gateway เล็กๆ ด้วย Debian ดู
IP Masquerade นั้น อาจเป็นเรื่องยุ่งยากที่จะต้องมาเขียน iptables rules แต่ใน Debian มีแพกเกจ ipmasq ซึ่งช่วยจัดการ iptables rules ให้โดยอัตโนมัติ โดยค่าปกติคือ จะ masquerade IP ให้กับเครื่อง IP ภายใน แต่จะไม่อนุญาตให้ IP ภายนอกใช้เป็น gateway และยังติดตั้ง script สำหรับ update iptables rule เมื่อมีการ up หรือ down network interface ด้วย ง่ายซะไม่มีอะ
DNS ถ้ามีแค่ ISP เดียวให้ต่อ ก็อาจจะไปเซ็ตเครื่องลูกข่ายให้ใช้ DNS server ของ ISP แต่ถ้ามีหลาย ISP ให้ต่อ โดยที่เขาไม่อนุญาตให้ IP จากเจ้าอื่นใช้ คงไม่สนุกแน่ ที่จะต้องตาม update nameserver ที่เครื่องลูก วิธีหนึ่งที่อาจจะคิดถึง คือตั้ง DNS ภายในด้วย bind โดยให้มัน lookup name เองตั้งแต่ root domain ไปเลย หรือไม่ก็ให้มัน forward request ไปยัง DNS ของ ISP โดยต้องติดตั้งแพกเกจ resolvconf เพื่อคอย update config file ของ bind ไปตาม ISP ที่ต่อด้วย
แต่มีอีกวิธีที่ง่ายและเบากว่านั้น แทนที่จะติดตั้ง bind ทั้งตัว ก็ใช้ Dnsmasq ซึ่งเป็น name server ตัวเล็กๆ ที่ forward request อย่างเดียว และยังสามารถติดตาม DNS ที่เปลี่ยนไปเมื่อมีการเชื่อมต่อ ISP ใหม่ด้วย การติดตาม DNS อาจใช้แพกเกจ resolvconf ช่วย หรือถ้าไม่มี resolvconf ช่วย dnsmasq ก็จะพยายามตรวจสอบ resolv.conf ที่ได้จาก DHCP client หรือ pppd แทน ทำให้เครื่องลูกข่ายใช้บริการ DNS จากเครื่อง gateway นี้ได้อย่างต่อเนื่อง นอกจากนี้ dnsmasq ยังสามารถแจก IP แบบ DHCP ได้ด้วย หรือถ้าใช้ static IP ก็สามารถใช้ /etc/hosts ในการ map ชื่อโฮสต์ภายในได้ด้วย ทั้งหมดนี้ กินเนื้อที่ฮาร์ดดิสก์แค่ 300 kB
SMTP เป็นเรื่องค่อนข้างสำคัญสำหรับการส่งเมล (ในกรณีที่ไม่ใช้ web mail) ที่จะต้องใช้ SMTP server ของ ISP เพราะการส่งเมลโดยตรงจาก MTA ในเครื่องลูก หรือใน mail server ในเครือข่ายท้องถิ่น อาจถูก reject จาก mail server บางแห่ง เพราะ IP ที่ได้รับแจกจาก ISP มักจะถูกพวก spammer ใช้ส่งเมลขยะ
ปัญหาคล้ายกันนี้ ยังเกิดกับผู้ใช้โน้ตบุค ที่ต้องย้ายเครือข่ายบ่อยๆ อีกด้วย (เรื่อง DNS ยังพอบรรเทาได้ด้วย DHCP ที่จะแจก name server มาให้ด้วยอยู่แล้ว) พอย้ายเครือข่ายที ก็ต้องมาเปลี่ยน SMTP ครั้นจะเซ็ต MTA ในเครื่องให้ส่งเมลเองโดยตรง ก็จะเจอปัญหาโดน block จากบางไซต์ อย่างที่กล่าวข้างต้น
ถ้า mail client ของเราสามารถตั้ง SMTP เองได้ ก็คงไม่ยุ่งยากมาก แค่ไปเซ็ต SMTP ทุกครั้งที่ย้ายเครือข่ายเท่านั้นก็พอ แต่ถ้าใช้ mail client อย่าง mutt ซึ่งไม่ยอมใช้ SMTP เลย แต่จะอิงอาศัย mail spool ของระบบเป็นหลัก แบบนี้จำเป็นต้องตั้ง MTA ให้สามารถปรับตัวตามเครือข่ายที่เชื่อมต่อได้ง่าย
ถ้าจัดการเรื่องนี้ด้วย MTA ตัวบิ๊กๆ อย่าง sendmail, postfix, qmail, exim ก็อาจจะยังคงยุ่งยากอยู่ มีอีกแพกเกจที่เล็กกว่ากันเยอะ คือ MasqMail ซึ่งออกแบบมาสำหรับระบบที่ไม่ได้เชื่อมต่ออินเทอร์เน็ตอย่างถาวรโดยเฉพาะ มีระบบ spool เก็บ off-line mail ไว้รอส่งตอนที่ connect ISP โดยปรับเปลี่ยน mail server ได้ตามค่าที่ตั้งไว้ (หรือส่งเมลเองโดยตรง ถ้าไม่มี SMTP server ให้) และสามารถ fetch mail ผ่าน POP3 ได้ และสามารถเชื่อมรวมกับ masqdialer (ตัวควบคุมการเชื่อมต่อโมเด็มในเครือข่าย) เพื่อตรวจจับสถานะการเชื่อมต่อได้ด้วย ทั้งหมดนี้ กินเนื้อที่ฮาร์ดดิสก์ไม่เกิน 500 kB
ลองใช้ดูสักพักน่ะ (หลังจากที่เล่น exim + bind มานาน) ที่ผ่านมาก็ใช้งานได้เรียบลื่นดี