Ubuntu IP Forwarding

สมมุติว่าเราต้องการใช้ Ubuntu เป็น gateway ในการเชื่อมต่ออุปกรณ์ออก Internet ดังภาพข้างล่าง

ในที่นี้สมมุติอีกเช่นกันว่า เราสามารถทำให้ Ubuntu เชื่อมต่อ Internet ผ่าน interface ppp0 ได้แล้ว (สำหรับผู้เขียนใช้ bluetooth ผ่าน Sony Ericsson K550i) ดังนั้นขั้นตอนที่เหลือคือ ทำให้ X device ของเราสามารถเชื่อมต่อ Internet ได้โดยใช้ Ubuntu เป็น gateway

ขั้นตอน
1. ตรวจสอบก่อนว่า IP Forwarding ได้ถูก enabled ไว้แล้วหรือยัง

sysctl net.ipv4.ip_forward ถ้าได้ net.ipv4.ip_forward=0 (หรือจะใช้คำสั่ง cat /proc/sys/net/ipv4/ip_forward ก็ได้) หมายถึงยังไม่ได้ enabled

2. Enable IP Forwarding

sudo sysctl -w net.ipv4.ip_forward=1 หรือ echo 1 > /proc/sys/net/ipv4/ip_forward จากนั้น restart process ด้วยคำสั่ง /etc/ini.d/procps.sh restart

แต่ถ้าต้องการเปลี่ยนค่าถาวร ไปเพิ่ม net.ipv4.ip_forward=1 ลงใน /etc/sysctl.conf เมื่อเปิดเครื่องคราวหน้าจะได้ไม่ต้องทำซ้ำๆ อีก

3. ทำ NAT ซึ่งเป็นขั้นตอนสุดท้าย ใช้คำสั่ง iptables ในการทำ address translation ผ่าน interface ppp0

sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

หากต้องการให้เปิดเครื่องใช้งานได้เลยก็เพิ่มคำสั่งข้างบนใน /etc/rc.local (ไม่ต้อง sudo นะ)

โดยสามารถตรวจสอบก่อนและหลังทำคำสั่งข้างบน ด้วย sudo iptables -L -t nat จะแสดงเห็นความแตกต่าง

เท่านี้ก็ทดลองใช้งานได้เลย เย้!

อ้างอิง: How to enable IP Forwarding in Linux