外网访问部署在内网计算机上的服务

或出于开发测试的便利、或出于数据安全的考虑,经常需要在日常的电脑上部署一些服务,网站、NAS、监控等供其他机器访问,局域网内可以直接访问,然而一般情况下,电信是不会主动给你分配公网IP的,也就是说必须使用类似 frp、ngrok 之类的内网穿透工具来暴露电脑上服务,性能堪忧不再使用。现在我们就来解决这个问题...

# 公网IP

或出于开发测试的便利、或出于数据安全的考虑,经常需要在日常的电脑上部署一些服务,网站、NAS、监控等供其他机器访问,局域网内可以直接访问,然而一般情况下,电信是不会主动给你分配公网IP的,也就是说必须使用类似 frp、ngrok 之类的内网穿透工具来暴露电脑上服务,性能堪忧不再使用。所以为了能在外网访问内网的服务,首先检查是否有公网IP

方法一

访问 http://www.net.cn/static/customercare/yourip.asp

若是只出现一个IP,则意味着你已经拥有了一个公网IP;若是出现多余一个IP,则意味着你还在大内网。

方法二

将你路由器(最外面那个,光猫或者负责做拨号的)看到的 wanip 和外面的 ip 检查网站(例如 ipip.net )看到的 ip 对比,是的话一致的话就是外网,不是的话就不是。

私有地址

  • A类地址:10.0.0.0 - 10.255.255.255
  • B类地址:172.16.0.0 - 172.31.255.255
  • C类地址:192.168.0.0 - 192.168.255.255

如果没有公网IP的话可以打电话给 10000 申请,心平气和好好说话,不出意外的话当天就可以获得一个动态公网IP。如果不行的话该怼就怼、该投诉就投诉😏

# 光猫配置

获取光猫的超级管理员密码,一般都是 telecomadmin/nE7jA%5m,如果不是的话可以试试破解密码

默认情况下,连接光猫的路由器是处于光猫的内网里面的,想要将路由器暴露给公网有两个方法。

方法一

使用 DMZ 将所有端口转发给路由器,路由器依旧保持原来的 动态IP 连接类型

虚拟非军事区(Virtual DMZ)让您得以将一部计算机公开显露在互联网上,使所有上传的封包全数转向您指定的计算机。这对您在运行一些使用非特定内传通信端口(incoming port)的应用程序时会相当有用。请谨慎使用。

登入光猫后台管理界面:应用→高级NAT设置→DMZ设置,启用DMZ主机绑定路由器地址。

方法二

光猫改桥接,路由器 PPPoE 拨号

这里有两种改桥接的方法,第一种是直接联系你当地的电信运营商,拨打10000号,让师傅远程帮你修改,然后你直接重启,在路由器上 PPPoE 拨号就可以。另一种是需要一定的动手能力自己改:

登入光猫后台管理界面:网络→宽带设置

下拉连接名称,选择以41结尾的连接,将模式从 Router 修改为 Bridge,点击确定重启即可。如果绑定端口时提示某一个端口已被占用,建议查看连接第一个选项卡连接名称里是否有其他连接已经绑定了 LAN 口或者 SSID,解除即可。

其他

光猫提供的 Wi-Fi 功能性能辣鸡,安全起见可以关掉。不过注意一点,光猫关掉 Wi-Fi 并且改桥接之后,就只能通过网线连接光猫了🤦。

# 路由器配置

端口转发

出于安全考虑,暴露电脑的服务的时候不应该使用 DMZ 而只需要配置端口转发暴露指定端口就足够了。

意外的是,电信只是屏蔽了80端口,却没有屏蔽443端口😬

virtual-server.png

DDNS

由于电信分配的是动态IP,每次重新拨号的时候都会重新分配IP,所以就需要配置动态 DNS。例如如图配置以后,其他域名只需要 CNAME 到 keng42-ddns.asuscomm.com 就可以了。

ddns.png

测试

至此,已将某个计算机的443端口暴露给 大中华局域网 互联网了,检测远程主机上的某个端口是否开启:

telnet my-public-ip.keng42.com 443