作者 主題: 關於使用多網卡能夠同一個對外網域同一個Gateway,能夠哪裡進就哪裡出問題  (閱讀 3340 次)

0 會員 與 1 訪客 正在閱讀本文。

bruce_wu

  • 憂鬱的高中生
  • ***
  • 文章數: 91
    • 檢視個人資料
關於使用多網卡能夠同一個對外網域同一個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要如何解決呢?
  謝謝!

JackYang78

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 2672
    • 檢視個人資料
看了許多這樣的例子.不過咱家心理在想,為何要如做?

對網路管理者來說.. 買一顆 Loacl Router 來做就可以解決了.(當然玩票性質除外.... 想起咱家年輕時的幹勁)

大概可以給一個提示吧..

1. 將 Linux Server 當 Router 來看.... ( 要不要跑一個 Routed 這種 Routing 的程式看看 )
2. 跑了 Routed , 也要可以將資料來分流... ( ex. policy route )

So,應該是要將 Linux Server 當 Route 跑 NAT 的功能,還要可以分流資料...
Networking & Communication Security SE

bruce_wu

  • 憂鬱的高中生
  • ***
  • 文章數: 91
    • 檢視個人資料
會這樣做的原因如下:
1.將網路卡分開減低各網卡的工作負載
2.IP頻寬用量統計分開

gwstudy

  • 活潑的大學生
  • ***
  • 文章數: 205
    • 檢視個人資料
關於使用多網卡能夠同一個對外網域同一個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


eth0, eth1 應該只留一個就可以了吧,看起來這兩個 ip 是同一個網段不是嗎?網卡的頻寬比比 ISP 還大,不需要為了分攤網卡的工作負載而這樣用。

JackYang78

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 2672
    • 檢視個人資料
關於使用多網卡能夠同一個對外網域同一個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


eth0, eth1 應該只留一個就可以了吧,看起來這兩個 ip 是同一個網段不是嗎?網卡的頻寬比比 ISP 還大,不需要為了分攤網卡的工作負載而這樣用。


發文樓主,未來或許會接兩個不同的 ISP !!
Networking & Communication Security SE

bruce_wu

  • 憂鬱的高中生
  • ***
  • 文章數: 91
    • 檢視個人資料
我有測試過了接兩個不同的ISP的或不同網段的不同gw的
這樣的架構是可以的
但現在問題出在同一個網段同GW上,這樣的架構就出現如上所訴的問題...