You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Ubuntu测试服务器通过公网IP暴露至外部网络以实现远程访问?

如何将Ubuntu测试服务器通过公网IP暴露至外部网络以实现远程访问?

先给你明确解答那个公网IP的疑问:你查到的70.108.1.98确实是你家路由器的公网IP——所有连接到这个局域网的设备(你的Ubuntu服务器、连WiFi的手机、家里的其他电脑)对外访问时,都会通过路由器的NAT(网络地址转换)功能,统一使用这个公网IP。所以你用手机连WiFi查IP的话,得到的肯定是同一个地址,路由器的核心作用就是把外部请求转发到对应的内网设备,同时把内网设备的对外请求包装成公网IP的请求。

你的初始思路完全正确!要实现公网访问https://70.108.1.98:4321到你的Ubuntu服务器,需要完成以下几步,我给你细化一下操作:

一、先给Ubuntu服务器固定内网IP

这一步很关键,不然服务器重启或者路由器重启后,内网IP可能会变,之前的转发规则就失效了。有两种简单的方式:

  • 路由器端绑定(推荐):登录路由器管理界面(一般是浏览器访问192.168.1.1192.168.0.1,看路由器型号),找到「DHCP静态分配」或「地址保留」选项,把Ubuntu服务器的MAC地址和它当前的内网IP(192.168.1.1)绑定,以后服务器每次开机都会拿到这个固定IP。
  • Ubuntu系统内设置:编辑网络配置文件(比如/etc/netplan/00-installer-config.yaml,不同版本路径可能不同),设置静态IP、网关和DNS,保存后执行sudo netplan apply生效。

二、配置路由器的端口转发

这是让外部请求找到你的服务器的核心步骤:

  1. 登录路由器管理界面,找到「端口转发」「虚拟服务器」这类选项(不同品牌路由器叫法不同,比如小米叫「端口转发」,华硕叫「虚拟服务器」)。
  2. 添加一条转发规则:
    • 外部端口:填4321
    • 内部端口:填4321(如果你的应用正好监听这个端口的话,要是应用监听的是其他端口,就填对应端口)
    • 内部IP:填你刚才固定的Ubuntu服务器内网IP
    • 协议:选TCP(Web应用一般只用TCP,要是有UDP需求再勾选)
  3. 保存配置,路由器会自动重启相关服务。

三、确保路由器防火墙放行端口

大部分路由器在设置端口转发时会自动放行对应端口的外部访问,但保险起见,你可以去路由器的「防火墙设置」里检查:有没有禁止外部访问4321端口的规则,要是有的话,手动添加一条放行规则。

四、Ubuntu服务器端的配置

  1. 确认应用监听范围:确保你的应用不是只监听localhost127.0.0.1),而是监听所有网卡(0.0.0.0)。可以用命令检查:
    ss -tulpn | grep 4321
    
    要是输出里的地址是127.0.0.1,那外部设备访问不了,得修改应用的配置文件,把监听地址改成0.0.0.0
  2. 配置Ubuntu防火墙(ufw):Ubuntu默认的防火墙ufw如果开启的话,需要放行4321端口:
    sudo ufw allow 4321/tcp
    sudo ufw reload
    
    要是你之前没开ufw,建议开启来提升服务器安全性:sudo ufw enable

测试与额外注意事项

  • 测试方法:不要用家里局域网的设备测试,最好用手机开流量(不要连WiFi)访问https://你的公网IP:4321,因为有些路由器不支持「内网访问公网IP」的跳转,用手机流量能真实模拟外部网络的访问情况。
  • 动态公网IP问题:大部分家庭宽带的公网IP是动态的,过一段时间会自动更换。如果不想每次都查IP,可以用动态DNS(DDNS)服务,把一个免费/付费域名绑定到你的动态公网IP,以后用域名访问即可。
  • 安全提醒:把端口暴露到公网有一定风险,建议:
    • 尽量不用4321这类容易被扫描的端口,换一个非标准的高位端口(比如12345
    • 给你的Web应用添加登录验证、HTTPS加密(比如用免费证书实现)
    • 定期更新Ubuntu系统和应用的安全补丁:sudo apt update && sudo apt upgrade

备注:内容来源于stack exchange,提问作者pstatix

火山引擎 最新活动