На моем Linux-сервере у меня есть различные демоны, которые могут связываться со всеми интерфейсами с поддержкой IPv6 на ::
. Когда они это делают, Linux отправляет запросы IPv4 этому демону, отображенному, например, как ::ffff:198.51.100.37
.
Вместо этого я бы хотел, чтобы в соединениях IPv4 было отказано и принимались только соединения IPv6, когда демон связывается с ::
. Чтобы получать IPv4-соединения, я хочу, чтобы демон явно привязался к 0.0.0.0
(так же как ::
).
Другими словами, я хочу запустить службу исключительно на IPv6, а не на IPv4.
Есть ли способ добиться этого?
Это контролируется net.ipv6.bindv6only
sysctl. Добавьте следующее в /etc/sysctl.conf
и беги sudo sysctl -p
чтобы произвести изменение.
net.ipv6.bindv6only=1
Приложения также могут явно привязываться только к IPv6-адресу вместо того, чтобы изменять его глобально, например, nginx имеет ipv6only
вариант для listen
директива. Это соответствует IPV6_V6ONLY
возможность setsockopt()
.