我已将 sshd 设置为绑定到特定的 IPv6 地址,并在我的sshd_config
ListenAddress fd00::ba88:e3ff:fefb:7bf0
经过测试,我注意到我根本无法再通过 IPv6 进行连接。检查netstat
表明,由于某种原因,地址的最后 16 位被忽略,并且绑定到一个不存在的地址。
$ sudo netstat -npl | grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4944/sshd
tcp6 0 0 fd00::ba88:e3ff:fefb:22 :::* LISTEN 4944/sshd
检查ifconfig
产生这些 IPv6 地址
$ ifconfig | grep inet6
inet6 addr: fd00::ba88:e3ff:fefb:7bf0/64 Scope:Global
inet6 addr: fe80::ba88:e3ff:fefb:7bf0/64 Scope:Link
inet6 addr: ::1/128 Scope:Host
我在配置守护程序时哪里出错了?
默认情况下
netstat
会截断它显示的 IP 地址,以便地址和端口号适合 23 个字符。如果要显示完整地址,则需要提供-W
or--wide
标志netstat
如果你使用这个命令,它应该告诉你
sshd
正在监听你请求的地址:但是,您应该修复的是您分配的地址,因为它违反了 RFC 4193,这可能会在某些时候给您带来问题。RFC 4193 旨在防止地址冲突,但是当您不遵循标准时,它不会防止冲突。根据规范分配的地址可能如下所示:
fde8:ca75:a94b::ba88:e3ff:fefb:7bf0