Я пытаюсь полностью отключить IPv6 на моем сервере NFS (точнее, Ubuntu 12.04 LTS), но, похоже, некоторые порты IPv6 все еще прослушивают, как показано, когда я запускаю netstat -lp:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:60377 *:* LISTEN -
tcp 0 0 *:49115 *:* LISTEN 1744/rpc.mountd
tcp 0 0 *:nfs *:* LISTEN -
tcp 0 0 *:54658 *:* LISTEN 1744/rpc.mountd
tcp 0 0 *:sunrpc *:* LISTEN 450/rpcbind
tcp 0 0 *:55730 *:* LISTEN 709/rpc.statd
tcp 0 0 *:48181 *:* LISTEN 1744/rpc.mountd
tcp6 0 0 [::]:37004 [::]:* LISTEN -
udp 0 0 *:55738 *:* 1744/rpc.mountd
udp 0 0 *:43533 *:* -
udp 0 0 *:43687 *:* 709/rpc.statd
udp 0 0 *:sunrpc *:* 450/rpcbind
udp 0 0 *:615 *:* 450/rpcbind
udp 0 0 localhost:885 *:* 709/rpc.statd
udp 0 0 *:50206 *:* 1744/rpc.mountd
udp 0 0 *:54380 *:* 1744/rpc.mountd
udp 0 0 *:nfs *:* -
udp6 0 0 [::]:46857 [::]:* -
Я отключил IPv6 на уровне ядра в /etc/sysctl.d/ipvf-disable.conf:
#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
А также в / etc / netconfig:
udp tpi_clts v inet udp - -
tcp tpi_cots_ord v inet tcp - -
#udp6 tpi_clts v inet6 udp - -
#tcp6 tpi_cots_ord v inet6 tcp - -
rawip tpi_raw - inet - - -
local tpi_cots_ord - loopback - - -
unix tpi_cots_ord - loopback - - -
После внесения этих изменений я перезагрузился, и приведенный выше вывод netstat не изменился. Открытые порты UDP6 и TCP6 кажутся портами ядра (отсюда отсутствие PID), и они исчезают, когда я запускаю /etc/init.d/nfs-kernel-server stop.
Я нашел следующий отчет об ошибке: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648635 это соответствует моей проблеме, но, похоже, на нее нет ответов. Я что-то упустил или это ошибка?
РЕДАКТИРОВАТЬ. Чтобы уточнить, есть код, который плохо работает с любым IPv6 (да, это дрянной код, и его нельзя легко изменить), поскольку он читает netstat и ломается. Приветствуются любые идеи о том, как удалить ссылки IPv6 из netstat.
Для полноты картины мне удалось найти обходной путь для этого конкретного случая, создав сценарий оболочки "netstat", который анализирует IPv6 из существующего netstat и вводит в приложение альтернативный PATH, включая этот сценарий.
ПРИМЕЧАНИЕ. - Очевидно, что это не самая лучшая идея в качестве постоянного исправления, но, поскольку мне не было предложено лучшего варианта, это работало.
В конфигурации загрузки установите ipv6.disable = 1
В общем, отредактируйте / etc / default / grub и добавьте это в список параметров в GRUB_CMDLINE_LINUX Затем запустите grub_mkconfig -o /boot/grub2/grub.cfg