我无法通过 IPv6 使用 OpenSSH 设置我的 Ubuntu 服务器 (16.04 LTS)。该服务器在 VirtualBox 机器内运行,其网络接口设置为“网络桥”(如果这是正确的德语翻译)。
我可以使用家庭网络内的 IPv4 通过 ssh 进入该盒子,即以下操作没有任何问题:
ssh [email protected]
但是,我的 ISP(Vodafone/Kabel Deutschland)显然正在将其客户迁移到 IPv6,因此在他们发送的路由器/调制解调器单元(CH7466CE 无线语音网关固件版本 4.50.18.16)上禁用了 IPv4 及其所有功能,包括端口转发。
因此,我尝试使用 IPv6 来启动 ssh,但失败了!任何从我自己的网络外部连接到该盒子的尝试都失败了,如下所示:
ssh -6 [email protected]
导致以下错误消息:
ssh: connect to host xxxx.dynv6.net port 22: No route to host
尽管我能够 ping 该盒子,但情况仍然如此:
--- xxxx.dynv6.net ping6 statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.506/0.620/0.684/0.081 ms
现在,据我所知,这很可能是路由/网络错误,因为 IPv6 地址是到盒子的直接路径,因此完全超越了路由器。到目前为止,我说得对吗?
凭借我(可能低于)平均水平的技能,我尝试通过在 ip6tables 中打开端口 22 来解决这个问题——但同样:没有成功!
如果有帮助的话,这里还有一些信息:
$ sudo lsof -i |grep ssh
sshd 2385 root 3u IPv6 19777 0t0 TCP *:ssh (LISTEN)
sshd 2385 root 4u IPv4 19785 0t0 TCP *:ssh (LISTEN)
sshd 2796 root 3u IPv4 20851 0t0 TCP 192.168.0.14:ssh->192.168.0.8:62519 (ESTABLISHED)
sshd 2874 user1 3u IPv4 20851 0t0 TCP 192.168.0.14:ssh->192.168.0.8:62519 (ESTABLISHED)
$ sudo netstat -l --numeric-ports | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
unix 2 [ ACC ] STREAM LISTENING 20622 private/verify
$ sudo ip6tables -L -v -n
Chain INPUT (policy ACCEPT 116 packets, 39020 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp enp0s3 * ::/0 ::/0 tcp dpt:22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp enp0s3 * ::/0 ::/0 tcp dpt:22
Chain OUTPUT (policy ACCEPT 108 packets, 37676 bytes)
pkts bytes target prot opt in out source destination
我希望这些信息足够有用。我今天花了很多时间试图解决这个问题,但显然靠我自己是无法解决的。希望你们能帮忙!
如果您需要任何其他/更多信息,请告诉我。
JW
答案1
问题(有点)解决了!
感谢@grawity,我调查了 traceroute6 的输出并发现我使用的 IPv6 不起作用。
使用时
ip a show enp0s3
我有两个 IPv6 地址,从我在互联网上看到的信息来看,第一个地址是从我系统的 mac 地址派生出来的,第二个地址则比较匿名。但不知为何后者似乎对我不起作用。我不知道为什么——而且因为我不需要在网上分享它,所以我真的不太在意。
目前我的 DynDns IPv6 SSH 设置运行良好。谢谢 @grawity!