我正在用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)
告诉:
如果插座sockfd是类型
SOCK_DGRAM
,那么地址是
数据报默认发送到的地址,并且
接收数据报的唯一地址。
UDP 套接字将忽略任何不是来自远程地址 10.22.53.102 端口 4500 的 UDP 数据报:因此,这些数据报会像往常一样被操作系统拒绝并出现 ICMP 错误。
因此,端口 48475 虽然在技术上是开放的(存在套接字),但不会向当前对等方以外的任何其他端口开放,就像从某个随机端口到端口 80 或 443 上的 Web 服务器的任何客户端 TCP 连接也不被视为开放。
注意:如果您想显示状态(ESTAB
即处于连接状态),您可以运行此命令,-a
可以显示所有状态,从而在前面添加状态:
ss -aunp state established
或者
ss -aunp sport 48475
ss -aunp dport 4500
等等。默认情况下仅显示连接状态,因此不添加前缀ESTAB
:
当没有使用选项时 ss 显示打开的列表不听 套接字(例如 TCP/UNIX/UDP) 已建立的连接。
具有