netstat — IPv4 데몬이 -A inet6에만 나열된 포트를 수신하는 이유는 무엇입니까?


22

컴퓨터가있는 :

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
모든 IPv4 주소는 IPv6 주소에 직접 매핑되지만 그 반대도 마찬가지입니다. 참조 : en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
Patrick

4
사용을 중지하십시오 netstat? 그것은 10 년 전에 죽었다 . 사용 iproute2를ss
mikeserv

답변:


16

기본적으로 주소를 Apache Listen매개 변수로 지정하지 않으면 주소를 사용하여 ipv6 주소를 처리 IPv4-mapped IPv6합니다. Apache ipv6을 살펴볼 수 있습니다

출력이 netstat아파치가 IPv4 주소에서 수신 대기하고 있지 않다는 것을 의미하지는 않습니다. 그것은 A의 IPv4-mapped IPv6주소를 입력합니다.


IPv4 주소를 듣고 있지만 NETSTAT, 예를 들어 ElasticSearch에 의해 tcp6로 표시되는 다른 서비스가 가능
미샤 Arefiev

@Patrick에서 제공하는 wikipedia 링크를 읽은 것 같습니다. IPv4로 매핑 된 IPv6 주소를 사용하는 모든 서비스 tcp6는 netstat의 출력에 표시됩니다.
초보자

14

그 이유는 모든 IPv4 주소가 IPv6 주소이기 때문입니다. IPv4 주소의 일대일 매핑에 사용되도록 작은 범위의 IPv6 주소가 별도로 설정되었습니다. 예를 들어, IPv4 주소 192.0.2.128는 IPv6 주소를 통해 액세스 할 수 있습니다 ::ffff:192.0.2.128. 이는 IPv6 만 지원하는 모든 응용 프로그램이 여전히 IPv4 주소에서 청취 할 수 있도록하기위한 것입니다. IPv4는 IPv6 주소를 처리하는 방법을 알 수 없으므로 IPv6 주소 (매핑되지 않은)가 IPv4 주소와 통신하는 데 사용할 수 없습니다 그래도).

모든 IPv4 주소는 IPv6으로 표시되므로 IPv6을 netstat사용하여 앱을 나열 할 때 IPv4도 얻게됩니다.
그것은 나타낼 수 10.0.176.93::ffff:10.0.176.93, 심지어 ::ffff:a00:b05d하지만, 응용 프로그램 개발자는 일반 점 표기법 IPv4 주소로 표시하기로 결정했습니다.


감사합니다, 그러나 이것은 정기적으로 할 때 왜 팝업되지 않는지 대답하지 않습니다-A inet
Mischa Arefiev

청취 연결이 tcp6 소켓으로 만 나열되는 이유는 실제로는 IPv6 소켓이기 때문이지만 추가 기능을 사용하여 IPv4 연결을 허용하는 경우 추가 기능이 있기 때문입니다. 소켓은 INADDR_ANY6에 바인드되며 IPv4 연결시 주소는 :: ffff : 0000/96 접두사를 사용하여 IPv6 주소에 맵핑됩니다. 이 매핑 된 주소에 대해서만 사용됩니다. 그들은 전선에 사용해서는 안됩니다.
Johan Myréen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.