公司內網要求192.168.0.100以內的使用 10.0.0.1 網關上網(電信),其他IP使用 20.0.0.1 (網通)上網。
首先要在網關服務器上添加一個默認路由,當然這個指向是絕大多數的IP的出口網關。
ip route add default gw 20.0.0.1
之後通過 ip route 添加一個路由表
ip route add table 3 via 10.0.0.1 dev ethX (ethx是10.0.0.1所在的網卡,3 是路由表的編號)
之後添加 ip rule 規則
ip rule add fwmark 3 table 3 (fwmark 3是標記,table 3 是路由表3 上邊。 意思就是凡事標記了 3 的數據使用table3 路由表)
之後使用iptables給相應的數據打上標記
iptables -A PREROUTING -t mangle -i eth0 -s 192.168.0.1 -192.168.0.100 -j MARK --set-mark 3
因為mangle的處理是優先於 nat 和fiter表的,所以相依數據包到達之後先打上標記,之後在通過ip rule規則,對應的數據包使用相應的路由表進行路由,最後讀取路由表信息,將數據包送出網關。