群辉 frpc 域名 群晖3322域名

用小米路由器轻松实现端口映射

当我尝试在家搭建私人网盘nextcloud时,遇到一个难题:如何随时随地访问家里的服务器 ?业界有几种解决方案:

option1: 租用公网服务器,把应用部署在公网服务器上。优点:安全稳定,不需要维护设备;缺点:需要定期支付租赁费用。

option2: 应用部署在家用服务器上,依赖“内网穿透”(如frps/frpc)访问家庭网络。优点:适用家庭宽带没有公网IP的场景;缺点:需要租用公网服务器做“代理”,带宽受公网服务器限制。

option3: 应用部署在家用服务器上,用“端口映射”访问家庭网络。优点:带宽大,且无需租赁服务器;缺点:依赖运营商临时公网IP。

我尝试过option1和option2,出于成本考虑我选择性价比高的option3,毕竟长期租用服务器价格不菲,并且带宽越大费用也越高。本文是我个人的经验总结,供大家参考。

1 前提

开始之前,请确认是否满足下列条件,缺一不可。

  • 需要宽带拨号账号和密码;
  • 需要确认宽带使用公网IP;
  • 需要路由器有DDNS功能;
  • 需要获取光猫超级权限。
  • 需要宽带拨号账号和密码

    家庭宽带采用拨号上网,即PPPOE上网。通常宽带上门安装时,运营商工作人员会设置好光猫拨号上网,并提供用户名密码。如果不记得用户名密码,可拨打运营商热线电话询问。

    确认宽带是否有公网IP

    电信宽带往往会有动态公网IP(ipv4),而移动宽带通常没有动态公网IP,需要自己确认清楚。有一种方法可供确认:

    1)查询家用网络对外IP地址:

    2)登录光猫查看WAN口IP地址:

    以电信光猫为例,光猫背后往往有IP地址、账号、密码,如下图:

    浏览器地址栏访问,使用账号useradmin和密码登录,查询WAN口IP地址。

    如果上述两个IP一致,表示家用宽使有公网IP。否则,可以尝试拨打运营商热线电话要求提供动态公网IP。

    确认路由器DDNS功能

    我使用的是小米AC2100,登录路由器管理地址选择“高级设置”会看到“DDNS”,这表示路由器具有DDNS(动态域名服务)功能。

    获取光猫的超级权限

    光猫铭牌上的useradmin不是超级账号,telecomadmin才是超级账号,这里需要获得telecomadmin账号的密码。由于我的光猫年代久远(年),获取密码很简单,可以参考豆瓣文章《烽火HG261GS破解超级用户密码》。其他型号如果百度不到就求助万能的淘宝吧。

    2 开始配置

    配置光猫为桥接模式

    浏览器登录光猫IP ,输入超级账号telecomadmin,以及密码。

    进入“网络”——“宽带设置”——“Internet连接”,连接名称选择“4_INETERNET_B_VID_41”,连接类型选择“Bridge”,保存配置。注意,修改光猫配置会导致暂时断网。

    配置路由器PPOE上网

    浏览器登录小米路由器管理IP地址(我已改为),“常用设置”——“上网设置”,上网方式改为“PPPoE”,输入PPPoE拨号账号和密码,点击“应用”。

    查看“上网信息”——“外网状态”出现“拨号成功”,即表示路由器拨号成功,网络已恢复。做到这一步,表示已完成了重要的一半。

    申请免费域名

    我使用“公云(www.pubyun.com)”申请免费域名,注册登录后选择“动态域名”——“创建域名”,输入域名前缀,这里就填你想要的域名名字;仅勾选.f3322.net这个免费域名后缀。

    申请成功后通过“会员中心”可查看自己的域名:

    配置路由器DDNS

    浏览器登录小米路由器管理IP地址(),“常用设置”——“高级设置”——“DDNS”——“添加服务”。这里的“服务提供商”可以自由选择,因为我的免费域名是在“公云”申请的,因此选择“公云”。当状态显示“连接成功”,表示DDNS配置成功。

    打开windows CMD输入"ping 域名"测试域名解析,如果ping通,表示域名解析已生效,否则可以点击“手动更新”。

    配置端口转发

    浏览器登录小米路由器管理IP地址(),“常用设置”——“高级设置”——“端口转发”——“添加规则”,配置你想暴露出去的【名称、协议、外部端口、内部IP地址、内部端口】,除了和端口不能用,其他端口都可以配置。以我的配置test为例,协议选择“TCP和UDP”,外部端口“”,内部IP地址为“windows本机IP”,内部端口“”。

    3 测试

    启动windows本地测试服务

    我用了nodejs的一个简单命令行http服务器http-server(需要安装nodejs,http-server库)做测试,服务器监听本地IP地址的端口,如下所示:

    浏览器输入http://:测试http-server是否可访问,出现下面界面表示访问成功。

    测试端口映射

    浏览器输入“http://域名:”测试,出现下面界面表示端口映射成功!打开手机浏览器(关闭wifi,避免连上家里的局域网)访问“http://域名:”也能同样出现下面界面!这就是端口映射的魅力,即使不连接无线路由器,也能访问家里的服务。

    这是我搭建的nextcloud网盘界面,已经可以通过“域名:端口”的形式访问。

    4 结语

    尽管端口映射看起来很美好,但它仍然美中不足。最重要的一点是免费域名只能通过http访问,而不是https!http协议不会对数据进行加密,就好比你的数据在网络上传输是毫无防备的。


    关注我,订阅更多有趣的更新。

    原文链接:,转发请注明来源!