tcp,從哪裡開始找?我可以從 LAN 存取伺服器,但從 WAN 取得連線重置

tcp,從哪裡開始找?我可以從 LAN 存取伺服器,但從 WAN 取得連線重置

我有在 Apache 下運行的工作網站。可以透過 LAN 完全存取它們。

我還將伺服器的一部分設定為可從 WAN 存取。這一開始是有效的(毫無疑問,這是初學者的運氣),但現在ERR_CONNECTION_RESET總是返回。我已經探索了所有我能想到的途徑,甚至重新安裝了 Apache,但現在已經沒有主意了。

連接埠轉送已正確設置,並使用 進行驗證nmap。本機和遠端掃描都顯示我的連接埠已開啟。

我已經仔細檢查了我的ufw規則並為其啟用了日誌記錄。日誌顯示[UFW ALLOW]本地端和遠端傳入連線的資料包。

我已經從客戶端運行 Wireshark 捕獲。在(失敗的)遠端連線場景中僅交換三個資料包:

1   0.000000000 [local_IP]  [remote_IP]   TCP 66  49527→1123 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
2   0.058425000 [remote_IP]   [local_IP]  TCP 66  1123→49527 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1320 SACK_PERM=1 WS=128
3   0.058504000 [local_IP]  [remote_IP]   TCP 54  49527→1123 [ACK] Seq=1 Ack=1 Win=16384 Len=0

顯著的差異是,當從 LAN 成功連接時,第二個資料包將具有MSS=1460,而第三個資料包將具有Win=65536。發送時,第四個資料包包含GET以我的 LAN IP 作為來源的 HTTP 命令,依此類推。

如果我tcpdump在伺服器端使用,我會在有問題的(WAN 端)場景中得到以下資訊(connection reset收到後呼叫中斷):

$ sudo tcpdump -n -tttt -i eth0 port 1123
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
2015-07-14 06:38:45.291695 IP 92.95.32.112.49361 > 192.168.1.10.1123: Flags [S], seq 3726787794, win 8192, options [mss 1320,nop,wscale 8,nop,nop,sackOK], length 0
2015-07-14 06:38:45.291735 IP 192.168.1.10.1123 > 92.95.32.112.49361: Flags [S.], seq 2812896430, ack 3726787795, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
2015-07-14 06:38:45.351536 IP 92.95.32.112.49361 > 192.168.1.10.1123: Flags [.], ack 1, win 64, length 0
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel

當本地連接時,它看起來像這樣;請注意第三個資料包上不同的視窗大小:

$ sudo tcpdump -n -tttt -i eth0 port 1123
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
2015-07-14 06:41:33.112315 IP 192.168.1.50.49379 > 192.168.1.10.1123: Flags [S], seq 3570261874, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
2015-07-14 06:41:33.112357 IP 192.168.1.10.1123 > 192.168.1.50.49379: Flags [S.], seq 3490289174, ack 3570261875, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
2015-07-14 06:41:33.512742 IP 192.168.1.50.49379 > 192.168.1.10.1123: Flags [.], ack 1, win 256, length 0
2015-07-14 06:41:33.514046 IP 192.168.1.50.49379 > 192.168.1.10.1123: Flags [P.], seq 1:433, ack 1, win 256, length 432
2015-07-14 06:41:33.514079 IP 192.168.1.10.1123 > 192.168.1.50.49379: Flags [.], ack 433, win 237, length 0
2015-07-14 06:41:33.554794 IP 192.168.1.10.1123 > 192.168.1.50.49379: Flags [.], seq 1:1461, ack 433, win 237, length 1460
2015-07-14 06:41:33.554818 IP 192.168.1.10.1123 > 192.168.1.50.49379: Flags [P.], seq 1461:2768, ack 433, win 237, length 1307
[...]^C
919 packets captured
919 packets received by filter
0 packets dropped by kernel

我注意到該服務顯然只在tcp6我的 ssh 伺服器上運行;這可能是原因嗎?更新:顯然不像 did force 那樣Listen 0.0.0.0:1123/etc/apache2/ports.conf但從tcpWAN 端連接時問題仍然存在。

$ sudo netstat -plunt | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1510/sshd       
tcp6       0      0 :::22                   :::*                    LISTEN      1510/sshd       
$ sudo netstat -plunt | grep apache2
tcp6       0      0 :::1123                 :::*                    LISTEN      3290/apache2    

我無法/var/log/apache2使用以下命令捕獲有關這些事件的任何內容:LogLevel infoLogLevel debugLogLevel trace8以及適當的服務重新啟動)。在所有情況下,資料夾中的所有檔案在連接失敗之前和之後都保留相同的日期戳記。

我可能是錯的,但由於 Apache 提供的資訊太少,我現在想知道這是否可能與外部連結的 SQL 或 PHP 問題有關,但實際上我對此沒有任何經驗。這裡討論的服務是 ownCloud。

關於如何進一步解決此問題並找出可能出現問題的任何想法?

答案1

首先檢查連接埠是否運作正常。您可以使用連接埠掃描工具來執行此操作,例如。如果有問題,請再次檢查您的IP,因為您可能有動態IP,並且會在一段時間內發生變化(如果情況良好或測試結果良好,則可能在家中設定動態IP。從您的網路連線中為自行設定一個靜態IP,例如這裡。並且您可以防止某人獲得與您在數據機設定上保留此 IP 相同的 IP。保留IP 非常簡單,在調製解調器下找到dhcp 設置,讓您的調製解調器位於192.168.1.1,您為自己設定192.168.1.2,在這種情況下,在dhcp 設定中鍵入192.168.1.3 作為起點,如果這些都不起作用,請聯繫您的ISP在一些國家,有些端口可能不被允許開放,例如我半年前在塞浦路斯,那裡就禁止開放80端口。

- 更新 -

據我了解,作為另一台電腦的客戶端,您可以連接,但作為伺服器,當您嘗試連接時無法看到該頁面。這是一個主要問題,除非您不使用代理路由器,否則無法將從自身發出的請求路由到自身,嘗試使用網路代理,在這種情況下可能會起作用。您對此無能為力,因為伺服器無法在沒有代理的情況下連接到您自己的網絡

相關內容