Linux에서 IPv4 스택을 동적으로 완전히 비활성화하는 방법은 무엇입니까?


17

Linux에서 IPv4 스택을 비활성화하려면 어떻게 해야합니까? 동적으로 수행하고 싶습니다 . 예를 들어 활성화하고 때로는 IPv6 스택 만 원합니다 . 그것을 할 수있는 휴대용 방법이 있습니까? 배포판에서 그렇게하는 방법을 알고 있다면 많은 도움이 될 것입니다.


2
@kasperd 2011 년 이후로 아무것도 바뀌지 않았습니다.
Michael Hampton

답변:


21

IRC에 대한 약간의 대화 후에 리눅스 커널이 ipv4와 ipv6 사이에 약간의 코드를 공유한다는 점은 ipv4를 완전히 불가능하게 할 수 있다는 것입니다. ipv4 부분없이 커널 컴파일을 시도 할 수 있지만이 경우 ipv6이 컴파일되지 않을 수 있습니다 (그러나 아무것도 시도하지 못하게합니다!).

인터페이스 AFAIK에서 ipv4 주소를 제거 할 수 있지만 현재 ipv4를 완전히 비활성화 할 수는 없다고 생각합니다.

편집 :make menuconfig 커널 2.6.36 에서 빠른 확인 후 전체 TCP / IP 스택 (및 ipv6)을 비활성화하지 않고 ipv4를 비활성화하는 방법을 찾을 수 없었습니다.


4

이것이 개발자를위한 것이라면, "라이브러리 개재"를 LD_PRELOAD와 함께 사용할 수 있으며, 단순히 오류를 반환하는 스텁 함수가있는 일부 닥터 라이브러리 (또는 요일이나 다른 외부 기준에 따라 실제 라이브러리를 호출 함)를 사용할 수 있습니다.


2

IPv4를 완전히 비활성화 할 수는 없다고 생각하지만 목표에 따라 모든 IPv4 트래픽을 삭제하는 iptables것으로 충분할 수 있습니다.

이와 같은 것이 작동해야합니다. IPv4를 통해 액세스하므로 모든 컴퓨터에서 테스트하지 않았습니다.

sudo iptables -I INPUT -j DROP
sudo iptables -O OUTPUT -j DROP

1
이렇게하면 트래픽이 차단되어 유용 할 수 있습니다. 그러나 프로그램이 IPv4 소켓을 바인딩하는 것을 막지는 않습니다. 이것은 IPv4를 완전히 비활성화하는 데 필요합니다.
Michael Hampton

IPv6 전용을 실행해야하는 컴퓨터에서 수행 한 작업은에서 DHCP 클라이언트를 비활성화하는 것이 었습니다 /etc/network/interfaces.d. systemd-resolved아직 수신 대기 중이므로 IPv4를 비활성화하는 것과는 다릅니다 127.0.0.53:53. 그러나 그것은 나의 즉각적인 필요를 해결하기에 충분했고 엉망으로 만드는 것을 훨씬 선호했습니다 iptables.
kasperd 2019

1

대부분 ipv4 모듈없이 커널을 다시 컴파일해야합니다. 페도라

시스템이 127.0.0.1 루프백 인터페이스를 사용하므로 완전히 비활성화 할 수 없습니다.
그러나 if-cfg 명령으로 일부 ipv4 기능을 비활성화 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.