我尽量描述清楚这个现象
两个服务器上有strongswan的vpn服务,描述A->B建立服务发生的现象,B->A现象一致
服务器情况概述
A、B两台服务器目前均开启firewall防火墙,VPN的协商端口为udp500,两端防火墙均没有配置放开udp500端口
操作
A向B发起建立连接服务,数据包源端口500,目的端口500,在B机器抓包,发现没有相关数据包,证明防火墙将包丢弃
此时在B机器上向A发起建立连接服务,服务正常建立了起来
疑问,在没有开启防火墙端口的情况下,服务应该不能建立
猜想:
由于查看防火墙的机制,只有与传出流量有关,其余流量流量均拒绝(没有其他规则的情况下),是否A->B发起服务时,源目的端口都是500,B的防火墙拒绝后,由于A还有建立服务的尝试次数,依然在发包,B这时向A发起服务,A会认为这是与传出流量相关所以不拒绝数据包
希望有明白的人可以答疑解惑
恭喜你独立自主的发现了数据穿透的原理
p2p传输建立点对点连接的时候就是利用了这个原理
正常情况下,客户端只能对服务端发起连接,客户端之间都在局域网内部,互相是不可见的
但是防火墙只拦截从外部向内部主动发起的数据包,而如果是从内网向外网请求,返回的数据包是不拦截的,(否则你根本没法上网,所有网站只能接到你的请求,返回的页面你一个都看不见)
那么只要服务器向你发送的数据包还利用你发出数据时的端口号,就能骗过防火墙