關於使用多網卡能夠同一個對外網域同一個Gateway,多網卡能夠哪裡進就哪裡出問題
我的環境如下:
該 Linux 共3網卡,分別為
ETH0 對外 真實 IP : 61.229.60.114 GW: 61.229.60.254
ETH1 對外 真實 IP : 61.229.60.115 GW: 61.229.60.254
ETH2 對內 虛擬 IP : 192.168.1.254
且不設定 Default Gateway,採用 iproute2 去管理設定路由
使用以下指令
ip route replace default via 61.229.60.254 dev eth0 table 114
ip route replace default via 61.229.60.254 dev eth1 table 115
ip rule add pref 10 from 61.229.60.114 table 114
ip rule add pref 20 from 61.229.60.115 table 115
ip route flush cache
查一下 route 資料
# ip route ls
61.229.60.0/24 dev eth0 proto kernel scope link src 61.229.60.114
61.229.60.0/24 dev eth1 proto kernel scope link src 61.229.60.115
192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.254
169.254.0.0/16 dev eth1 scope link
# ip route ls table 114
default via 61.229.60.254 dev eth0
# ip route ls table 115
default via 61.229.60.254 dev eth1
# ip rule ls
0: from all lookup 255
10: from 61.229.60.114 lookup 114
20: from 61.229.60.115 lookup 115
32766: from all lookup main
32767: from all lookup default
結果:
可以達到外部連接 61.229.60.114 和 61.229.60.115 都可正常
外部連接 ETH0: 61.229.60.114 ,正常,進入時走到 ETH0 上,出去時經由 table 114 然後出去
外部連接 ETH1: 61.229.60.115 ,正常,進入時走到 ETH1 上,出去時經由 table 115 然後出去
問題:
1.但我發現,內部主機自己無法連外,因該是沒有設定 Default Gateway 的關係吧
我在該主機上 ping 168.95.1.1 結果得下:
# ping 168.95.1.1
connect: Network is unreachable
這問題不知道該如何解決?
2.如果我要將外部連接到 61.229.60.115 ETH1 上都轉到內部的 192.168.1.251 伺服器上
以上 route 及 rule 不變,加入以下 iptables 指令
/bin/echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
iptables -F -t mangle
iptables -X -t mangle
iptables -Z -t mangle
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -A PREROUTING -i eth2 -j DNAT --to-destination 192.168.1.251
結果 外部連接
http://61.229.60.115/ 時不會轉到內部的 192.168.1.251 上
問題似乎跟第一個問題一樣 外部連接 61.229.60.115 時確實可以可以轉到內部 192.168.1.251 上
但當內部 192.168.1.251 反回封包時到,就出不去無法送回到外部連接者的地方
3.如果在該 Linux 伺服器上加上 Default Gateway 的話
如下指令:
ip route add default via 61.229.60.254 dev eth0
這樣問題1和問題2就都沒問題,但是這樣連接 61.229.60.115 ETH1, DNAT 到 192.168.1.251 時
送出就都由 ETH0 送出了 並不後經由 route table 115 從 ETH1 出去
請問各位前輩,再不設定 Default Gateway 的情況下,問題1和問題2要如何解決呢?
謝謝!