乙個雙網絡卡導致的網路故障

2021-08-10 19:34:01 字數 4290 閱讀 2749

內網有個機器有2個網絡卡,並且是不同的網段和閘道器。

其中的b伺服器有2個網絡卡。這個時候我們就只有預設閘道器為10.1.1.1 那檢視路由表就是如下

123

4567

891011

[root@localhost ~]# ip route show table all

10.1.1.0/

24 dev eth0 proto kernel scope link src 10.1.1.247

10.1.2.0/

24 dev eth1 proto kernel scope link src 10.1.2.239

169.254.0.0/

16 dev eth0 scope link metric 1002

169.254.0.0/

16 dev eth1 scope link metric 1003

default via 10.1.1.1 dev eth0

[root@localhost ~]# ip rule show

0: from all lookup local

32766

: from all lookup main

32767

: from all lookup default

這個時候我們可以發現,從1網段到1網段來回都沒有問題,2網段來回也沒有問題。但是從server a到server b的2網段是不通的。 因為你去到2網段後,server b的預設路由是10.1.1.1。

所以我們需要設定server b上,來自哪個網絡卡的路由就從哪個網絡卡出去。這樣server a到server b的2網段就沒有問題了。

首先新增2個route table

123

4567

8910

$ cat /etc/iproute2/rt_tables

## reserved values

#255 local

254 main

253default

252 lan1

251 lan2

0 unspec

然後再新增ip route和ip rule

123

4567

ip route flush table lan1

ip route add default via 10.1.1.1 dev eth0 src 10.1.1.247 table lan1

ip rule add from 10.1.1.247 table lan1

ip route flush table lan2

ip route add default via 10.1.2.1 dev eth1 src 10.1.2.239 table lan2

ip rule add from 10.1.2.239 table lan2

這個時候我們再檢視路由表如下

123

4567

891011

1213

[root@localhost ~]# ip route show all

10.1.1.0/

24 dev eth0 proto kernel scope link src 10.1.1.247

10.1.2.0/

24 dev eth1 proto kernel scope link src 10.1.2.239

169.254.0.0/

16 dev eth0 scope link metric 1002

169.254.0.0/

16 dev eth1 scope link metric 1003

default via 10.1.1.1 dev eth0

[root@localhost ~]# ip rule show

0: from all lookup local

32764

: from 10.1.2.239 lookup lan2

32765

: from 10.1.1.247 lookup lan1

32766

: from all lookup main

32767

: from all lookup default

這個時候從表面上似乎解決了問題,從server a訪問server b的2網段也能正常返回,從server c訪問server b的1網段也可以正常返回。

但是我們發現,這個時候從server b訪問server a的1網段的時候,一直網路狀態在syn的狀態。

上面tcpdump的結果我們發現是有很多的tcp重傳。

這個時候我們發現,上面的ip rule只是設定了,來自2網段的走lan2(又設定了src為自己), 來自1網段的走lan1(又設定了src 為自己的ip)。而沒有設定如果主動出去是怎麼樣的。

因此我們把上面的ip rule加了2條.

123

4567

89

ip route flush table lan1

ip route add default via 10.1.1.1 dev eth0 src 10.1.1.247 table lan1

ip rule add from 10.1.1.247 table lan1

ip rule add from 10.1.1.247 to 10.1.1.0/

24 table main

ip route flush table lan2

ip route add default via 10.1.2.1 dev eth1 src 10.1.2.239 table lan2

ip rule add from 10.1.2.239 table lan2

ip rule add from 10.1.2.239 to 10.1.2.0/

24 table main

然後我們檢視路由表如下:

123

4567

891011

1213

1415

1617

[root@localhost ~]# ip route show table all

default via 10.1.1.1 dev eth0 table lan1 src 10.1.1.247

10.1.1.0/

24 dev eth0 proto kernel scope link src 10.1.1.247

10.1.2.0/

24 dev eth1 proto kernel scope link src 10.1.2.239

169.254.0.0/

16 dev eth0 scope link metric 1002

169.254.0.0/

16 dev eth1 scope link metric 1003

default via 10.1.1.1 dev eth0

default via 10.1.2.1 dev eth1 table lan2 src 10.1.2.239

[root@localhost ~]# ip rule show

0: from all lookup local

32762

: from 10.1.2.239 to 10.1.2.0/

24 lookup main

32763

: from 10.1.2.239 lookup lan2

32764

: from 10.1.1.247 to 10.1.1.0/

24 lookup main

32765

: from 10.1.1.247 lookup lan1

32766

: from all lookup main

32767

: from all lookup default

從上面這個例子中可以窺見,平時我們用netstat -rn這樣來檢視路由是沒有問題的,但是當出現自定義route table的時候,我們需要注意的一些東西,乙個是route table本身,還有是ip rule去定義使用哪個table。

一次網路故障的解決日誌

同學過來告訴我,電腦上不了網。症狀 在vmare中,安裝了redhat 9,將redhat 9的上網模式設定為bridge模式,redhat 9的ip是10.60.38.253,windows宿主機ip是10.60.38.250,現在,redhat 9能ping能windows宿主機,但就是上不了網...

測試網路故障的一般方法

網路有故障,一般先進行硬體排除,除此之外就是通過windows的命令來檢測。ok,正常!注釋 t 可以讓ping命令持續進行。l 可以加包的大小,比如32位元組,32k等 無顯示回應,說明32k的包過去,已經不行了,可能是網路阻塞了。還有個有用的命令pathping,你可以據此統計詳細的情況。pat...

對一次網路故障的分析

做網管 免不了遇到一些網路故障,有些網路故障可能找不出造成的原因,比如前段時間小王 遇到的一次網路故障 詳見 奇怪的網路故障 下文這個故障稱為第乙個故障 儘管問題解決了,但沒有找到故障原因,而今天說的這個網路故障 下文這個故障稱為第二個故障 很可能是第乙個故障造成的,因為第乙個故障解決後,第二個故障...