如何从外部网络轻松访问无公网IP的Ubuntu 22.04服务器?
无公网IP/IPv6环境下远程访问Ubuntu 22.04的解决方案
由于你没有公网IP且ISP不支持IPv6,无法直接获取公网IP,内网穿透是唯一可行的途径。以下是两种适合新手的分步实现方案:
方案一:FRP(开源可控,需自备公网VPS)
FRP是一款开源的内网穿透工具,需要一台带公网IP的廉价VPS作为中转服务器,适合长期稳定使用。
服务端(VPS,以Ubuntu系统为例)操作
- 下载并解压FRP包:
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz tar -zxvf frp_0.51.3_linux_amd64.tar.gz cd frp_0.51.3_linux_amd64 - 编辑服务端配置文件
frps.ini:[common] bind_port = 7000 # FRP监听端口,需在VPS防火墙开放 token = your_strong_token_here # 设置自定义令牌,客户端需和此一致 - 配置开机自启:
创建systemd服务文件:
粘贴以下内容(替换sudo nano /etc/systemd/system/frps.service/path/to/frp为实际FRP目录路径):
启动并启用服务:[Unit] Description=FRP Server After=network.target [Service] Type=simple ExecStart=/path/to/frp/frps -c /path/to/frp/frps.ini Restart=on-failure [Install] WantedBy=multi-user.targetsudo systemctl daemon-reload sudo systemctl start frps sudo systemctl enable frps - 开放VPS防火墙端口:
sudo ufw allow 7000/tcp # 额外开放你要穿透的服务端口,比如SSH的6000(对应客户端配置的remote_port) sudo ufw allow 6000/tcp sudo ufw reload
客户端(你的Ubuntu笔记本)操作
- 同样下载并解压FRP包:
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz tar -zxvf frp_0.51.3_linux_amd64.tar.gz cd frp_0.51.3_linux_amd64 - 编辑客户端配置文件
frpc.ini(以穿透SSH为例):
如果要穿透网页服务(本地80端口),添加以下段:[common] server_addr = 你的VPS公网IP server_port = 7000 token = your_strong_token_here # 和服务端令牌一致 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 # 本地SSH端口 remote_port = 6000 # VPS上映射的端口[web] type = tcp local_ip = 127.0.0.1 local_port = 80 remote_port = 8080 - 配置开机自启:
创建systemd服务文件:
粘贴以下内容(替换路径):sudo nano /etc/systemd/system/frpc.service
启动并启用服务:[Unit] Description=FRP Client After=network.target [Service] Type=simple ExecStart=/path/to/frp/frpc -c /path/to/frp/frpc.ini Restart=on-failure [Install] WantedBy=multi-user.targetsudo systemctl daemon-reload sudo systemctl start frpc sudo systemctl enable frpc - 测试访问:
- SSH远程:
ssh 你的笔记本用户名@VPS公网IP -p 6000 - 网页访问:
http://VPS公网IP:8080
- SSH远程:
方案二:免费内网穿透服务(无需VPS,适合临时使用)
如果不想租VPS,可以用免费的Ngrok服务实现临时远程访问:
操作步骤
- 安装Ngrok:
wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz tar -zxvf ngrok-v3-stable-linux-amd64.tgz sudo mv ngrok /usr/local/bin/ - 配置认证令牌(需在Ngrok官网注册获取,仅需邮箱):
ngrok config add-authtoken 你的认证令牌 - 启动穿透:
- 穿透SSH:
ngrok tcp 22
启动后终端会显示类似tcp://0.tcp.ngrok.io:12345的地址,外部访问用ssh 你的用户名@0.tcp.ngrok.io -p 12345 - 穿透网页:
ngrok http 80
生成HTTPS公网地址,直接在浏览器访问即可
- 穿透SSH:
注意:免费Ngrok的公网地址每次重启都会变化,若需固定地址需付费升级。
基础准备工作
确保你的Ubuntu笔记本防火墙开放了对应服务端口:
sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw reload
内容的提问来源于stack exchange,提问作者JBody
相关产品推荐
相关产品推荐

