Linux
為什麼在linux機器上,除了icmp以外的任何數據包都不通過,而在windows上卻正確通過
proxmox上有一個集群。在集群中有 vm - 配置路由器 (pfsense)。在我們的網中有Windows和Linux機器。
問題是:Windows 機器可以訪問網際網路,但 linux 機器沒有。
所有 Linux 機器的行為方式都相同,它發送請求並等待響應,但響應不會返回。我使用 wget、ssh 和 nslookup 檢查外部伺服器(8.8.8.8 範例)並 ping。一切都不起作用,除了 ping。ICMP 數據包正確通過,因此我冒昧地提出 TCP 的問題。但是對於所有 Windows 機器,一切正常。
我沒有為 linux 或 windows 創建特殊的過濾規則。
我打破了頭,但一直無法解決這個問題。
基線:
Our External IP: XX.XXX.XX.XX External Server IP: Y.YYY.Y.YYY (which was used to test)
因此,我進行了兩次測試:
測試 1. 來自 linux 機器的 wget:
從路由器擷取的數據包:
No. Time Source Destination Protocol Length Info 1 0.000000 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 174 GET / HTTP/1.1 2 21.798340 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 74 49656 > http [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=173036151 TSecr=0 WS=128 3 21.850793 Y.YYY.Y.YYY XX.XXX.XX.XX TCP 74 http > 49656 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 SACK_PERM=1 TSval=1304117522 TSecr=173036151 WS=1024 4 21.850849 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 66 49656 > http [ACK] Seq=1 Ack=1 Win=14720 Len=0 TSval=173036203 TSecr=1304117522 5 21.850868 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 174 GET / HTTP/1.1 6 22.101939 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 174 [TCP Retransmission] GET / HTTP/1.1 7 22.605999 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 174 [TCP Retransmission] GET / HTTP/1.1 8 23.613997 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 174 [TCP Retransmission] GET / HTTP/1.1 9 25.629983 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 174 [TCP Retransmission] GET / HTTP/1.1 10 28.931894 Y.YYY.Y.YYY XX.XXX.XX.XX TCP 78 http > 11956 [FIN, ACK] Seq=1 Ack=1 Win=6 Len=0 TSval=1304124610 TSecr=172983238 SLE=109 SRE=110 11 28.932001 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 66 [TCP Previous segment not captured] 11956 > http [ACK] Seq=110 Ack=2 Win=115 Len=0 TSval=173043285 TSecr=1304124610 12 29.661996 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 174 [TCP Retransmission] GET / HTTP/1.1 13 31.360021 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 174 [TCP Retransmission] GET / HTTP/1.1
從我的外部伺服器擷取的數據包:
No. Time Source Destination Protocol Length Info 1 0.000000 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 76 49656 > http [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=173036151 TSecr=0 WS=128 2 0.000059 Y.YYY.Y.YYY XX.XXX.XX.XX TCP 76 http > 49656 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 SACK_PERM=1 TSval=1304117522 TSecr=173036151 WS=1024 3 0.059242 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 68 49656 > http [ACK] Seq=1 Ack=1 Win=14720 Len=0 TSval=173036203 TSecr=1304117522 4 0.059247 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 176 GET / HTTP/1.1 5 0.303398 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 176 [TCP Retransmission] GET / HTTP/1.1 6 0.809767 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 176 [TCP Retransmission] GET / HTTP/1.1 7 1.815634 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 176 [TCP Retransmission] GET / HTTP/1.1 8 3.836576 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 176 [TCP Retransmission] GET / HTTP/1.1 9 7.088059 Y.YYY.Y.YYY XX.XXX.XX.XX TCP 80 http > 11956 [FIN, ACK] Seq=1 Ack=1 Win=6 Len=0 TSval=1304124610 TSecr=172983238 SLE=109 SRE=110 10 7.134903 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 68 11956 > http [ACK] Seq=110 Ack=2 Win=115 Len=0 TSval=173043285 TSecr=1304124610 11 7.864582 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 176 [TCP Retransmission] GET / HTTP/1.1 12 9.564772 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 176 [TCP Retransmission] GET / HTTP/1.1
測試 2. wget 從 windows 機器:
從路由器擷取的數據包:
No. Time Source Destination Protocol Length Info 1 0.000000 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 66 ampr-info > http [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1 2 0.053994 Y.YYY.Y.YYY XX.XXX.XX.XX TCP 66 http > ampr-info [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 SACK_PERM=1 WS=1024 3 0.054129 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 54 ampr-info > http [ACK] Seq=1 Ack=1 Win=65536 Len=0 4 0.054450 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 150 GET / HTTP/1.0 5 0.110034 Y.YYY.Y.YYY XX.XXX.XX.XX TCP 60 http > ampr-info [ACK] Seq=1 Ack=97 Win=6144 Len=0 6 0.113011 Y.YYY.Y.YYY XX.XXX.XX.XX HTTP 931 HTTP/1.1 200 OK (text/html) 7 0.115990 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 54 ampr-info > http [RST, ACK] Seq=97 Ack=878 Win=0 Len=0
從我的外部伺服器擷取的數據包:
No. Time Source Destination Protocol Length Info 1 0.000000 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 66 ampr-info > http [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1 2 0.053994 Y.YYY.Y.YYY XX.XXX.XX.XX TCP 66 http > ampr-info [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 SACK_PERM=1 WS=1024 3 0.054129 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 54 ampr-info > http [ACK] Seq=1 Ack=1 Win=65536 Len=0 4 0.054450 XX.XXX.XX.XX Y.YYY.Y.YYY HTTP 150 GET / HTTP/1.0 5 0.110034 Y.YYY.Y.YYY XX.XXX.XX.XX TCP 60 http > ampr-info [ACK] Seq=1 Ack=97 Win=6144 Len=0 6 0.113011 Y.YYY.Y.YYY XX.XXX.XX.XX HTTP 931 HTTP/1.1 200 OK (text/html) 7 0.115990 XX.XXX.XX.XX Y.YYY.Y.YYY TCP 54 ampr-info > http [RST, ACK] Seq=97 Ack=878 Win=0 Len=0
請幫幫我,有什麼想法嗎?
我過去曾看到過類似的問題。原來是由於校驗和解除安裝的問題。虛擬化客戶作業系統會將校驗和解除安裝到虛擬化主機,而虛擬化主機應該將其解除安裝到物理網路介面。
但最終校驗和從未計算過,數據包在沒有有效校驗和的情況下通過網路發送。在連接的接收端,由於校驗和無效,數據包將被丟棄。
在虛擬化主機和來賓上,您可以嘗試查找具有以下任何名稱的選項並嘗試將其關閉:
- UDP校驗和解除安裝
- TCP 校驗和解除安裝
- UDP 分片解除安裝
- TCP 分段解除安裝