sshd 绑定到错误的 IPv6 地址

sshd 绑定到错误的 IPv6 地址

我已经将 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

相关内容