Hadoop 은 IPv6 를 지원하지 않는다. IPv6 가 살아 있으면 데몬이 :: 에 바인드되거나 이름 풀이에서 AAAA 레코드를 먼저 받아 접속이 늦어지는 일이 생기므로 모든 노드에서 끈다.
방법은 두 가지다. sysctl 로 끄는 것이 되돌리기 쉬워 기본이고, 커널 인자(ipv6.disable=1)는 모듈 자체를 올리지 않아 확실하지만 IPv6 를 전제하는 일부 소프트웨어(sshd 의 ListenAddress ::, 일부 systemd 유닛)가 경고를 낸다.
즉시 적용.
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
영구 설정. /etc/sysctl.conf 대신 /etc/sysctl.d/ 에 파일을 둔다.
sudo tee /etc/sysctl.d/90-disable-ipv6.conf > /dev/null <<'EOF'
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOF
sudo sysctl --system
NetworkManager 가 인터페이스별로 IPv6 를 다시 켤 수 있으므로 연결 프로필에서도 끈다.
nmcli connection show
sudo nmcli connection modify <연결이름> ipv6.method disabled
sudo nmcli connection up <연결이름>
sudo grubby --update-kernel=ALL --args="ipv6.disable=1"
sudo reboot
되돌릴 때는 --remove-args="ipv6.disable=1".
cat /proc/sys/net/ipv6/conf/all/disable_ipv6 # 1
ip -6 addr # 아무것도 없어야 한다
ss -tlnp | grep ':::' # IPv6 리스너가 없어야 한다
위 버전과 저장소는 오래된 것이라 저장소가 존재하지 않을 수 있다.
sudo vi /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
# re-booting
sudo shutdown -r now
Grub 에 IPv6 비활성화 옵션을 추가한다.
sudo vi /etc/default/grub
# 아래 라인의 " " 안에 IPv6 옵션 추가
GRUB_CMDLINE_LINUX="ipv6.disable=1 ..."
# Grub 재생성
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# re-booting
sudo shutdown -r now