วันพุธที่ ๑๑ กรกฎาคม พ.ศ. ๒๕๕๐

Internet Gateway By FreeBSD using IPNat

ในหลาย ๆ องค์กรณ์ ก็จะมี Internet ใช้งานกัน ถ้าองค์กรณ์ไม่ใหญ่ มีเครื่องคอมสักไม่เกิน 10 เครื่องก็คงจะไม่มีปัญหาเพราะเราก็สามารถใช้ Windows XP ในการแชร์เน็ตได้ หรือจะใช้ ADSL Router ในการแชร์ก็ได้เช่นกัน และสะดวกดีด้วย แต่ในองค์กรณ์ที่ใหญ่มาก มีเครื่องคอมพิวเตอร์เป็นร้อยเครื่องถ้าจะใช้ Windows XP ในการแชร์ก็คงจะไม่ไหว จะใช้ Adsl Router ก็แรงไม่พอ (ยกเว้น Router ราคาแพง ที่ทำหน้าที่โดยเฉพาะ) ในทีนี้จะแนะนำการทำ Internet Gateway ง่าย ๆ ด้วย FreeBSD โดยใช้ IPNat แต่ประสิทธิภาพเหลือกินเลยครับ

FreeBSD ก็จะมี IPNat มาพร้อมแล้ว ไม่ต้องติดตั้งเพิ่มเติม ไม่ต้อง compile kernel ใหม่ สามารถที่จะ config และใช้งานได้เลย ซึ่งก็ทำได้ง่าย ๆ เพียงแค่ 3 ขั้นตอนเท่านั้นครับ มาดูวิธีคอนฟิกและเปิดการใช้งานกันเลย

1. เพิ่มบรรทัดดังต่อไปนี้ลงไปในไฟล์ /etc/rc.conf
gateway_enable="YES" ------> ทำให้เครื่องนี้เป็น Lan Gateway
ipnat_enable="YES" ------> เปิดการใช้งาน IPNat ครับ
ipnat_rules="/etc/ipnat.rules" ------> เป็นการกำหนดว่า ไฟล์กำหนดค่าของ IPNat คือไฟล์ไหน ซึ่งตรงนี้เราสามารถเปลี่ยนเป็นอย่างอื่นได้
2. สร้างไฟล์ /etc/ipnat.rules ซึ่งจะมีเนื้อหาภายในดังนี้
map rl0 192.168.0.0/24 -> 0/32 tcp/udp auto
คำอธิบาย
    1. map = คำสั่ง map ip เครื่อง ลูกข่ายให้ใช้ natrl0 = เป็น การ์ดแลนที่ต่อ อินเตอร์เน็ต (กรณีของผม rl0 ต่อกับ router rl1 ต่อกับเครือข่ายภายในโรงเรียน)

    2. 192.168.0.0/24 = เป็น ip ภายในที่ต้องการให้ใช้งาน nat ได้ (หรือ เล่นเน็ตได้ นั่นเอง)

    3. -> = เอาไว้เหมือนเดิมแหล่ะ เป็นการกำหนดให้ map ไปที่ ip ไหน

    4. 0/32 = ก็เอาไว้เหมือนเดิม ที่จริง ตรงนี้ กำหนดให้เป็น ip ของ การ์ดแลน rl0 แต่ถ้าเกิดว่า การ์ดแลน rl0 ได้รับแจก ip มาจาก isp อีกทีนึง เช่น กรณีที่เราใช้ adsl แชร์เน็ต ip ก็จะเปลี่ยน ทำให้เรากำหนดไม่ได้ แต่เรากำหนดเป็น 0/32 เพื่อให้ระบบ detect ip ให้เราอัตโนมัติ

    5. tcp/udp auto = เพื่อให้ ipnat กำหนด port ในการเชื่อต่อโดยอัตโนมัติ
3. เริ่มการทำงานของ IPNat โดยคำสั่งที่ใช้ในการควบคุม IPNat ก็จะเป็นดังนี้

ipnat -CF -f /etc/ipnat.rules = โหลดกฏของ IPNat ใหม่ (ใช้คำสั่งนี้เพื่อเปิดการทำงานของ IPNat ได้ โดยไม่ต้อง Restart)
ipnat -s = เพื่อแสดงสถานะของ IPNat
ipnat -l = เพื่อแสดงตารางการว่า IP ไหน Map กับ Ports อะไร
ipnat -v = เปิดโหมด Verbose เพื่อแสดงข้อมูลของ Nat ที่กำลังทำงานอยู่

เพียงเท่านี้ก็จะสามารถทำให้ Server ของเราเป็น Internet Gateway ได้แล้ว ง่ายไหมครับ แต่ยังมีสิ่งที่จะเพิ่มเติมอีกในอนาคต เช่นการทำ Redirect Port สำหรับการทำ Transparent Proxy ซึ่งจะได้กล่าวถึงในอนาคตครับในเรื่องของการติดตั้ง Squid Proxy Server

๒ ความคิดเห็น:

รู้รอบ ตอบโจทย์ สร้างรายได้ด้วยมือถือ กล่าวว่า...

ขอบคุณครับ กำลังหาพอดี สอบถามเพิ่มเติมครับ

ต้องการให้ใช้งานร่วมกับ squid30 transparent ตั้งค่า ipfilter+ipnat อย่างไรครับ ขอบครับ

Aphorist กล่าวว่า...

โอ้ว บทความนี้ตั้งแต่ปี 50 นานมากแล้วครับ
ผมเองก็ลืม ๆ ไปแล้ว ใช้แต่ Debian จนชิน
ส่วนเรื่องของ Internet Gateway ก็ใช้ Zentyal น่ะครับ