[RedHat] IPv6 비활성화
RHEL 7~9 환경에서 불필요한 IPv6 기능을 비활성화하는 방법을 인터페이스 단위와 시스템 전체 방식으로 소개합니다.
IPv6 비활성화 개요
IPv6는 점차 사용이 확대되고 있는 기술이지만, 일반적인 서버 환경에서는 대부분 IPv4만을 사용합니다. 본 글에서는 RHEL 시스템에서 기본 활성화된 IPv6를 어떻게 비활성화할 수 있는지 정리합니다.
환경
Redhat Enterpries Linux 7 ~ 9
RHEL 계열 리눅스는 기본적으로 IPv6가 활성화되어 있습니다. IPv4 주소만 설정했더라도, 아래와 같이 ifconfig
명령으로 확인하면 IPv6 주소가 함께 부여된 것을 볼 수 있습니다
# ifconfig bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500 inet 192.168.155.88 netmask 255.255.255.0 broadcast 192.168.155.255 inet6 fe80::b661:fa4d:be49:2f15 prefixlen 64 scopeid 0x20<link> ether 52:54:00:7e:33:4f txqueuelen 1000 (Ethernet) RX packets 546994 bytes 335415486 (319.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 159504 bytes 11873920 (11.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ...
위 출력 결과에서 inet로 시작하는 라인이 ipv4 주소이고, inet6로 시작하는 부분이 ipv6 주소입니다.
IPv6 비활성화 방법 개요
IPv6를 비활성화하는 방법은 크게 세 가지입니다:
-
NetworkManager를 이용한 비활성화: 특정 인터페이스에 개별 적용 (간편함)
-
sysctl 파라미터를 통한 시스템 전체 적용: 전체 인터페이스에 적용 가능
-
커널 파라미터 수정 방식: 재부팅 필요하며 일반적으로는 권장되지 않음
RHEL8부터는 대부분의 시스템이 NetworkManager를 사용하고 있으므로, 첫 번째 방법이 가장 간단하고 실용적입니다. 단, RHEL7에서 NetworkManager를 사용하지 않는 경우에는 두 번째 방법을 사용합니다.
1) NetworkManager 를 이용한 IPv6 비활성화
NetworkManager를 이용한 방법이므로 RHE7 환경에 NetworkManager를 사용하지 않는 서버의 경우는 아래 2번 방법을 적용합니다.
대상 확인
비활성화할 대상 인터페이스를 먼저 확인합니다. 아래는 bond0
인터페이스에 IPv6가 할당된 예입니다
# ifconfig bond0 bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500 inet 192.168.155.88 netmask 255.255.255.0 broadcast 192.168.155.255 inet6 fe80::b661:fa4d:be49:2f15 prefixlen 64 scopeid 0x20<link> ether 52:54:00:7e:33:4f txqueuelen 1000 (Ethernet) RX packets 546994 bytes 335415486 (319.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 159504 bytes 11873920 (11.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
비활성화 명령
사용 중인 OS 버전에 따라 nmcli
명령의 파라미터가 다르므로 아래 내용을 참고하여 적용합니다.
<RHEL7 ~ RHEL8.0>
# nmcli connection modify bond0 ipv6.method "ignore" # nmcli connection up bond0
<RHEL8.1 ~ RHEL9>
# nmcli connection modify bond0 ipv6.method "disabled" # nmcli connection up bond0
적용 결과 확인
IPv6가 비활성화되었는지 확인합니다
# ifconfig bond0 bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500 inet 192.168.155.88 netmask 255.255.255.0 broadcast 192.168.155.255 ether 52:54:00:7e:33:4f txqueuelen 1000 (Ethernet) RX packets 548256 bytes 335489716 (319.9 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 159748 bytes 11899990 (11.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
출력 결과에서 inet6
라인이 사라졌다면 비활성화가 정상적으로 적용된 것입니다. 이 설정은 시스템 재부팅 후에도 유지됩니다.
2) sysctl 파라미터를 이용한 IPv6 비활성화 (전체 인터페이스)
lo
)는 IPv6를 유지하도록 설정하는 것이 안정성 측면에서 권장됩니다. NetworkManager
가 활성화된 환경에서는 sysctl
설정만으로는 IPv6가 완전히 비활성화되지 않을 수 있습니다. 이 경우 위에 설명한 nmcli 방법으로 진행되어야 합니다. 설정 파일 수정
/etc/sysctl.conf
파일에 다음 내용을 추가합니다
# vim /etc/sysctl.conf ... net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 0
1: 비활성화
0: 활성화
설정 적용
# sysctl -p net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 0
적용 결과 확인
IPv6 비활성화가 적용되었는지 확인하려면, 주요 네트워크 인터페이스와 루프백 인터페이스를 점검합니다
# ifconfig bond0; ifconfig lo bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500 inet 192.168.155.88 netmask 255.255.255.0 broadcast 192.168.155.255 ether 52:54:00:7e:33:4f txqueuelen 1000 (Ethernet) RX packets 2205 bytes 170966 (166.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 909 bytes 141988 (138.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
참조
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/using-networkmanager-to-disable-ipv6-for-a-specific-connection_configuring-and-managing-networking
댓글
댓글 쓰기