Jak wyłączyć IPv6 odwzorowany na IPv4?

17

Na moim Linux-ie mam różne demony, które mogą się łączyć ze wszystkimi interfejsami obsługującymi IPv6 ::. Kiedy to robią, Linux wysyła żądania IPv4 do tego demona zamapowanego na przykład jako ::ffff:198.51.100.37.

Zamiast tego chciałbym, aby połączenia IPv4 były odrzucane i tylko połączenia IPv6 są akceptowane, gdy demon się łączy ::. Aby odbierać połączenia IPv4, chcę, aby demon musiał jawnie powiązać się z 0.0.0.0(jak również ::).

Innymi słowy, chcę uruchomić usługę wyłącznie na IPv6, a nie na IPv4.

Czy istnieje sposób na osiągnięcie tego?

Michael Hampton
źródło

Odpowiedzi:

22

Jest to kontrolowane przez net.ipv6.bindv6onlysysctl. Dodaj następujące elementy /etc/sysctl.confi uruchom, sudo sysctl -paby wprowadzić zmianę.

net.ipv6.bindv6only=1

Aplikacje mogą także jawnie powiązać tylko adres IPv6 zamiast zmieniać go globalnie, na przykład nginx ma ipv6onlyopcję listendyrektywy. Odpowiada to IPV6_V6ONLYopcji setsockopt().

mgorven
źródło
Na szczęście odkryłem, że aplikacja (w tym przypadku OpenSSH) już ustawiała IPV6_V6ONLY na gnieździe, kiedy ustawiłem, ListenAddress ::więc nie musiałem uciekać się do korzystania z sysctl (i rekonfiguracji wszystkiego innego).
Michael Hampton