Я хочу отключить ipv6 в моей частной облачной сети GCP. Мне он не нужен во внутренней сети, так как Google завершает ipv6 на балансировщике нагрузки GCP, поэтому я отредактировал /etc/sysctl.conf
# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.ens4.disable_ipv6 = 1
конечно sudo / etc / sysctl -p
Судо vi / и т.д. / по умолчанию / grub
Изменены GRUB_CMDLINE, чтобы они выглядели так:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"
Затем выполнены:
sudo update-grub
перезагрузка sudo
После перезагрузки sudo ps -ae | grep ip показывает:
ps -ae | grep ip
87 ? 00:00:00 ipv6_addrconf
ПОЧЕМУ ЗАПУСКАЕТСЯ ЭТО ПРОЦЕСС IPV6?
netstat -a показывает
tcp6 0 0 [::]:ssh [::]:* LISTEN
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 haproxy.fr:bootpc 0.0.0.0:*
udp 0 0 localhost:323 0.0.0.0:*
udp6 0 0 ip6-localhost:323 [::]:*
raw6 0 0 [::]:ipv6-icmp [::]:*
Я отредактировал sshd_config и удалил адрес слушателя ipv6. Это останавливает SSH от прослушивания адреса ipv6. По-прежнему не отвечает на пункт 3 выше.
sudo dmesg | grep IP
[ 0.012014] Calibrating delay loop (skipped) preset value.. 4400.00 BogoMIPS (lpj=8800000)
[ 0.056601] smpboot: Total of 1 processors activated (4400.00 BogoMIPS)
[ 0.201233] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO
[ 0.471145] Segment Routing with IPv6
[ 3.875631] IPv6: ADDRCONF(NETDEV_UP): ens4: link is not ready
cat / proc / sys / net / ipv6 / conf / all / disable_ipv6 выдает: «1», что в ТЕОРИИ означает, что ipv6 отключен. Но я не уверен, что ipv6 полностью отключен согласно пункту 3 выше. Может кто-нибудь сказать мне, что означает №3 выше?
ПРИМЕЧАНИЕ: IPV4 работает нормально.
Я почти уверен, что вы действительно отключили IPV6, отредактировав sysctl.
По умолчанию, ip a
на стандартном образе Ubuntu 18.04 возвращается следующее:
[...]
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc fq_codel state UP group default qlen 1000
link/ether [REDACTED] brd ff:ff:ff:ff:ff:ff
inet [REDACTED]/32 scope global dynamic ens4
valid_lft 86257sec preferred_lft 86257sec
inet6 [REDACTED]/64 scope link
valid_lft forever preferred_lft forever
Однако после:
printf "\nnet.ipv6.conf.all.disable_ipv6 = 1\nnet.ipv6.conf.default.disable_ipv6 = 1\nnet.ipv6.conf.lo.disable_ipv6 = 1\nnet.ipv6.conf.ens4.disable_ipv6 = 1\n">> /etc/sysctl.conf
sysctl -p
С участием ip a
, вместо этого вы должны увидеть это:
[...]
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc fq_codel state UP group default qlen 1000
link/ether [REDACTED] brd ff:ff:ff:ff:ff:ff
inet [REDACTED]/32 scope global dynamic ens4
valid_lft 85786sec preferred_lft 85786sec
Обратите внимание, что весь inet6
раздел сейчас нет.
Как ни странно, я столкнулся с эта ошибка во время тестирования. Обходной путь - добавить sysctl -p в качестве сценарий запуска к экземпляру.
Учитывая ipv6_addrconf
процесс, это системный процесс, и отключение модуля с помощью modprobe, похоже, не сильно помогает от него:
modprobe --remove ipv6
Внесение этого в черный список тоже не избавляется от него.
Я бы не советовал этого делать, потому что этот процесс просто сидит и ничего не делает, и вы потенциально можете столкнуться с проблемами ядра, вмешиваясь в него, особенно если вы не уверены, что он делает. Единственная достойная статья, в которой я подробно рассказываю о модуле IPv6 это один. В любом случае ваши сетевые интерфейсы не будут использовать IPv6.