Virtualbox의 NAT 네트워크에서 UDP 홀 펀칭이 실패합니다.

Virtualbox의 NAT 네트워크에서 UDP 홀 펀칭이 실패합니다.

virutalbox의 NAT 네트워크를 사용하여 Strongswan의 홀 펀칭 기능을 테스트하고 있는데 오류가 발생했습니다.

[sudo] password for bluven: 
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
10:02:55.430425 enp43s0 B   ARP, Request who-has 10.40.10.180 tell 10.40.10.168, length 46
10:02:55.430446 enp43s0 Out ARP, Reply 10.40.10.180 is-at c0:25:a5:3a:22:86, length 28
10:02:55.431092 enp43s0 In  IP 10.40.10.168.47648 > 10.40.10.180.48475: UDP, length 88
10:02:55.431147 enp43s0 Out IP 10.40.10.180 > 10.40.10.168: ICMP 10.40.10.180 udp port 48475 unreachable, length 124
10:02:55.433350 enp43s0 Out IP 10.40.10.180.33182 > 10.40.10.168.32768: UDP, length 88
10:02:55.435262 enp43s0 In  IP 10.40.10.168 > 10.40.10.180: ICMP 10.40.10.168 udp port 32768 unreachable, length 124
10:02:55.455493 enp43s0 In  IP 10.40.10.168.47648 > 10.40.10.180.48475: UDP, length 88
10:02:55.455494 enp43s0 In  IP 10.40.10.168.47680 > 10.40.10.180.48475: UDP, length 88
10:02:55.455557 enp43s0 Out IP 10.40.10.180 > 10.40.10.168: ICMP 10.40.10.180 udp port 48475 unreachable, length 124
10:02:55.455575 enp43s0 Out IP 10.40.10.180 > 10.40.10.168: ICMP 10.40.10.180 udp port 48475 unreachable, length 124
10:02:55.462016 enp43s0 Out IP 10.40.10.180.33182 > 10.40.10.168.32768: UDP, length 88
10:02:55.462293 enp43s0 Out IP 10.40.10.180.53372 > 10.40.10.168.32768: UDP, length 88
10:02:55.463936 enp43s0 In  IP 10.40.10.168 > 10.40.10.180: ICMP 10.40.10.168 udp port 32768 unreachable, length 124
10:02:55.466452 enp43s0 In  IP 10.40.10.168 > 10.40.10.180: ICMP 10.40.10.168 udp port 32768 unreachable, length 124
10:02:55.481386 enp43s0 In  IP 10.40.10.168.47648 > 10.40.10.180.48475: UDP, length 88
10:02:55.481387 enp43s0 In  IP 10.40.10.168.47680 > 10.40.10.180.48475: UDP, length 88
10:02:55.481432 enp43s0 Out IP 10.40.10.180 > 10.40.10.168: ICMP 10.40.10.180 udp port 48475 unreachable, length 124
10:02:55.481442 enp43s0 Out IP 10.40.10.180 > 10.40.10.168: ICMP 10.40.10.180 udp port 48475 unreachable, length 124
10:02:55.490814 enp43s0 Out IP 10.40.10.180.33182 > 10.40.10.168.32768: UDP, length 88
10:02:55.490824 enp43s0 Out IP 10.40.10.180.53372 > 10.40.10.168.32768: UDP, length 88
10:02:55.492815 enp43s0 In  IP 10.40.10.168 > 10.40.10.180: ICMP 10.40.10.168 udp port 32768 unreachable, length 124
10:02:55.493639 enp43s0 In  IP 10.40.10.168 > 10.40.10.180: ICMP 10.40.10.168 udp port 32768 unreachable, length 124
10:02:55.507903 enp43s0 In  IP 10.40.10.168.47680 > 10.40.10.180.48475: UDP, length 88
10:02:55.507949 enp43s0 Out IP 10.40.10.180 > 10.40.10.168: ICMP 10.40.10.180 udp port 48475 unreachable, length 124
10:02:55.516542 enp43s0 Out IP 10.40.10.180.53372 > 10.40.10.168.32768: UDP, length 88
10:02:55.519175 enp43s0 In  IP 10.40.10.168 > 10.40.10.180: ICMP 10.40.10.168 udp port 32768 unreachable, length 124
10:02:55.526381 enp43s0 In  IP 10.40.10.168.47648 > 10.40.10.180.48475: UDP, length 88
10:02:55.538668 enp43s0 Out IP 10.40.10.180.33182 > 10.40.10.168.32768: UDP, length 88
10:02:55.551839 enp43s0 In  IP 10.40.10.168.47680 > 10.40.10.180.48475: UDP, length 88

하지만 확인해 보니 이 포트 48475가 열려 있는 것으로 나타났습니다.

sudo ss -upn  
Recv-Q                      Send-Q                                             Local Address:Port                                              Peer Address:Port                      Process                      
0                           0                                                   10.40.10.180:48475                                             10.22.53.102:4500                       users:(("VBoxNetNAT",pid=738900,fd=26))

어떻게 이런일이 일어 났습니까?

답변1

UDP 소켓이 연결되어 있음을 나타냅니다. 예:connect(2)시스템 호출이 사용됩니다. 설명서에는 다음과 connect(2)같이 나와 있습니다.

소켓의 경우양말유형인 SOCK_DGRAM경우주소
데이터그램이 전송되는 기본 주소 입니다 .
데이터그램을 수신하기 위한 고유 주소입니다.

UDP 소켓은 원격 주소 10.22.53.102 포트 4500에서 오지 않는 모든 UDP 데이터그램을 무시합니다. 따라서 이러한 데이터그램은 평소처럼 ICMP 오류와 함께 운영 체제에 의해 거부됩니다.

따라서 포트 48475는 기술적으로 열려 있지만(소켓이 존재함) 임의의 포트에서 포트 80 또는 443의 웹 서버로 연결되는 것과 같이 현재 피어 이외의 다른 포트에는 열려 있지 않습니다. 모든 클라이언트 TCP 연결도 열린 것으로 간주되지 않습니다.


참고: 상태를 표시하려면( ESTAB예: 연결된 경우) 이 명령을 실행하면 -a모든 상태가 표시되므로 앞에 상태가 추가됩니다.

ss -aunp state established

또는

ss -aunp sport 48475
ss -aunp dport 4500

등. 기본적으로 연결 상태만 표시되므로 접두사는 추가되지 않습니다 ESTAB.

옵션이 사용되지 않으면 ss는 열린 목록을 표시합니다.듣지 마 소켓(예: TCP/UNIX/UDP) 연결 설정됨.

가지다

관련 정보