內網有個機器有2個網絡卡,並且是不同的網段和閘道器。
其中的b伺服器有2個網絡卡。這個時候我們就只有預設閘道器為10.1.1.1 那檢視路由表就是如下
1234567
891011
這個時候我們可以發現,從1網段到1網段來回都沒有問題,2網段來回也沒有問題。但是從server a到server b的2網段是不通的。 因為你去到2網段後,server b的預設路由是10.1.1.1。[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
所以我們需要設定server b上,來自哪個網絡卡的路由就從哪個網絡卡出去。這樣server a到server b的2網段就沒有問題了。
首先新增2個route table
1234567
8910
然後再新增ip route和ip rule$ cat /etc/iproute2/rt_tables
## reserved values
#255 local
254 main
253default
252 lan1
251 lan2
0 unspec
1234567
這個時候我們再檢視路由表如下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
1234567
891011
1213
這個時候從表面上似乎解決了問題,從server a訪問server b的2網段也能正常返回,從server c訪問server b的1網段也可以正常返回。[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 b訪問server a的1網段的時候,一直網路狀態在syn的狀態。
上面tcpdump的結果我們發現是有很多的tcp重傳。
這個時候我們發現,上面的ip rule只是設定了,來自2網段的走lan2(又設定了src為自己), 來自1網段的走lan1(又設定了src 為自己的ip)。而沒有設定如果主動出去是怎麼樣的。
因此我們把上面的ip rule加了2條.
1234567
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
1234567
891011
1213
1415
1617
從上面這個例子中可以窺見,平時我們用netstat -rn這樣來檢視路由是沒有問題的,但是當出現自定義route table的時候,我們需要注意的一些東西,乙個是route table本身,還有是ip rule去定義使用哪個table。[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
一次網路故障的解決日誌
同學過來告訴我,電腦上不了網。症狀 在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...
對一次網路故障的分析
做網管 免不了遇到一些網路故障,有些網路故障可能找不出造成的原因,比如前段時間小王 遇到的一次網路故障 詳見 奇怪的網路故障 下文這個故障稱為第乙個故障 儘管問題解決了,但沒有找到故障原因,而今天說的這個網路故障 下文這個故障稱為第二個故障 很可能是第乙個故障造成的,因為第乙個故障解決後,第二個故障...