ตั้ง internet gateway อย่างง่าย ด้วย ipmasq
การตั้ง internet gateway ภายในบ้าน หรือในองค์กร เพื่อใช้หมายเลขไอพีหมายเลขเดียวที่ได้มาเป็นทางผ่านสู่อินเทอร์เน็ตให้กับเครื่องลูกข่าย ทำได้ด้วยเทคนิคที่เรียกว่า IP Masquerade และสามารถเขียนกฎ firewall ในการกรองแพ็กเก็ตต่างๆ ได้ด้วย ทั้งหมดนี้ อาศัยกลไกในเคอร์เนลลินุกซ์ที่เรียกว่า netfilter (สำหรับเคอร์เนล 2.4 ขึ้นไป ถ้าเป็นรุ่นเก่ากว่านั้นจะเป็น ipchain และ ipfwadm) คำสั่งที่ใช้ตั้งกฎก็คือ iptables
ฟังดูยุ่งยาก แต่ในเดเบียนมีแพกเกจที่ช่วยให้ตั้งเกตเวย์ได้อย่างรวดเร็ว คือ ipmasq ซึ่งจะมีคำสั่งช่วยตรวจสอบ route table แยกแยะ interface ที่เป็น public IP และเครือข่ายภายใน แล้วสร้างกฎ iptables เพื่อให้ทำ IP masquerade จากภายในสู่ภายนอก พร้อมทั้งทำ firewall กันแพ็กเก็ตจากภายนอกโดยอัตโนมัติ
รู้หน้าที่คร่าวๆ แล้ว ก็ติดตั้งกันเลย
# aptitude install ipmasq
คำถามระหว่างติดตั้ง ก็มีนิดหน่อย คือถามว่าจะคำนวณ iptables ใหม่เมื่อเปิด PPP หรือไม่ ตรงนี้ก็มีประโยชน์ถ้าคุณเชื่อมต่ออินเทอร์เน็ตผ่านโมเด็ม 56k ด้วย PPP
จากนั้น ทำความรู้จักกับคำสั่งนิดหนึ่ง คือเมื่อใดก็ตาม ที่คุณต้องการคำนวณกฎ iptables ใหม่ ก็สั่งคำสั่ง ipmasq
ได้เลย และถ้าจะทำให้เป็นอัตโนมัติ วิธีที่แนะนำก็คือ กำหนดให้คำนวณกฎใหม่ใน ifupdown โดยเพิ่มบรรทัด up, down ในแฟ้ม /etc/network/interfaces
เช่น สมมุติว่า eth0 เป็นช่องที่ต่อออกสู่อินเทอร์เน็ต และ eth1 เป็นช่องที่ต่อกับเครือข่ายภายใน
iface eth0 inet static address 192.168.1.1 gateway gateway-ip up /usr/sbin/ipmasq down /usr/sbin/ipmasq -r /etc/ipmasq/ipmasq-down iface eth1 inet static address 192.168.2.1 up /usr/sbin/ipmasq down /usr/sbin/ipmasq -r /etc/ipmasq/ipmasq-down
ต่อไป เมื่อคุณสั่ง ifup, ifdown (หรือตอนบูตเครื่อง) ก็จะมีการคำนวณ IP masquerading โดยอัตโนมัติ จบแล้ว! แค่นั้นแหละ สำหรับการตั้งเกตเวย์อย่างง่าย ง่ายไหมล่ะ?
ทีนี้ สมมุติว่าคุณอยากปรับแต่งกฎ ก็สามารถเข้าไปดูกฎได้ที่ไดเรกทอรี /etc/ipmasq/rules/
ในนั้นชื่อกฎจะเรียงตามขั้นตอนต่างๆ คือ
- A = preinitialization (ตรวจสอบข้อมูลเบื้องต้น เช่น หา interface ภายใน-ภายนอก)
- F = forwarding rules
- I = input rules
- M = masquerading rules
- O = output rules
- Z = postinitalization
ชื่อกฎนั้น ค่าปกติจะลงท้ายด้วย .def
แต่ถ้ามีกฎชื่อเดียวกันแต่ลงท้ายด้วย .rul
ก็จะถูกใช้แทน (ใช้เวลาจะเขียนกฎเองทับค่าเดิม)
กฎของ ipmasq จะซอยย่อยเป็นเรื่องๆ เพื่อให้เพิ่ม-ลดได้ง่ายๆ ค่าปกติที่ให้มานั้น จะทำ IP masquerade จากเครือข่ายภายในออกสู่ภายนอก และกันแพ็กเก็ตภายนอกไม่ให้เข้ามาภายใน ซึ่งถือว่าปลอดภัยสำหรับเครือข่ายทั่ว ๆ ไปอยู่แล้ว แต่ถ้าคุณต้องการเพิ่มกฎเข้าไปอีก เช่น การทำ transparent proxy ก็สามารถคัดลอกไปจาก /usr/share/doc/ipmasq/examples/
ได้ เดี๋ยวไว้พูดถึงการทำ transparent proxy ในตอนหน้าครับ
- thep's blog
- Log in to post comments
![]() |
ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้ |
Comments
Re: ตั้ง internet gateway อย่างง่าย ด้วย ipmasq
on 21 August, 2008 - 19:17 Permalink
แร้วมัน จะเก็บ แพทเกมส์ ทั้งแพท ที่เก็บรูปแบบ ในsquid และ
รูปแบบที่เก็บใน Frox ด้วยหรือป่าวครับ
ผมเริ่ม ศึกษา Ubuntu ตอนนี้ ติดตั้ง ต่อ interfaces ต่างๆได้แล้ว แต่ยังไปไหนไม่เป็นเลยครับ ช่วยหน่อยครับ ..เป็นพระคุณอย่างสูง
eth0 = 192.168.10.6 ภายใน
eth1 = ppp0
eth2 = ppp1