Linux의 IPv6에서 자동 구성을 비활성화하는 방법은 무엇입니까?


22

Linux에서 IPv6의 자동 구성을 영구적으로 비활성화하려면 어떻게해야합니까? 다음을 사용하여 인터페이스에서 주소를 수동으로 삭제하려고 할 때 :

ip -6 addr del 2001:0db8:85a3:0000:0000:8a2e:0370:7334/64 dev eth1

몇 초 후에 다시 나타납니다. IPv6를 모두 비활성화하지 않고 영구적으로 사용하고 싶습니다.

답변:


21

다음을 사용하여 eth1에 대해 자동 구성을 임시로 비활성화 할 수 있습니다.

sudo sysctl -w net.ipv6.conf.eth1.autoconf=0
sudo sysctl -w net.ipv6.conf.eth1.accept_ra=0

또는 모든 인터페이스 :

sudo sysctl -w net.ipv6.conf.all.autoconf=0
sudo sysctl -w net.ipv6.conf.all.accept_ra=0

통화에서 0 대신 1을 사용하여 다시 활성화 할 수 있습니다.

에 영구적으로 사용 중지하려면에 항목을 입력하면 /etc/sysctl.conf됩니다. Debian Etch (아마도 최신 버전)에서을 설정하지 않고 accept_ra시스템은 Link local adress ( fe80..)를 사용하여 자동 구성됩니다.

GART 아래에 설명한 바와 같이 호스트 자체가 라우터이고, 만약, 자동 주소 구성 및 라우터 검색을 사용할 수 없습니다 accept_ra아니다 2, 즉

net.ipv6.conf.<iface|all|default>.forwarding=1

net.ipv6.conf.<iface|all|default>.accept_ra=0 또는 net.ipv6.conf.<iface|all|default>.accept_ra=1.

iface당신의 인터페이스는 어디에 있습니까


3
또한 호스트 자체가 라우터 인 경우 자동 주소 구성 및 라우터 검색이 비활성화됩니다 net.ipv6.conf.all.forwarding=1.
가트

4

접두사 (RFC5942에 따름)에 대한 온 링크 및 오프 링크 표시를 위해 RA가 필요하고 다른 여러 가지의 자동 구성이 필요하므로 위의 net.ipv6.conf.all.accept_ra = 0은 수행하지 않아야합니다. MTU, Neighbor Discovery timeouts 등과 같은 매개 변수

자동 구성을 비활성화하려면 위와 같이 autoconf sysctl을 끄거나 RA의 PIO (Prefix Information Option)에서 A (자동 구성 비트)를 끄십시오.


3
sudo sysctl -w net.ipv6.conf.all.autoconf=0

이것은 데비안 Wheezy에서 작동하지 않았습니다. /etc/sysctl.conf를 검사 한 후 사용해야했습니다.

sudo sysctl -w net.ipv6.conf.default.autoconf=0

3

sysctl솔루션은 Ubuntu 18.04 Bionic에서 작동하지 않았습니다. 우리는 그것을 해결했습니다 :

편집 /etc/netplan/01-netcfg.yaml, 구성 :

network:
  ...
  ethernets:
    eth0:
      ...
      dhcp6: no
      accept-ra: no

대신 인터페이스 이름을 사용해야 할 수도 있습니다 eth0. 파일을 저장 한 후 다음을 실행하십시오.

netplan apply 또는 reboot

자동 구성에서 IPv6 IP를 이미 받았으며 재부팅하지 않고 제거하려는 경우 다음을 실행할 수 있습니다.

ip -6 addr del 1111:2222:1:0:aaaa:bbbb:cccc:dddd/64 dev eth0 

물론이 명령에서 IP와 장치를 교체해야합니다.


이것은 단지 내 하루가 몇 달 동안 내 머리를 긁적하고있다 : D
anthonysomerset

2
나는 보통 그것을 찾을 때까지 Google을 긁습니다.
Jeroen Vermeulen-MageHost

1
이것은 내가 시도했을 때 효과가 있었지만 Mark S가 언급했듯이 accept-ra를 끄는 것은 매우 위험합니다. 작동하는 것처럼 보이지만 나중에 조각화 지점이나 장애 조치 라우터에 도달하여 패킷이 누락 된 것을 발견 할 수 있습니다 사용. 또한 핑을 끊습니다. 내가 이것을하려고하는 이유는 나가는 메일에서 SPF 레코드를 안정적으로 일치시키는 것이었지만 IPv6에서는 주소의 범위가 단일 주소가 아닌 컴퓨터에 실제로 속하기 때문에 레코드에서 넷 마스크를 사용해야한다는 것을 깨달았습니다. .
Phil McKerracher

2

Ubuntu 18 및 ipv6의 문제점은 systemd-networkd가 커널 매개 변수를 제어한다는 것입니다. 따라서 sysctl을 사용하여 ipv6을 비활성화 할 수 있지만 구성이 다르게 표시되지 않으면 networkd가 자동으로 전환하는 것보다 더 행복 할 것입니다.

ipv6를 비활성화하는 나의 해결책은 netplan에서 링크 로컬을 빈 스칼라로 구성하는 것입니다 (링크 로컬 ipv4 IP가없는 경우)

network:
     version: 2
     renderer: networkd
     ethernets:
     eth0:
        ..
        link-local: [ ]

이 구성은 /run/systemd/network/10-netplan-eth0.network에 게시되고 eth0에 대해 ipv6을 설치하지 않도록 설득 된 네트워크 구성을 컴파일합니다.

루프백에서도 ipv6을 비활성화하려면 커널 매개 변수 net.ipv6.conf.all.disable_ipv6을 1로 설정하면 쉽게 달성 할 수 있습니다. networkd는 루프백을 제어하지 않는 것 같습니다.

sysctl -w net.ipv6.conf.all.disable_ipv6=1

나는 당신의 매우 깨끗한 솔루션을 정말 좋아합니다. 빈 스칼라를 추가하는 완벽한 솔루션은 로컬 링크 주소를 사용하지 않기 때문입니다. 그 후, netplan apply가 이미 할당 된 IPv6 주소를 두 이더넷 인터페이스 모두에 유지하면서 서버를 재부팅해야했습니다. 그러나 재부팅 후 모든 것이 당신이 말한 것처럼 작동합니다. 루프백 인터페이스에서 IPv6를 비활성화하는 데 귀찮은 이유가 있다고 생각하지 않으므로 sysctl 부분을 건너 뛰었습니다. 감사!
졸탄
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.