(http://www.hadyaiinternet.com/images/2wan.jpg)
จากรูปจะเห็นว่า Server ประกอบด้วย 3 Interface คือ eth0, eth1, และ eth2 ตามลำดับ
กำหนดให้ eth0 เป็น LAN Interface
กำหนดให้ eth1 เป็น WAN1 Interface เชื่อมต่ออินเตอร์เน็ตผ่าน ppp101
กำหนดให้ eth2 เป็น WAN2 Interface เชื่อมต่ออินเตอร์เน็ตผ่าน ppp102
หลักการทำงานของ MultiWAN นั้นประกอบด้วย 3 ส่วนหลัก ๆ คือ
1. การ Mark Packet
2. การกำหนด rule
3. การสร้าง route table
กรณี Packet จากวิ่งจาก LAN ไป WAN จะได้ว่า
LAN ---> MARK 0x101 --> ip rule from all fwmark 0x101 lookup 101 --> ip route add table 101 default dev ppp101 ---> WAN1
หรือ
LAN ---> MARK 0x102 --> ip rule from all fwmark 0x102 lookup 102 --> ip route add table 102 default dev ppp102 ---> WAN2
หรือในกรณีให้วิ่งออกทั้ง 2 WAN
LAN ---> MARK 0x250 --> ip rule from all fwmark 0x250 lookup 250 --> ip route add table 250 default equalize nexthop dev ppp101 weight 1 nexthop dev ppp102 weight 1 ---> WAN1/WAN2
กรณีจาก WAN วิ่งเข้ามายัง LAN จะต้องทำการ MARK ว่ามาจาก WAN ไหน เวลาส่งข้อมูลกลับ จะได้วิ่งออกทาง WAN เดิม ถ้าหากออกไม่ตรง WAN เดิมจะทำให้ไม่สามารถเชื่อมต่อได้
ในการ Mark ว่ามาจาก WAN ไหนนั้น ก็ใช้คำสั่ง
iptables -A INPUT -t mangle -i ppp101 -j CONNMARK --set-mark 0x101
iptables -A INPUT -t mangle -i ppp102 -j CONNMARK --set-mark 0x102
การเดินทางของ Packet จะได้ว่า จะมองเป็น Connection ที่เกิดการเชื่อมต่อ
WAN1 ---> CONNMARK 0x101 --> LAN --> Client --> LAN --> state RELATED,ESTABLISHED restore CONNMARK 0x101 --> ip rule from all fwmark 0x101 lookup 101 --> ip route add table 101 default dev ppp101 ---> WAN1
WAN2 ---> CONNMARK 0x102 --> LAN --> Client --> LAN --> state RELATED,ESTABLISHED restore CONNMARK 0x102 --> ip rule from all fwmark 0x102 lookup 102 --> ip route add table 102 default dev ppp102 ---> WAN2
กรณีต่อไปคือ กรณีที่ WAN เชื่อมต่อมายัง Server มาทาง WAN ไหน ก็ต้องออกทาง WAN นั้นเช่นเดียวกัน
Server --> ip rule from IPWAN1 lookup 201 --> ip route add table 201 default dev ppp101 --> WAN1
Server --> ip rule from IPWAN2 lookup 202 --> ip route add table 202 default dev ppp102 --> WAN2
กรณีต่อไปก็คือ กรณีที่ จาก LAN วิ่งไปยัง Server แล้วให้ Server ทำการเชื่อมต่อภายนอก ในกรณีที่เป็น Web Proxy, Frox เป็นต้น
จะต้องทำการ Mark Output ด้วยคำสั่ง
iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark 0x102
การเดินทางของ Packet ก็จะได้ว่า
Server --> Output Mark 0x102 --> ip rule from all fwmark 0x102 lookup 102 --> ip route add table 102 default dev ppp102 ---> WAN2