Как отключить IPv4-сопоставленный IPv6?


17

На моем Linux-компьютере установлены различные демоны, которые могут связываться со всеми интерфейсами с поддержкой IPv6 ::. Когда они это делают, Linux отправляет IPv4-запросы этому демону, например, как ::ffff:198.51.100.37.

Вместо этого я хотел бы, чтобы соединения IPv4 отклонялись, и только подключения IPv6 принимались, когда демон связывался с ним ::. Чтобы получать соединения IPv4, я хочу, чтобы демон явно связывался 0.0.0.0(а также ::).

Другими словами, я хочу запускать сервис исключительно на IPv6, а не на IPv4.

Есть ли способ сделать это?

Ответы:


22

Это контролируется net.ipv6.bindv6onlysysctl. Добавьте следующее /etc/sysctl.confи запустите, sudo sysctl -pчтобы изменения вступили в силу.

net.ipv6.bindv6only=1

Приложения могут также явно привязываться только к IPv6-адресу, а не изменять его глобально, например, nginx имеет ipv6onlyопцию для listenдирективы. Это соответствует IPV6_V6ONLYопции setsockopt().


К счастью, я обнаружил, что приложение (в данном случае OpenSSH) уже устанавливало IPV6_V6ONLY на сокете, когда я устанавливал, ListenAddress ::поэтому мне не нужно было прибегать к использованию sysctl (и перенастраивать все остальное).
Майкл Хэмптон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.