我已经将 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
我在配置守护进程时哪里出错了?
答案1
默认情况下,netstat
它将截断显示的 IP 地址,以便地址和端口号可以容纳 23 个字符。如果您希望显示完整地址,则需要提供-W
或--wide
标志以netstat
如果您使用此命令,它将显示正在sshd
监听您请求的地址:
sudo netstat -nplW | grep sshd
但是,您应该修复您分配的地址,因为它违反了 RFC 4193,并且很可能会在某个时候给您带来问题。RFC 4193 旨在防止地址冲突,但是如果您不遵循标准,它就不会防止冲突。根据规范分配的地址可能如下所示:fde8:ca75:a94b::ba88:e3ff:fefb:7bf0