Я установил 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
или --wide
флаг netstat
Если вы воспользуетесь этой командой, она должна показать вам, что sshd
слушает адрес, который вы просили:
sudo netstat -nplW | grep sshd
Однако вам следует исправить назначенный вами адрес, поскольку он нарушает RFC 4193 и, вероятно, в какой-то момент вызовет у вас проблемы. RFC 4193 разработан для предотвращения конфликтов адресов, но если вы не следуете стандарту, он не предотвратит коллизии. Адрес, присвоенный согласно спецификации, может выглядеть так: fde8:ca75:a94b::ba88:e3ff:fefb:7bf0