如何在谷歌云平台开放公网端口8888?Ubuntu 14虚拟机场景
解决GCP Ubuntu 14虚拟机8888端口无法开放的问题
我之前帮不少用户搞定过GCP端口开放的坑,你遇到的情况大概率是云平台防火墙规则细节没配对,或者虚拟机内部的防火墙挡了流量,咱们一步步来排查解决:
一、先排查GCP云平台的防火墙规则
这是最容易踩坑的地方,很多人创建规则时漏了关键配置:
- 方向要选 ingress(入站):毕竟是外部GPS设备往你的虚拟机发数据,别误选成egress(出站)
- 目标标签必须匹配虚拟机:给你的Ubuntu虚拟机打个专属标签(比如
gps-receiver),然后防火墙规则的「目标」选「指定目标标签」,填入这个标签——别选「所有实例」,有时候会因为VPC子网限制不生效 - 协议端口要准确:选择
tcp协议,端口填8888,千万不要写错成UDP或者其他端口号 - 源IP范围要合理:如果你的GPS设备有固定公网IP,就填那个IP;如果是动态IP,暂时填
0.0.0.0/0(后续可以再缩小范围提升安全性) - 优先级要高于默认拒绝规则:GCP默认拒绝规则优先级是65535,你的规则优先级设成1000这类数值就好,确保它先被执行
- 验证规则是否绑定到虚拟机:在GCP控制台「VPC网络」→「防火墙」里找到你的规则,查看「已应用的实例」列表,确认你的虚拟机在里面
二、检查Ubuntu 14虚拟机内部的防火墙
GCP开放端口后,虚拟机本地的防火墙也可能会拦截流量:
- 用ufw的情况:运行
sudo ufw status查看状态,如果是active,检查是否有允许8888端口的规则;没有的话执行sudo ufw allow 8888/tcp,然后重启ufw:sudo ufw reload - 用iptables的情况:运行
sudo iptables -L -n查看INPUT链,确认有没有ACCEPT tcp --dport 8888的规则;没有的话添加:sudo iptables -A INPUT -p tcp --dport 8888 -j ACCEPT,然后保存规则:sudo iptables-save > /etc/iptables/rules.v4
三、确认服务是否在监听8888端口
就算端口都开放了,如果你的GPS接收服务没在正确的网卡上监听,也收不到数据:
- 执行
sudo netstat -tulpn | grep 8888或者sudo ss -tulpn | grep 8888,查看输出里的监听地址:- 如果显示
0.0.0.0:8888或者:::8888,说明服务监听所有网卡,没问题 - 如果只有
127.0.0.1:8888,说明服务只监听本地回环,得修改服务配置,让它监听所有网卡(比如把配置里的绑定地址改成0.0.0.0)
- 如果显示
四、测试端口连通性
最后从外部验证一下:
- 用本地电脑执行
telnet <你的虚拟机公网IP> 8888,或者nc -zv <你的虚拟机公网IP> 8888 - 如果显示「Connected」或者「succeeded」,说明端口已经成功开放,GPS设备可以正常发数据了;如果还是不通,回到前面的步骤逐一排查
内容的提问来源于stack exchange,提问作者juan
相关产品推荐
相关产品推荐

