首先:ipv4 运行良好。
因此我得到了以下设置:(服务器是作为虚拟机运行的 Arch Linux 操作系统)
编辑 添加了规则
ACCEPT tcp ::/0 ::/0 tcp dpt:22
它接受端口 22 上的任何连接(以确保它不是 IP 故障),但效果并不好。因此,我执行的命令有问题,ssh ...
或者 ipv6 防火墙表不起作用:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all ::/0 ::/0 ctstate RELATED,ESTABLISHED
ACCEPT all ::/0 ::/0
DROP all ::/0 ::/0 ctstate INVALID
UDP udp ::/0 ::/0 ctstate NEW
TCP tcp ::/0 ::/0 tcp flags:0x17/0x02 ctstate NEW
REJECT tcp ::/0 ::/0 reject-with tcp-reset
REJECT all ::/0 ::/0 reject-with icmp6-adm-prohibited
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain TCP (1 references)
target prot opt source destination
ACCEPT tcp ::/0 ::/0 tcp dpt:22
Chain UDP (1 references)
target prot opt source destination
删除 ip6table 后它终于可以正常工作了:D 所以我需要弄清楚哪里出了问题:)
答案1
鉴于您没有过多地详细介绍您的设置,这里有几点提示:
验证...
- 您已为 IPv6 启用 ip_forward:
sysctl net.ipv6.conf.all.forwarding=1
- 您没有处理链路本地地址(fe80::/10 前缀)
- 您可以从运行虚拟机的主机通过 IPv6 访问该虚拟机。
- 您首先在禁用防火墙的情况下测试 IPv6 连接(
ip6tables -F
),然后在其正常工作时添加规则。
答案2
我的 Edgerouter X 也遇到了同样的问题。我尝试使用 TCP_UDP 协议(而不仅仅是 TCP)设置 ssh 端口,问题解决了。TCP 与 IPv4 配合良好。
答案3
这是针对 hetzner IPv6 服务器的,可能不是针对 OP 的问题,但由于问题标题匹配,因此该文章出现在网络搜索中。
參考文獻:https://docs.hetzner.com/cloud/servers/getting-started/connecting-to-the-server/
如果你的 hetzner 仪表板中显示的 IPv6 地址是 2a01:2001:db8:1234::/64,那么我们 ssh 的方式是替换/64
为1
完整命令包括指定的特定私有 ssh 密钥文件并告诉系统不要尝试其他 ssh 密钥:
ssh -6 -i ~/.ssh/keys/hetzner-key -o IdentitiesOnly=yes root@2a01:2001:db8:1234::1
如果您有与 root 不同的用户,则root
用该用户名替换上述内容。
这在我的 Linux Mint 21.1 Vera OS 上开箱即用,无需更改任何设置。