IPv4-mapped IPv6を無効にするにはどうすればよいですか?


17

Linuxボックスには、上のすべてのIPv6対応インターフェースにバインドできるさまざまなデーモンがあります::。そうすると、Linuxは、たとえばとしてマップされたそのデーモンにIPv4要求を送信します::ffff:198.51.100.37

私は代わりにIPv4接続が拒否されて、デーモンがバインドするときIPv6接続だけが受け入れられることを望みます::。IPv4接続を受信するには、デーモンに明示的にバインドする必要があります0.0.0.0(同様に::)。

つまり、IPv4ではなくIPv6でのみサービスを実行したいのです。

これを達成する方法はありますか?

回答:


22

これはnet.ipv6.bindv6onlysysctl によって制御されます。以下を追加し/etc/sysctl.confて実行sudo sysctl -pし、変更を有効にします。

net.ipv6.bindv6only=1

アプリケーションは、これをグローバルに変更する代わりに、明示的にIPv6アドレスにのみバインドすることもできipv6onlyますlisten。たとえば、nginx にはディレクティブに対するオプションがあります。これはのIPV6_V6ONLYオプションに対応しますsetsockopt()


幸いなことに、設定時にアプリ(この場合はOpenSSH)が既にソケットにIPV6_V6ONLYを設定していたListenAddress ::ため、sysctlを使用する(および他のすべてを再構成する)必要はありませんでした。
マイケルハンプトン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.