新浪新闻客户端

通过公网ipv6访问家中内网服务

通过公网ipv6访问家中内网服务
2024年03月28日 07:47 新浪网 作者 什么值得买

  作者:jac0b2

  ## 一、光猫改桥接由路由器PPPoE拨号

  如果你刚好用的跟我一样是移动光猫中兴F663nv3a,可以参考我这篇文章移动光猫中兴F663nv3a改桥接_路由器_什么值得买 (smzdm.com),如果不是请自行百度你光猫机型的更改桥接方法,或联系运营商进行修改设置。

  ## 二、openwrt开启ipv6

  ### 1. 开启ipv6设置原理简介:

  现在营运商宽带都已经支持ipv6,但因ipv6还未完全普及,很多网站和软件还不支持ipv6,同时支持ipv4和ipv6,会让网络变复杂,所以一般路由器默认设置没有开启ipv6,需要我们自行进行设置,由于在ipv4下ip地址不够使用,我们内网还需通过nat转发来上网,由路由器dhcp服务来分配管理内网设备ip,而在ipv6下是可以不用nat转发的,每个设备都可以有自己独立公网ip,而公网ip的分配不是由我们自己的路由器进行分配的,而是运营商分配的,所以需要将路由器ipv6的dhcp服务模式设置为中继模式,由运营商的dhcp服务为我们的内网设备分配ip,不能设置成dhcp服务器模式,不然内网设备获取到的ip是自己路由器dhcp服务分配的局域网ipv6 ip,这样我们的内网设备就无法获取到公网ip。

  原理简单介绍完,因个人在这方面只是小白,如果说错了,还请大家指正。因为我在开始操作过程中不知道原理,按照网上教程操作时因为路由器系统版本不同,界面不一样,不知道具体要修改哪些设置,一直无法正常开启ipv6,直到了解原理才设置成功,所以觉得有必要斗胆简单介绍一下原理。

  ### 2. openwrt设置开启ipv6

  居于上面所述,openwrt需要把wan和wan6分开设置,wan只负责PPPoE拨号,关闭其dhcp服务,lan的dhcp服务为内网设备分配管理ipv4 ip,wan6以dhcpv6客户端模式通过wan获取公网ipv6地址,并由其负责内网设备ipv6 ip管理,因为lan和wan6都不关闭dhcp服务,怎样才能让它们分开负责管理ipv4和ipv6的ip?只要将wan6的dhcp设置为ipv6指定主接口即可,而我们还需要让内网设备获取公网ipv6的ip,所以需要将wan6的dhcp服务模式设置为中继模式,这样内网设备就可以分配到公网ipv6的ip地址。

  具体openwrt设置如下:

  wan口PPPoE拨号:

  关闭wan口的dhcp服务:

  lan--->dhcp服务器--->ipv6设置 为中继模式:

  wan6--->dhcpv6客户端--->设备@wan:

  wan6--->dhcp服务器--->ipv6设置指定的主接口,中继模式:

  设置完成,重启所有网络接口后,可以访问[IPv6 测试](https://testipv6.cn/)进行测试是否成功开启。

  ## 三、ddns go+cloudflare+socat+nginx proxy manager访问内网服务

  因为安全考虑,不建议直接允许所有ipv6端口数据入站,对于我们这种新手还是建议用socat或者lucky来开启指定端口,这样使用起来也比较简单方便,只开启少数指定端口也相对安全些。

  我个人选择安装luci-app-socat来管理开启指定ipv6端口,通过socat将数据转发到内网相应服务,整体方案是通过ddns go+cloudflare+socat+nginx proxy manager实现,动态域名解析提供商选择cloudflare是出于几个因素考量的无奈选择:

  1. 我家的移动宽带没有ipv4公网ip,且封禁了家庭宽带80、443、8443等常用网络服务端口,需要使用cf的端口回源来隐藏端口,这样就不用记忆所有服务的端口,国内动态域名解析服务商可以用隐性url转发但都需要备案,cf的解决方案有个缺点就是需要开启cdn代理,网速受限于cf的访问速度,无法跑满带宽。可能有人要说那还不如用frp之类的内网穿透,如果你的vps速度快,流量足,确实不如用frp之类的内网穿透方案,可是我的vps速度垃圾,流量怕不够使,所以用cf cdn可以蹭它的免费流量,也可以兼顾ipv6直连。

  2. cf方案可以同时支持ipv4和ipv6网络的访问,因为一般网络没有开启ipv6,在单位电脑需要访问家里的服务时ipv6是无法连通的,通过cf cdn就可以ipv4转ipv6访问到家中服务。

  3. 套一层cf cdn可以隐藏真实地址,家中网络更加安全。

  4. 对大部分服务只要开启一个ipv6端口转发到nginx反向代理,对个别有大带宽需求的服务再另外开启端口进行直连,尽可能减少开启ipv6端口的数量,降低安全风险。

  ### 1. 动态域名解析设置

  1.1. 在cf域名主页下点左侧dns菜单,新建一个dns记录,类型选AAAA,名称写子域名ddns,内容填写一个符合ipv6规则ip地址,例如::1,代理不要打开,然后保存。

  1.2. 在cf域名主页右下角打开获取您的api令牌--->创建令牌,选择编辑区域DNS,设置如下:

  将生成的令牌字符串复制保存备用。

  1.3. 进入openwrt ddns-go管理页面,服务商选择cloudflare,token填写上面复制下来的令牌字符串,ipv4是否启用选项去掉勾,ipv6是否启用打勾,获取ip方式选通过网卡获取,下面接口选项选pppoe-wan接口,Domains填写你的子域名ddns.example.com,然后保存,完成ddns设置。

  1.4. cf新建dns记录,类型选cname,名称*,内容ddns.example.com,代理选择开启,然后保存。

  1.5. cf域名主页打开左侧规则下Origin Rules菜单--->创建规则,规则名称:端口回源,也可以去其他名称,下面选项设置如下图,其中不等于后面的域名是不进行端口回源的子域名,这样设置是为了不让这些开启cf cdn的指定域名的端口被这个规则给自动修改端口,因为要另作他用,最后的2053是路由器开启的ipv6端口,socat将ipv6 2053端口数据转发到内网npm的ipv4 60443端口,这样npm每增加一个子域名代理就不用在cf上再设置子域名,方便管理。这里回源端口的选择如果要https访问服务是有限制的,不能随便选择端口,因为cf支持https的端口只有部分指定端口才可以,其中2053就是其中一个,有兴趣可以自行百度或到官网了解相关信息。

  ### 2. socat开启ipv6端口转发

  socat新建一个端口转发,并保存应用,目标地址选择npm服务器ip,目标端口输入npm https代理端口,不用https可以填http代理端口,socat会自行设置防火墙规则,设置如下:

  ### 3. nginx proxy manager设置代理服务

  在npm添加代理服务,把需要外网访问的服务添加进去,一个子域名对应一个服务,设置完成就可以用子域名尝试访问服务了。具体设置自行百度,网上教程很多,不再赘述。

  ### 4. 设置直连服务

  上面设置后访问内网服务都要通过cf cdn,不是直连,速度较慢,对需要大带宽的服务可以另行开启端口,例如要直连alist,可以在socat添加端口转发,设置如下:

  设置好后,可以通过访问http://ddns.example.com:5244 网址来访问alist服务,如果要使用https访问就需要在alist设置开启https,因为是直连服务,没有通过npm反向代理,https就要在服务应用上开启才行。直连访问是通过ipv6直连路由器再通过socat转发到内网服务,需要外网设备的网络支持ipv6,也有其使用局限性,而上面通过cf cdn访问是支持ipv4和ipv6访问的,局限性是速度比直连慢,其他需要直连的服务如法炮制,访问地址只要把端口号换成对应端口即可。

特别声明:以上文章内容仅代表作者本人观点,不代表新浪网观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与新浪网联系。
来自于:北京
权利保护声明页/Notice to Right Holders

举报邮箱:jubao@vip.sina.com

Copyright © 1996-2024 SINA Corporation

All Rights Reserved 新浪公司 版权所有