用小米路由器轻松实现端口映射(小米路由器怎么做端口映射

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

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

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

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

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

1 前提

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

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

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

    1.2 确认宽带是否有公网IP

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

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

    IP地址查询

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

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

    “光猫”铭牌

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

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

    1.3 确认路由器DDNS功能

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

    小米路由器webUI

    1.4 获取光猫的超级权限

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

    2 开始配置

    2.1 配置光猫为桥接模式

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

    光猫webUI

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

    光猫配置桥接模式

    2.2 配置路由器PPOE上网

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

    小米路由器webUI

    路由器设置PPPoE上网

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

    路由器拨号成功

    2.3 申请免费域名

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

    pubyun申请免费域名

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

    pubyun会员中心

    2.4 配置路由器DDNS

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

    DDNS配置

    DDNS配置成功

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

    域名解析测试

    2.5 配置端口转发

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

    端口转发配置

    3 测试

    3.1 启动windows本地测试服务

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

    启动测试程序http-server

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

    http-server访问测试

    3.2 测试端口映射

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

    端口映射测试

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

    访问nextcloud

    4 结语

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

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

    Published by

    风君子

    独自遨游何稽首 揭天掀地慰生平

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注