Wie deaktiviere ich IPv4-zugeordnetes IPv6?

17

Auf meiner Linux-Box habe ich verschiedene Daemons, die sich an alle IPv6-fähigen Schnittstellen binden lassen ::. Wenn sie dies tun, sendet Linux IPv4-Anforderungen an diesen Dämon, die beispielsweise wie folgt zugeordnet sind ::ffff:198.51.100.37.

Ich möchte stattdessen, dass IPv4-Verbindungen abgelehnt und nur IPv6-Verbindungen akzeptiert werden, wenn ein Dämon eine Verbindung herstellt ::. Um IPv4-Verbindungen zu erhalten, muss sich der Dämon explizit an 0.0.0.0(sowie ::) binden .

Mit anderen Worten, ich möchte einen Dienst ausschließlich auf IPv6 und nicht auf IPv4 ausführen.

Gibt es eine Möglichkeit, dies zu erreichen?

Michael Hampton
quelle

Antworten:

22

Dies wird vom net.ipv6.bindv6onlysysctl gesteuert . Fügen Sie Folgendes hinzu /etc/sysctl.confund führen Sie es aus sudo sysctl -p, um die Änderung zu bewirken.

net.ipv6.bindv6only=1

Anwendungen können auch explizit nur an die IPv6-Adresse binden, anstatt dies global zu ändern. Beispielsweise hat nginx die ipv6onlyOption zur listenDirektive. Dies entspricht der IPV6_V6ONLYOption zu setsockopt().

mgorven
quelle
Glücklicherweise stellte ich fest, dass die App (in diesem Fall OpenSSH) bereits IPV6_V6ONLY für den Socket festlegte, als ich dies einstellte, ListenAddress ::sodass ich nicht auf die Verwendung von sysctl zurückgreifen musste (und alles andere neu konfigurieren musste).
Michael Hampton