跳到主要内容

外网访问家庭内网服务

不是详细教程,只提供一些思路。

初级玩法

可以到一些支持DDNS的服务商了解,如花生壳 有些服务商会提供一些多级域名进行动态公网ip绑定。

高级玩法

自己注册域名然后利用分配到的公网ipv4/ipv6进行动态解析(DDNS),不过目前已经比较难获取到ipv4的公网ip了。ipv6的获取相对简单,具体获取方式可自行搜索了解。 目前大部分设备已经支持ipv6访问,坐标广州,亲测移动和电信手机网络可以访问。

  1. 注册一个属于自己的域名
  2. 把域名挂到一个支持接口修改解析的DNS服务商上。如阿里、dnspod等
  3. 光猫开启ipv6支持,一个支持ipv6的路由器(需要注意某些路由器有ipv6防火墙,需要关闭或设置允许规则),路由器桥接光猫进行拨号获取ipv6地址。
  4. 给需要被外网的设备设置一个软件或脚本进行定时设置最新ip解析到域名,就可以在外网访问到该设备了。
  5. 我是使用了一个dnspod的脚本进行这一步的。
  6. 如果一切顺利的话,其实经过上面的几步就能正常访问了。
  7. 但是一般不会那么顺利,会遇到一些问题
  8. 不是所有设备都方便安装DDNS软件进行动态解析
  9. 有些设备虽然可以设置DDNS,但是需要进行侵入式操作,而且这些操作可能在设备重启后失效
  10. 可能要访问的设备不只有一个,就需要多台设备进行DDNS

下面的方法经过多次尝试,算是比较简单的解决了上面遇到的问题。之前有试过nginx,但效果不好,路径转发异常,可能是我不会配置。

  1. 找一台设备专门用来做DDNS
  2. 在这台设备上部署frp服务进行转发请求到内网其它设备上(frp一般是用来做内网穿透的,在内网穿透的情况下需要一台公网服务器进行流量转发,我这个方案不需要),frps和frpc都在这台设备上进行本机数据交换
  3. 设置一个三级域名解析如 f.abc.com用于frps设置
  4. 再设置一个上一步三级域名对应的四级泛域名解析,*.f.abc.com用于frpc设置
  5. 然后将设备的ipv6通过DDNS解析到三级域名和四级泛域名上
  6. 在frpc的配置上设置子域名对应的内网服务即可,如设置nas.f.abc.com到内网192.168.1.2的80端口上,https的服务设置443端口