Я выполняю сервис на 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 не присвоен никакому интерфейсу. Кроме того, я не могу перезагрузить машину.
Какое-либо решение?
Можно отключить IPv6 полностью от ядра путем редактирования/etc/default/grub. Найдите строку:
GRUB_CMDLINE_LINUX_DEFAULT=""
Замена это с:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
Затем выполненный:
update-grub
И перезагрузка.
Я думаю из поля здесь ни из-за какого ограничения перезагрузки. Возможно, если Вы используете некоторый контейнер, докера или lxc, например, поскольку Ваш сервис позволяет Вам отключать ipv6 для контейнера.
демон Докера, например, имеет "-ipv6=true|false" флаг