私のLinuxボックスには、::
上のすべてのIPv6対応インターフェースにバインドできるさまざまなデーモンがあります。その場合、LinuxはIPv4要求を、たとえば::ffff:198.51.100.37
としてマップされたデーモンに送信します。
代わりに、IPv4接続が拒否され、デーモンが::
にバインドするときにIPv6接続のみが受け入れられるようにしたいと思います。 IPv4接続を受信するには、デーモンに0.0.0.0
(および::
)に明示的にバインドする必要があります。
つまり、IPv4ではなくIPv6でのみサービスを実行したいのです。
これを達成する方法はありますか?
これは_net.ipv6.bindv6only
_ sysctlによって制御されます。以下を_/etc/sysctl.conf
_に追加し、_Sudo sysctl -p
_を実行して変更を有効にします。
_net.ipv6.bindv6only=1
_
アプリケーションは、これをグローバルに変更する代わりに、IPv6アドレスにのみ明示的にバインドすることもできます。たとえば、nginxには listen
ディレクティブに_ipv6only
_オプションがあります。これは、setsockopt()
の- _IPV6_V6ONLY
_ オプションに対応します。