實(shí)戰(zhàn)案例:客戶很生氣!Linux 服務(wù)器做了端口映射,可 WAN 側(cè)的 PC 總訪問不了?
本期分享的案例是有線網(wǎng)絡(luò)的相關(guān)問題。
【背景介紹】
近日某工業(yè)廠區(qū)上了一臺LINUX服務(wù)器,現(xiàn)場的方案需要將該服務(wù)器接入到某W路由的LAN,通過端口映射的方式,實(shí)現(xiàn)與WAN側(cè)設(shè)備的通信。卻發(fā)現(xiàn)做了以后,PC無法通過WAN IP+外部端口訪問到LAN側(cè)的LINUX服務(wù)器。
拓?fù)浜喕缦拢ㄍ祩€(gè)懶,手畫):

【相關(guān)參數(shù)】
- 路由WAN口IP:192.168.30.2/24
- 路由WAN側(cè)PC:192.168.30.3/24
- 路由LAN口IP:192.168.11.1/24
- 路由LAN側(cè)LINUX服務(wù)器:192.168.11.11/24(開放端口TCP 22和4000)
路由器的端口映射配置:

內(nèi)部端口和外部端口映射的都一樣。所以,這種端口映射不成功的問題,我們該怎么排查呢?來,跟著我的思路一步步走~
【排查思路】
確認(rèn)路由器的端口映射是否配置正確;
- 確認(rèn)內(nèi)部主機(jī)的網(wǎng)絡(luò)參數(shù)是否正確;
- 確認(rèn)內(nèi)部主機(jī)端口是否開放;
- 確認(rèn)內(nèi)部主機(jī)能否通WAN口的PC;
- 對比LAN側(cè)放置其它主機(jī)開放端口,看看是否也映射失敗。
【排查分析】
第一步:確認(rèn)路由器端口映射配置和內(nèi)部主機(jī)網(wǎng)絡(luò)參數(shù)設(shè)置
路由端口映射配置如下(內(nèi)/外端口22—>22、4000—>4000),配置無問題:

確認(rèn)LINUX服務(wù)器的網(wǎng)絡(luò)參數(shù)配置:

IP、掩碼、網(wǎng)關(guān)均正常。
第二步:確認(rèn)LINUX服務(wù)器服務(wù)端口是否啟用
相關(guān)命令:
netstat -tuln# 查看所有監(jiān)聽端口(包括 TCP/UDP,需 root 權(quán)限)

能看到,主機(jī)的內(nèi)部TCP 22和4000端口服務(wù)正常開放的。
第三步:確認(rèn)連通性,內(nèi)部LINUX主機(jī)能否ping通WAN側(cè)設(shè)備
在LINUX服務(wù)器上主動ping WAN側(cè)的PC(192.168.30.3):

結(jié)果發(fā)現(xiàn),是無法ping通的!意味著WAN側(cè)PC向內(nèi)部設(shè)備發(fā)起TCP SYN連接后,內(nèi)部服務(wù)器回復(fù)出現(xiàn)了問題。但是之前已經(jīng)配置了網(wǎng)關(guān)為192.168.11.1,會不會是網(wǎng)關(guān)不生效呢?怎么NAT出去了不通WAN側(cè)設(shè)備?
第四步:查看LINUX主機(jī)路由表
相關(guān)命令route -n:

可以明確的看到有兩個(gè)“缺省路由”,而且走192.168.22.1這個(gè)接口的躍點(diǎn)100比走192.168.11.1這個(gè)接口 更小,所以,LINUX服務(wù)器訪問192.168.30.0/24網(wǎng)段走的是22.1這個(gè)接口(enp7s0)出去了!而不是我們需要的要走192.168.11.1這個(gè)接口。
在設(shè)置界面確實(shí)也能看到兩個(gè)接口同時(shí)啟用:

綜合分析:
所以問題水落石出,路由器端口映射是成功了。但是WAN側(cè)30網(wǎng)段的PC與LAN側(cè)LINUX建立連接的時(shí)候,LINUX響應(yīng)的數(shù)據(jù)從不符合預(yù)期的接口22.1(enp7s0)出去了,所以連接失敗。

【原理及解決方案】
問題原因:LINUX有多個(gè)接口,實(shí)際和路由器WAN側(cè)網(wǎng)段通信的接口不是符合預(yù)期的內(nèi)網(wǎng)接口。
解決方案:做靜態(tài)路由,訪問WAN側(cè)30網(wǎng)段的指定走內(nèi)網(wǎng)接口網(wǎng)關(guān)即可:
ip route add 192.168.30.0/24 via 192.168.11.1

這樣就能保證和WAN側(cè)通信的接口是內(nèi)網(wǎng)192.168.11.11/24這個(gè)接口了,端口映射連接成功。

















