RHEL、LinuxとIPv6関連の機能が有効だと不要なパケットが流れる、意図しない動きになる(IPv6が優先で動いている)などトラブルが発生するため、極力無効化しておくと良いです。
なお、一番最初にカーネルでIPv6のモジュールを読み込まない設定をすると、動作確認でポートが閉じたことを確認することはできません。
カーネルでIPv6を読み込ませない
// loopbackのinet6で確認可能 # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever // grub修正 # vi /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap ipv6.disable=1rhgb quiet" ★「ipv6.disable=1」を追記 GRUB_DISABLE_RECOVERY="true" GRUB_ENABLE_BLSCFG=true // 設定を反映 # grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... done // カーネルに読み込ませるためOSを再起動する # systemctl reboot // 設定が正常に反映されていればinet6が消えているはず # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever // またv6でListenできなくなっているため、設定変更前に表示されていたv6関連のポートは全て消えているはず # netstat -na | grep :: ⇒何も表示されないはずです
hosts
// ::のエントリをコメントアウト # cat hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ★コメントアウト
sshのv6無効
// 修正前にv6で利用されているサービス一覧 # netstat -na |grep :: tcp6 0 0 ::1:44321 :::* LISTEN tcp6 0 0 ::1:4330 :::* LISTEN tcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::53 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:953 :::* LISTEN udp6 0 0 :::53 :::* udp6 0 0 :::111 :::* udp6 0 0 ::1:323 :::* udp6 0 0 :::33541 :::* // 0.0.0.0のみコメントを外す # vi /etc/ssh/sshd_config 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #Port 22 #AddressFamily any ListenAddress 0.0.0.0 #ListenAddress :: // 設定反映 # systemc restart sshd.service // 22番ポートのListenがないことを確認 # netstat -na |grep :: tcp6 0 0 ::1:44321 :::* LISTEN tcp6 0 0 ::1:4330 :::* LISTEN tcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::53 :::* LISTEN tcp6 0 0 ::1:953 :::* LISTEN udp6 0 0 :::53 :::* udp6 0 0 :::111 :::* udp6 0 0 ::1:323 :::* udp6 0 0 :::33541 :::*
BINDのv6無効
named.confに記載する方法も、オプションで無効にする方法を記載。
// 修正前にv6で利用されているサービス一覧 # netstat -na |grep :: tcp6 0 0 ::1:44321 :::* LISTEN tcp6 0 0 ::1:4330 :::* LISTEN tcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::53 :::* LISTEN udp6 0 0 :::53 :::* udp6 0 0 :::111 :::* udp6 0 0 ::1:323 :::* udp6 0 0 :::33541 :::* // 最終行に以下の内容を追記 # cat /etc/sysconfig/named OPTIONS="-4" // 設定反映 # systemc restart named.service // 53番ポートがないことを確認 # netstat -na |grep :: tcp6 0 0 ::1:44321 :::* LISTEN tcp6 0 0 ::1:4330 :::* LISTEN tcp6 0 0 :::111 :::* LISTEN udp6 0 0 :::111 :::* udp6 0 0 ::1:323 :::* udp6 0 0 :::33541 :::*
chronyのv6無効
// v6のが有効になっていることを確認 # systemc status chronyd.service 1月 22 16:17:18 relay chronyd[3690]: chronyd version 4.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG) // 最終行に以下の内容に修正 # cat /etc/sysconfig/chronyd OPTIONS="-4" // 設定反映 # systemctl restart chronyd.service // v6が無効の場合、「+IPV6」と、出力されていた「::1」のログが消えているはず # systemctl status chronyd.service 1月 22 16:13:13 relay chronyd[3619]: chronyd version 4.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +>
vsftpdのv6無効
listenとlisten_ipv6の両方をYESにすることはできない
// 以下のコンフィグ修正 # vi /etc/vsftpd/vsftpd.conf 以下を修正 //v4でLisetnさせる。 #listen=NO listen=YES // v6を無効にする #listen_ipv6=YES listen_ipv6=NO // 設定反映 # systemctl restart vsftpd.service
Postfixのv6無効
// 以下のコンフィグ修正 # vi /etc/postfix/main.cf 以下を修正 # Enable IPv4, and IPv6 if supported #inet_protocols = all inet_protocols = ipv4 // 設定反映 # systemctl restart postfix.service
Dovecotのv6無効
// 以下のコンフィグ修正 # vi /etc/dovecot/dovecot.conf 以下を修正 #listen = *, :: ★コメントアウト listen = 192.168.11.11 ★適宜設定 // 設定反映 # systemctl restart dovecot.service
Squidのv6無効
「IPアドレス:LISTENポート番号」で指定する。ポートのみはNGだった記憶。
// 以下のコンフィグ修正 # vi /etc/squid/squid.conf 以下を修正 # Squid normally listens to port 3128 #http_port 3128 ★コメントアウト http_port 192.168.11.11:8080 ★適宜設定 // 設定反映 # systemctl restart squid.service