作業系統:Ubuntu Budgie Remix 16.04
uname -a:Linux midgard 4.8.0-54-generic #57~16.04.1-Ubuntu SMP 5 月 24 日星期三 16:22:28 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
這看起來很基本,但我已經嘗試了很多東西,但這不起作用。以下是詳細資訊。
情況:我在住宅連接的連接埠 3791 上執行 sshd(為了避免簡單的網路掃描,試圖找到明顯的 ssh 守護程式)
sudo /usr/sbin/sshd -D -p 3791
問題:無連接
albion@midgard:~$ ssh {myIPv4OrIPv6} -p 3791 -v
OpenSSH_7.2p2 Ubuntu-4ubuntu2.2, OpenSSL 1.0.2g 1 Mar 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to {myIPv4OrIPv6} port 3791.
debug1: connect to address {myIPv4OrIPv6} port 3791: Connection timed out
ssh: connect to host {myIPv4OrIPv6} port 3791: Connection timed out
我已經驗證過的事:
- 我已經 nmap'ed localhost 並且能夠看到開放的端口
- 我已經 ssh 進入 localhost 並且能夠成功登入
- 檢查了 iptables('sudo iptables -L')是否有任何規則,但沒有任何規則。
- 也可以透過「sudo systemctl stop ufw」停用 ufw,以防萬一。
- 我的路由器配置為允許連接埠 3791 上的連接埠轉送到同一連接埠上的 LAN 位址 (192.168.0.2)。
- 我已經停用了路由器級防火牆的選項。
- 打電話給我的 ISP 只是想看看他們是否有任何想法,當然,他們沒有。
有人能想到有什麼值得檢查的嗎?一件奇怪的事情是,當我對 IPv4 執行 ping 操作時,我能夠執行 ping 操作並獲得回應,但當我對 IPv6 執行 ping 操作時卻沒有得到任何答案。這可能是無關的,但我想我會提到。
答案1
強調@steeldriver 的答案,因為我認為這是正確的。
顯然問題是我的路由器缺乏對 NAT 環回的支援: https://en.wikipedia.org/wiki/Network_address_translation#NAT_loopback
情況似乎如此,因為如果網路中的其他計算機使用內部 LAN IP(例如 192.168.0.2),我可以從它們連接到我的計算機也外部,如果他們使用我的 IPv6 IP。
所以解決方法是:
1) 從相同網路連線時,使用 LAN IP(或本機主機,如果是相同裝置) 2) 從外部連線時,請使用 IPv6 位址(如果您的 ISP 為您提供)或 IPv4 位址(前提是您設定了連接埠轉送規則)。
謝謝@steeldriver!