Sysctl IPv6가 작동하지 않는 모든 인터페이스에 대해 자동 구성을 비활성화합니다.

Sysctl IPv6가 작동하지 않는 모든 인터페이스에 대해 자동 구성을 비활성화합니다.

모든 인터페이스(4개가 있음)에 대해 IPv6 자동 구성을 끄려고 합니다. 나는 사용하고 싶다

net.ipv6.conf.all.autoconf = 0

내 sysctl 구성(아래 /etc/sysct.d)에서 설정은 어떤 인터페이스에도 적용되지 않았지만 net.ipv6.conf.all.autoconf매개변수에 대해서는 작동하므로 다음 명령을 실행하십시오.

sysctl -a | grep "net\.ipv6\.conf" | grep "autoconf"

net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.eth0.autoconf = 1
net.ipv6.conf.eth1.autoconf = 1
net.ipv6.conf.eth2.autoconf = 1
net.ipv6.conf.eth3.autoconf = 1

그런 다음 즉시 설정을 시도했습니다.

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

그러나 둘 다 작동하지 않습니다. 이에 대한 해결 방법을 알고 있나요? 내가 하나씩( net.ipv6.conf.eth3.autoconf = 0수동으로) 수행하고 싶지 않은 이유는 때로는 더 많은 인터페이스도 있기 때문입니다(항상 연결되어 있지는 않습니다).

답변1

TL;DR

for sInterface in /proc/sys/net/ipv6/conf/*; do sysctl --write $(echo $sInterface.autoconf=0 | sed "s#/#.#g" | sed "s/.proc.sys.//g"); done

그것을 해야 한다.

긴 버전:

  • sysctl실제로 파일 내용을 변경합니다./proc/sys
  • net.ipv6.conf.all.autoconf따라서 물리적으로 다음 위치에 있습니다./proc/sys/net/ipv6/conf/all/autoconf
  • 그래서 우리는 반복합니다/proc/sys/net/ipv6/conf/
  • 구분 기호를 사용하여 모두 사용 /으로 변경합니다..sed#
  • 표준 구분 기호를 사용 .proc.sys.하여 문자열에서 다시 제거합니다 .sed/
  • 우리는 .autoconf=0인터페이스에 추가합니다
  • 그리고 신청하세요sysctl --write $()

메모:달리고 있지 않다면 대신 root해야 할 일 sudo sysctl --write $()...

관련 정보