在你的内网网关(通常是路由器或防火墙)上设置一个“端口转发”(Port Forwarding)规则,当互联网上的用户访问你的公网IP的某个特定端口时,路由器会将这个请求转发到内网中指定IP地址和端口的设备(你的网站服务器)上。

(图片来源网络,侵删)
⚠️ 重要前提与安全警告
在开始之前,你必须了解并接受以下风险:
- 安全风险极高: 你的网站将直接暴露在互联网上,会持续受到各种扫描、攻击(如暴力破解、DDoS、注入攻击等)。一个不安全的网站会成为黑客入侵你整个内网的跳板。
- 动态IP问题: 大多数家庭宽带运营商分配的是动态公网IP,这意味着它会不定期变化,一旦IP变化,你的网站地址就失效了。
- 端口限制: 很多网络运营商(ISP)会封锁常见的端口(如80, 443),导致外部无法访问。
- 违反服务条款: 一些家庭宽带的用户协议不允许提供公共服务,可能会被运营商警告或封停。
端口转发 (最直接,但风险自负)
这是最传统的方法,适用于你有固定公网IP(或使用DDNS)且对网络有一定了解的情况。
准备工作
-
确定内网服务器的信息:
- 内网IP地址: 你网站运行设备的局域网IP(
168.1.10),在Windows上用ipconfig查看,在Linux/macOS上用ifconfig或ip addr查看。 - 端口号: 你网站服务监听的端口(
80for HTTP,443for HTTPS,8080for a custom port)。
- 内网IP地址: 你网站运行设备的局域网IP(
-
获取你的公网IP地址:
(图片来源网络,侵删)- 在浏览器中搜索“我的IP”或访问
ip.sb、whatismyip.com等网站,即可看到你当前的公网IP。
- 在浏览器中搜索“我的IP”或访问
-
配置DDNS (如果IP是动态的 - 强烈推荐):
- 由于IP会变,你需要一个动态域名解析服务,它会自动将一个固定的域名(如
myhome.ddns.net)指向你当前变化的公网IP。 - 常用DDNS服务商: No-IP, Dynu, DuckDNS (免费), 路由器厂商自带的服务等。
- 设置步骤: a. 在DDNS服务商网站注册账号。 b. 在你的路由器或电脑上安装DDNS客户端,并输入你的账号信息。 c. 客户端会定期检查你的公网IP,并在变化时自动更新到DDNS服务器。
- 由于IP会变,你需要一个动态域名解析服务,它会自动将一个固定的域名(如
操作步骤 (以路由器为例)
-
登录路由器管理后台: 在浏览器中输入路由器的管理地址(通常是
168.1.1或168.0.1),输入管理员账号密码。 -
找到端口转发/虚拟服务器设置:
- 这个功能在不同品牌路由器中的名称可能不同,常见名称有:
端口转发(Port Forwarding)虚拟服务器(Virtual Server)NAT转发(NAT Forwarding)应用与游戏(Applications & Gaming)
- 这个功能在不同品牌路由器中的名称可能不同,常见名称有:
-
添加转发规则:
(图片来源网络,侵删)- 服务/应用名称: 自定义一个名字,如 "My Web Server"。
- 外部端口/公网端口: 你希望外部访问的端口。建议使用非标准端口(如
8080,8888)来避免被扫描和干扰,如果必须用80/443,请确保防火墙配置严密。 - 内部端口/私有端口: 你内网服务器实际监听的端口(
80)。 - 内部IP地址/服务器IP: 你在第一步中确定的内网服务器IP(
168.1.10)。 - 协议: 通常选择
TCP,如果网站同时支持HTTP和HTTPS,或者使用WebSocket,可能需要同时添加TCP和UDP规则。 - 启用: 勾选以激活该规则。
-
保存并重启路由器: 保存设置后,路由器可能会重启使配置生效。
-
测试访问:
- 如果设置了DDNS,访问
http://你的DDNS域名:外部端口(http://myhome.ddns.net:8080)。 - 如果直接用公网IP,访问
http://你的公网IP:外部端口(http://123.45.67.89:8080)。
- 如果设置了DDNS,访问
使用内网穿透工具 (更安全、更简单、推荐)
内网穿透工具可以让你无需配置路由器,也无需暴露内网设备,它在你的服务器和公网之间建立一个安全的“隧道”。
工作原理
你在内网服务器上运行一个客户端,这个客户端连接到服务商的公网服务器,然后你通过服务商提供的域名访问,请求会通过隧道被安全地转发到你的内网客户端,再到达你的网站。
常用工具推荐
-
frp (Fast Reverse Proxy) - 开源免费,功能强大
- 优点: 完全免费、高度可定制、支持多种协议(HTTP, HTTPS, TCP, UDP等)、性能好。
- 缺点: 需要自己有一台有公网IP的服务器来运行服务端,或者使用frp提供的免费服务(有流量和功能限制)。
- 文档: https://gofrp.org/docs/
-
Ngrok - 非常流行,适合快速测试
- 优点: 开箱即用,无需配置,免费版方便快捷。
- 缺点: 免费版会随机分配域名,且无法自定义子域名,有带宽和在线时间限制,付费版功能强大。
- 官网: https://ngrok.com/
-
花生壳 (Peanut Shell) - 老牌商业服务
- 优点: 提供内网穿透和DDNS一体化服务,有中文界面,对新手友好。
- 缺点: 免费版功能有限,付费版价格相对较高。
- 官网: https://hsk.oray.com/
以Ngrok为例的简单操作 (最快上手)
- 注册账号: 访问 ngrok.com 注册一个免费账号。
- 下载Ngrok: 下载适合你操作系统的版本。
- 获取Authtoken: 登录Ngrok官网,在账户页面找到你的Authtoken。
- 配置并启动:
- 在命令行中,先进行身份验证:
ngrok config add-authtoken <你的Authtoken> - 启动隧道,将你的网站端口暴露出来:
ngrok http 80(假设你的网站运行在80端口)
- 在命令行中,先进行身份验证:
- 获取访问地址: 启动后,命令行会显示两个公网地址:
- Forwarding:
http://random-string.ngrok.io->http://127.0.0.1:80 - Forwarding:
https://random-string.ngrok.io->http://127.0.0.1:80 - 现在任何人都可以通过
https://random-string.ngrok.io访问你的内网网站了。
- Forwarding:
安全加固措施 (无论用哪种方法都必须做)
- 使用强密码: 网站后台、数据库、服务器SSH等所有密码都必须是复杂且唯一的。
- 及时更新: 保持你的网站程序(如WordPress)、服务器操作系统、所用的软件(如Nginx, Apache)都是最新版本,以修复已知漏洞。
- 配置防火墙:
- 系统防火墙: 只开放必要的端口(如80, 443),关闭所有其他端口。
- 应用防火墙: 如果使用Nginx,可以配置
fail2ban来防止暴力破解。
- 使用HTTPS: 即使是内网网站,也强烈建议配置SSL证书(可以使用Let's Encrypt免费获取),启用HTTPS,这可以加密数据传输,防止中间人攻击。
- 最小权限原则: 网站程序运行的用户不要使用
root或Administrator等最高权限账户。 - 定期备份: 定期备份你的网站数据和数据库,以防万一被攻击或数据损坏。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 端口转发 | 直接、免费(无额外成本)、性能高 | 安全风险高、IP动态需DDNS、配置复杂、可能被运营商封禁 | 有固定公网IP、对网络熟悉、愿意承担风险、用于临时测试或内部工具 |
| 内网穿透 | 安全(无需暴露内网IP)、无需改路由器、有免费方案 | 依赖第三方服务(可能收费或限制)、多了一层转发可能影响性能 | 强烈推荐给绝大多数用户,特别是个人开发者、临时项目、对安全有要求的场景 |
对于绝大多数个人用户和小型项目,我强烈推荐使用内网穿透工具(如frp或Ngrok),因为它更安全、更简单,且能很好地解决动态IP的问题。 如果你只是想在本地电脑上临时给朋友展示一个项目,Ngrok是最佳选择,如果你想长期运行一个个人博客或项目,frp是更强大、更可控的选择。
