이 스크립트를 사용하여 IPv6를 성공적으로 비활성화한 후:
echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf
sysctl -p
이 스크립트를 사용하여 다시 활성화하려고 합니다.
sed -i "/net.ipv6.conf.all.disable_ipv6/d" /etc/sysctl.conf
sed -i "/net.ipv6.conf.default.disable_ipv6/d" /etc/sysctl.conf
sed -i "/net.ipv6.conf.lo.disable_ipv6/d" /etc/sysctl.conf
sysctl -p
활성화 스크립트가 sysctl.conf 파일에서 비활성화 줄을 제거하는 것을 확인했습니다.
각각의 경우에 다음과 같이 결과를 확인합니다.
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
여기서 '1'은 비활성화됨을 의미하고 '0'은 비활성화됨을 의미합니다.
재활성화 부분이 작동하지 않습니다.
각 경우에 sysctl -p 명령은 /etc/sysctl.conf 파일을 다시 로드합니다. 그러나 다시 로드는 비활성화 속성이 제거되지 않도록 완전히 덮어쓰는 대신 단순히 버퍼를 끌어오는 것 같습니다.
이 분석이 맞나요?
그렇다면 sysctl.conf 캐시를 지우는 옵션이 표시되지 않습니다. 하나 있나요? 아니면 이 요구 사항에 대한 전략이 있습니까?
답변1
의 항목 /etc/sysctl.conf
과 여기에 포함된 모든 파일은 부팅 시 또는 를 실행할 때 적용할 sysctl 설정을 지정합니다 sudo sysctl -p
. 하지만 이 파일에 항목이 없다는 것은 그러한 sysctl(수천 개가 있음)이 있음을 의미합니다.변경되지 않습니다현재 보유하고 있는 모든 값에서.
이 파일에서 IPv6을 비활성화하는 sysctl 항목을 제거했지만 실제로 sysctl 설정 자체를 변경한 것으로 보이지는 않습니다. sudo sysctl -p
에 없기 때문에 실행해도 변경되지 않았습니다 /etc/sysctl.conf
.
이러한 항목을 기본값으로 다시 변경하려면 시스템을 재부팅하거나 를 사용하여 sysctl
명시적으로 설정할 수 있습니다. 예를 들어:
sudo sysctl net.ipv6.conf.all.disable_ipv6=0
sudo sysctl net.ipv6.conf.default.disable_ipv6=0
sudo sysctl net.ipv6.conf.lo.disable_ipv6=0