나는 컴퓨터가있다:
Linux superhost 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
모든 인터페이스의 포트 80에서 Apache를 실행하고 있으며 에는 나타나지 않지만 netstat -planA inet
놀랍게도 다음에서 찾을 수 있습니다 netstat -planA inet6
.
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::5672 :::* LISTEN 2402/beam.smp
tcp6 0 0 :::111 :::* LISTEN 1825/rpcbind
tcp6 0 0 :::9200 :::* LISTEN 2235/java
tcp6 0 0 :::80 :::* LISTEN 2533/apache2
tcp6 0 0 :::34611 :::* LISTEN 1856/rpc.statd
tcp6 0 0 :::9300 :::* LISTEN 2235/java
...
tcp6 0 0 10.0.176.93:80 10.0.76.98:53704 TIME_WAIT -
tcp6 0 0 10.0.176.93:80 10.0.76.98:53700 TIME_WAIT -
위에 표시된 대로 TCP4를 통해 정상적으로 도달할 수 있습니다. 그러나 이러한 연결도 아래에 나열되어 있습니다 tcp6
. 왜?
답변1
기본적으로 Apache 매개변수에 주소를 지정하지 않으면 Listen
ipv6 주소에 대한 주소 처리기를 사용합니다 IPv4-mapped IPv6
. 당신은 볼 수 있습니다아파치 IPv6
출력은 netstat
Apache가 IPv4 주소를 수신하지 않는다는 의미는 아닙니다. 이것은 IPv4-mapped IPv6
주소입니다.
답변2
그 이유는 모든 IPv4 주소가 IPv6 주소이기도 하기 때문입니다. IPv4 주소의 일대일 매핑을 위해 소수의 IPv6 주소가 예약되어 있습니다. 예를 들어 192.0.2.128
IPv4 주소는 IPv6 주소를 통해 액세스할 수 있습니다 ::ffff:192.0.2.128
. 이는 IPv6 전용 애플리케이션이 여전히 IPv4 주소를 수신할 수 있도록 하기 위한 것입니다. IPv4는 IPv6 주소로 무엇을 해야할지 모르기 때문에(NAT 또는 다른 솔루션을 사용할 수 있지만) 다른 항목을 포함하지 않고 IPv6 주소(매핑되지 않음)에 대해 IPv4 주소와 통신하는 데 사용할 수 없습니다.
모든 IPv4 주소는 IPv6으로 표시되므로 netstat
IPv6를 사용하는 애플리케이션을 나열하라는 메시지가 표시되면 IPv4도 표시됩니다. 이는 IPv4 주소 로
표시될 수도 있지만 애플리케이션 개발자는 이를 일반적인 점 표기법으로 표시하도록 선택합니다.10.0.176.93
::ffff:10.0.176.93
::ffff:a00:b05d