리눅스 박스에는에있는 모든 IPv6 가능 인터페이스에 바인딩 할 수있는 다양한 데몬이 있습니다 ::
. 그렇게 할 때, Linux는 IPv4 요청을 해당 데몬에 전송합니다 (예 🙂 ::ffff:198.51.100.37
.
대신 데몬이 바인딩 될 때 IPv4 연결이 거부되고 IPv6 연결 만 허용됩니다 ::
. IPv4 연결을 수신하려면 데몬이 0.0.0.0
(와) 명시 적으로 바인딩해야 ::
합니다.
즉, IPv4가 아닌 IPv6에서만 서비스를 실행하고 싶습니다.
이것을 달성 할 수있는 방법이 있습니까?
답변
이것은 net.ipv6.bindv6only
sysctl에 의해 제어됩니다 . 변경 사항을 적용 하려면 다음을 추가 /etc/sysctl.conf
하고 실행 sudo sysctl -p
하십시오.
net.ipv6.bindv6only=1
응용 프로그램은 또한 전역 적으로 변경하는 대신 IPv6 주소에만 명시 적으로 바인딩 할 수 있습니다. 예를 들어 nginx에는 지시문에 대한 ipv6only
옵션이 listen
있습니다. 이는 IPV6_V6ONLY
옵션에 해당합니다 setsockopt()
.