Отключить IPv4 сопоставленный IPv6
Я запускаю службу на IPv4, но иногда, по-видимому, случайно, случается, что служба использует сокеты TCPv6 (я наблюдаю с ss -s
). Я хочу избежать этого, отключив любое соединение IPv6.
Я попытался отключить его, поместив в /etc/sysctl.conf:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
а затем перезапустить sysctl sudo sysctl -p
, Тем не менее, все еще бывает, что служба использует IPv6, хотя она отключена:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1
Единственный способ, который я нашел, - это опустить и поднять интерфейс.
sudo ifconfig eth1 down
sudo ifconfig eth1 up
Примечание. IPv6-адрес не назначается ни одному интерфейсу. Более того, я не могу перезагрузить машину.
Любое решение?
2 ответа
Я думаю, что из коробки здесь из-за ограничения перезагрузки. Возможно, если вы используете какой-либо контейнер, докер или lxc, например, для вашей службы разрешите отключить ipv6 для контейнера.
Например, демон Docker имеет флаг "--ipv6=true|false"
Вы можете полностью отключить IPv6 из ядра, отредактировав /etc/default/grub. Найдите строку:
GRUB_CMDLINE_LINUX_DEFAULT=""
Заменить его на:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
Затем запустите:
update-grub
И перезагрузка.