[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를 비활성화하는 방법은 크게 세 가지입니다:

  1. NetworkManager를 이용한 비활성화: 특정 인터페이스에 개별 적용 (간편함)

  2. sysctl 파라미터를 통한 시스템 전체 적용: 전체 인터페이스에 적용 가능

  3. 커널 파라미터 수정 방식: 재부팅 필요하며 일반적으로는 권장되지 않음

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 비활성화 (전체 인터페이스)

이 방법은 시스템 전체 인터페이스에 대해 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

댓글

이 블로그의 인기 게시물

[Linux] RHEL Local YUM Repository 구성

[Linux Command] sudo command 설명

[Ansible Modules] Fetch module 설명 및 활용