Як відключити 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.