已配置VPC防火墙规则仍无法通过指定端口连接Compute Engine实例
故障根因分析
- 云服务器实例内部防火墙(ufw/iptables)未放行102端口入站请求:GCP VPC防火墙属于云平台外层访问控制,不会覆盖Ubuntu系统自带的内部防火墙规则,即使VPC放行了端口,系统内部拦截同样会导致连接失败。
- 102端口对应的服务未正确监听OpenVPN虚拟网卡地址:如果服务仅监听127.0.0.1(本地环回地址)或实例公网物理网卡地址,来自虚拟网段10.8.0.0/24的访问请求无法匹配到监听规则。
- 102端口无运行中的服务监听:102属于1024以下的特权端口,普通用户无权限绑定,若服务未用root权限启动会启动失败,导致端口无进程监听。
- 端口协议不匹配:若102端口对应的是UDP服务,PowerShell的
Test-NetConnection命令默认仅检测TCP连通性,会返回端口不通的误报结果。
解决方案
步骤1:放行Ubuntu系统内部防火墙规则
- 先验证防火墙状态,执行命令:
sudo ufw status- 若防火墙处于active状态,执行命令放行OpenVPN网段访问102端口:
sudo ufw allow in on tun0 from 10.8.0.0/24 to any port 102(若你的OpenVPN虚拟网卡名不是tun0,替换为实际网卡名即可) - 若未使用ufw而是原生iptables,执行命令添加规则:
sudo iptables -I INPUT -i tun0 -s 10.8.0.0/24 -p tcp --dport 102 -j ACCEPT,执行后保存iptables规则避免重启失效。
- 若防火墙处于active状态,执行命令放行OpenVPN网段访问102端口:
步骤2:验证端口监听状态
- 执行命令查看102端口监听情况:
sudo ss -tulnp | grep :102- 若输出中监听地址为
127.0.0.1:102,修改对应服务的配置文件,将监听地址改为0.0.0.0(所有网卡)或指定为10.8.0.1,修改完成后重启对应服务。 - 若执行命令无任何输出,确认服务是否正常启动,启动该服务时需使用root权限(前缀加sudo)才能绑定102特权端口。
- 若输出中监听地址为
步骤3:协议匹配验证
若你要访问的102端口为UDP服务,在Windows客户端使用UDP专用工具检测连通性即可,Test-NetConnection的TCP检测结果不生效。
所有配置完成后,先在Ubuntu实例本地执行telnet 10.8.0.1 102验证本地连通性,确认正常后再到Windows客户端执行Test-NetConnection 10.8.0.1 -Port 102复测即可。
内容的提问来源于stack exchange,提问作者Ishwar Venugopal
相关产品推荐
相关产品推荐

