講多無謂直接上情況
主機擁有兩張網卡 (A & B),A 負責內網請求數據,B 負責外部連接。
所有外網連接不能經過 A 網卡。
Linux 不能設定兩個預設網關。為解決這個情況這次會使用到 iproute2。
僅適用於 Debian
1. 配置 /etc/network/interfaces 負責外部連接的網卡設定為預設網關,另外一張網卡需要添加網關靜態路由 (注意 ip route),例子
- auto ens18
- iface ens18 inet static
- address 10.xx.xx.xx/24
- up ip addr add 10.xx.xx.xx/24 dev $IFACE
- up ip addr add 10.xx.xx.xx/24 dev $IFACE
- up ip addr add 10.xx.xx.xx/24 dev $IFACE
- up ip addr add 10.xx.xx.xx/24 dev $IFACE
- up ip addr add 10.xx.xx.xx/24 dev $IFACE
- up ip route add 10.xx.xx.xx/32 dev $IFACE
- auto ens19
- iface ens19 inet static
- address 11.xx.xx.xx/24
- gateway 11.xx.xx.xx
复制代码
2. 配置 /etc/iproute2/rt_tables,添加 (例子:15 WAN),數值名稱都可以隨意更改別太小
3. 這邊使用 /etc/rc.local 作為開機啟動程序,配置規則 (你也可以在 interfaces 裏面添加,個人喜好),例子
- # 配置 A 網卡網關
- /sbin/ip route add default via 10.xx.xx.xx table 15
- # 內網請求通過原路返回
- /sbin/ip rule add from 10.xx.xx.xx lookup 15
- /sbin/ip rule add from 10.xx.xx.xx lookup 15
- /sbin/ip rule add from 10.xx.xx.xx lookup 15
- /sbin/ip rule add from 10.xx.xx.xx lookup 15
- /sbin/ip rule add from 10.xx.xx.xx lookup 15
- /sbin/ip rule add from 10.xx.xx.xx lookup 15
- # 例外情況
- ip route add 48.255.255.0/24 via 10.xx.xx.xx
复制代码
完成後重啟,有錯請輕打 (