Назад | Перейти на главную страницу

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

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

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

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

Есть ли способ добиться этого?

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

net.ipv6.bindv6only=1

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