SSH가 netstat의 프로토콜을 tcp6 *및* tcp로 표시하는 이유는 무엇입니까?

SSH가 netstat의 프로토콜을 tcp6 *및* tcp로 표시하는 이유는 무엇입니까?
$ netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN  

포트 22에 두 개의 레코드( :::22및 ) 가 있는 이유는 무엇입니까 ? 하나는 프로토콜을 다음으로 사용 하고 하나는 다음으로 사용합니까?0.0.0.0:22tcptcp6

이것은 우분투 12.04.4에 있습니다

답변1

기본적으로 sshdipv4 및 ipv6이 사용됩니다. AddressFamily다음 명령을 사용하여 sshd에서 사용하는 프로토콜을 구성 할 수 있습니다 ./etc/ssh/sshd_config

ipv4 및 ipv6의 경우(기본값)

AddressFamily any

IPv4에만 사용 가능

AddressFamily inet

IPv6에만 사용 가능

AddressFamily inet6

변경 사항을 적용하려면 변경한 후 sshd_config다시 시작하세요 .sshd

답변2

사실 그게 더 흥미롭다

기본적으로 IPv6를 완전히 비활성화하더라도 일부 소켓은 이상한 커널 이유로 인해 "TCP6/UDP6"으로 인식됩니다.

3G 네트워크에 연결되어 있고 IPv6를 지원하지 않는 Android 휴대폰에서 netstat를 실행한 후 이 문제를 발견했습니다(APN 설정에서 비활성화되었으며 통신업체에서 명시적으로 지원하지 않음).

WhatsApp에 대한 TCP6 연결이 어떻게든 지속되는 것을 확인한 후 조사를 시작하여 다음 링크를 찾았습니다. https://blog.codecentric.de/en/2014/04/note-netstat/

답변3

::IPv4와 IPv6를 묶어서 대화하는 것만 으로도 가능합니다 . 왜 일부 애플리케이션(openssh 포함)이 이를 활용하지 않는지 궁금합니다.

이것FreeBSD 개발자 매뉴얼의 IPv6 섹션관련성이 있을 수 있는 몇 가지 흥미로운 의견이 있습니다.

RFC2553은 특히 포트 공간 문제, 실패 모드 및 AF_INET/INET6 와일드카드 바인딩 간의 관계 측면에서 와일드카드 바인딩 문제에 대해 너무 적게 설명하는 것 같습니다. 이 RFC는 일치하는 여러 개별 해석을 가질 수 있지만 다르게 동작할 수 있습니다. 따라서 이식 가능한 응용 프로그램을 구현하려면 커널의 동작에 대해 가정하면 안 됩니다. getaddrinfo(3)를 사용하는 것이 가장 안전한 방법입니다. 1999년 3월 중순, 포트 번호 공백과 와일드카드 바인딩 문제가 ipv6imp 메일링 리스트에서 길게 논의되었지만 구체적인 합의는 없었습니다(의미는 구현자에 따라 다름). 메일링 리스트 아카이브를 확인해 보세요.

또한 많은 수의 시스템이 IPv6를 지원하지 않을 때 이 기본 동작이 정의되었다고 추측할 수도 있습니다.

관련 정보