IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

2020-11-10 14:46:46 41点赞 351收藏 45评论

创作立场声明:分享一种在IPV6环境下远程访问家中服务的方法

背景:

 家中装有中国移动的宽带,提供公网IPV6,如果不好好利用怪可惜的,于是开启了漫漫折腾之路。折腾的目标,实现像公网IPV4一样,远程访问家中设备。分析IPV6远程访问的可行性,取决于一下几点:
 1. 家中服务器支持IPV6。影响的因素:网卡、系统。据查到的资料来看,对于网卡,自2012年以来的,网卡陆续支持IPV6,凡是最近5年以来的网卡,基本支持IPV6;系统:桌面类和服务类的主流系统均已支持,如win7/8/10,Ubuntu、Centos等Linux、群辉、Unraid、freenas等主流NAS系统
 2. 网络运营商支持IPV6。根据目前查到的资料,三大运营商的手机终端均支持IPV6。中国移动的宽带提供公网IPV6,可实现公网信息上下行连接。联通宽带,由于目前可以申请到动态的公网IPV4,推荐公网IPV4远程访问(IPV4的配置比IPV6简单太多了)。
 3. 设备终端支持IPV6。此处推荐使用手机作为访问的终端。目前,2018年以来发布的各大品牌主流旗舰级手机基本支持IPV6可。本文使用手机:某国产手机。
 4. 家中服务器的上级路由(主路由)需要支持公网IPV6(最近几年的中端以上的路由器基本支持),且对IPV6数据包的入站出站放行(关键)。本文使用的主路由系统为老毛子Padavan固件,需要通过合理配置开启IPV6的中继和转发,以及合理的防火墙配置,才能是家中局域网络具备完善的IPV6环境。

网络环境

 手机外网远程访问的IPV6数据 <---> 中国移动运营商提供的IPV6网关 <---> 家中主路由(老毛子Padavan固件)分发IPV6 <---> 旁路由(具有动态DDNS功能,虚拟在Unraid宿主系统中的OpenWrt旁路由系统)与域名绑定,转发IPV6数据 <---> 服务器提供的各种服务.

使用的设备信息

 主路由器:安装老毛子Padavan固件的极路由;
 旁路由:在Unraid Nas系统中虚拟的旁路由(Unraid中虚拟OPenwrt旁路由,可参考文章);
 服务器:安装在J3455主板的Unraid Nas系统,提供Web、相册、Jellyfin、私人网盘等服务;
 访问终端:某国产手机;
 个人域名:本文使用阿里云的域名;

正文

一. 老毛子Padavan固件开启IPV6及正确配置防火墙

 1. 首先确保光猫开启IPV6的转发。中国移动光猫的设置为:使用管理员账号登录,设置光猫为拨号桥接模式,光猫不拨号,选择IPV4/IPV6协议,如下图所示:

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

 2. 进入主路由的后台界面,找到IPV6配置,位于:高级设置 -> 外部网络 -> IPV6设置,按下图配置。为局域网开启IPV6分发,对局域网设备分配公网IPV6.

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

3. 配置IPV6防火墙,为个人域名或者服务器IPV6地址入站出站放行。(注意,此处可以将防火墙直接关闭,就可以不用配置下面的指令,但是会带来安全问题,直接将内网的设备暴露在外网中,及其不安全,建议按下面来配置!!!) 找打在防火墙规则(Emong's Qos)启动后执行,位于:高级设置 -> 自定义位置 -> 脚本 -> 在防火墙规则(Emong's Qos)启动后执行。 按下图所示的区域内加上必要的两句指令:

ip6tables -A FORWARD -d 你的域名.com -j ACCEPT
ip6tables -P OUTPUT ACCEPT

 可以不使用域名,直接家中服务器的公网IPV6地址:

ip6tables -A FORWARD -p tcp -m multiport -d 2000:xxxx::1000 -j ACCEPT

ip6tables -P OUTPUT ACCEPT

 只指定开放域名/公网IPV6地址的某几个端口:

ip6tables -A FORWARD -p tcp -m multiport --dport 8096,51413 -d 2000:xxxx::1000 -j ACCEPT

ip6tables -A FORWARD --dport 8096,51413 -d 你的域名.com -j ACCEPT

ip6tables -P OUTPUT ACCEPT

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

4. 点击"应用本页配置".

二. 旁路由OpenWrt安装动态DDNS插件及配置

 1. unraid nas系统安装Openwrt虚拟机,配置如下:可参考之前写过的文章

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

2. 打开OPenWrt后台界面,安装动态DDNS插件。位置为:系统 -> 软件包 -> 更新列表 -> 过滤器 搜索并安装以下几个插件:

wget openssl-util
ddns-scripts
luci-app-ddns
luci-i18n-ddns-zh-cn

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

3. 本文使用的阿里云域名,需要单独为动态DDNS插件安装一个补丁:ddns-scripts_aliyun。安装方式为:手动安装,如下图所示:

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

4. 配置动态DDNS:找到位置:服务 -> 动态DDNS,添加一个新配置,如下图所示.

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

5. 进入刚刚添加的配置,按下图所示配置。其中阿里得令牌用户名和密钥需要在阿里控制台创建子账号,然后创建一个AccessKey令牌,为令牌分配DDNS相关的权限(具体步骤在下一步)。

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

 6.1 登录阿里控制台 点击创建用户,按下图配置最后点击确定

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

6.2 点击进入刚刚配置好的子账号,分配权限:点击权限管理,在红色框内依次添加权限:

AliyunDNSReadOnlyAccessAliyunDNSFullAccess
AliyunPvtzFullAccess
AliyunPvtzReadOnlyAccess
AliyunDomainFullAccess

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

 6.3 添加权限之后,点击创建AccessKey, 然后记录下ID和对应的秘钥。

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

 7.1 为OPenWrt添加IPV6接口。其中,协议为“DHCPv6 客户端”,接口.

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

 7.2 进入刚刚创建的IPV6接口,按下图所示配置,最后添加保存。

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

 7.3 最后,配置效果如下:

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

 7.4 配置防火墙,如下图所示:

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

8 高级设置中,设置“IP 地址来源 [IPv6]”为“接口”,“接口”为OpenWrt接口的IPv6接口。

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

9 至此动态DDNS配置完成。点击保存并应用,然后启动刚刚创建的DDNS 直到出现PID线程值。

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

三. IPV6转发配置

 1. 打开win10命令控制行,输入 ssh root@IP地址(OPenWrt)进入OPenwrt的后台终端。输入指令:

vi /etc/init.d/autosocat

然后输入一下内容:其中,TCP6-LISTEN为监听IPV6的端口,TCP4为内网服务器的ipv4地址及对应的端口。这样就实现了IPV6的端口的数据包转发到了局域网IPV4对应的的设备。

#!/bin/sh /etc/rc.commonSTART=99
STOP=15

start() {

socat TCP6-LISTEN:1443,reuseaddr,fork TCP4:192.168.123.210:1443 &
socat TCP6-LISTEN:8096,reuseaddr,fork TCP4:192.168.123.210:8096 &

}

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

2. 保存配置:输入指令:“Shift "+":”, 待左下角出现输入提示行,然后输入:“wq”,点击回车。最后输入指令: "reboot",重启旁路由。

3. 检查开机启动项是否成功:出现“autosocat”项表示成功,检查是否已启用,如果没有启动,则点击启动

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

四. 测试

  手机连接4G,远程访问域名,成功访问远程路由的管理界面。

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

  远程访问域名加端口

IPV6公网远程访问家中设备,Padavan主路由加OW旁路由加Unraid

至此 实现了基于IPV6的远程访问及本地转发到ipv4的设备。

我是江枫雨,如果觉得有用,多多点赞收藏~

展开 收起
45评论

  • 精彩
  • 最新
  • openwrt这个厉害了,找了好久都没找到类似的教程,感谢楼主,已打赏

    校验提示文案

    提交
    谢谢,谢谢 [傻笑]

    校验提示文案

    提交
    收起所有回复
  • 爱快主路,OP旁路,IPV6公网转发,跟楼主一样设置就可以搞定,感谢感谢!

    校验提示文案

    提交
    祝贺,分享教程最大的快乐是看到和他人一起分享 [棒棒哒]

    校验提示文案

    提交
    有没有啥IPv4访问IPv6的方法,公司网络是IPv4 [大囧]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 干货好文,打赏一波走起 [献花]

    校验提示文案

    提交
    谢谢打赏,哈哈哈 [买买买]

    校验提示文案

    提交
    收起所有回复
  • 最后一步ipv6发包ipv4要单独占用端口吗?以后通过ipv6只能进那一个端口? [流汗]

    校验提示文案

    提交
    是的,端口一对一的

    校验提示文案

    提交
    收起所有回复
  • 能由ipv6全部转发给ipv4而不用挨个儿端口去写规则吗?太多了吧? [大囧] [大囧] 累死宝宝了 [倒地] [倒地] [倒地] [倒地] [倒地]

    校验提示文案

    提交
    文中使用socat转发ipv6 不支持端口范围转发。可尝试使用ip6tables规则,支持端口范围转发

    校验提示文案

    提交
    收起所有回复
  • 要找移动申请ipv6公网地址吗?

    校验提示文案

    提交
    目前移动ipv6基本全国覆盖了,只要光猫支持且开启

    校验提示文案

    提交
    收起所有回复
  • 开启过ipv6打开网页速度变慢,有换回来了,应该是ipv6 dns这块对ipv6支持不是很到位。查了一下网上很多这种情况

    校验提示文案

    提交
    特定的网页,比如百度,有可能有时候会变慢,猜测是网站优先走了ipv6,还有可能是路由器对ipv6链路优化不够或者性能不够。出现这种情况是我开了主路由ipv6的防火墙之后,猜测路由性能占主要原因

    校验提示文案

    提交
    收起所有回复
  • 咨询下 这样做会影响外网访问家里的ipv4设备吗?比如米家app远程控制 查看摄像头等

    校验提示文案

    提交
    不影响,ipv6和 ipv4是两条独立的链路

    校验提示文案

    提交
    确实会变,我后来的策略是增加一个定时任务,每隔一小时重启防火墙。我现在正在更换openwrt固件的新路由3作为主路由,实现ddns,外加教程中的旁路由。旁路由做代理功能

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 搞一个ddns自己写个Python脚本不就完了,为啥专门用旁路由虚拟机?lz不是程序员?

    校验提示文案

    提交
    使用虚拟机的旁路由更多是实验性质,之后会吧ddns迁移到实体openwrt主路由。写python脚本需要考虑平台,nas体统本身是精简的linux,没有尝试过。其次需要考虑防火墙等策略,直接在专门的路由系统里操作比造轮子省事多了

    校验提示文案

    提交
    嗯你要是装的群晖我就不说啥了,装unraid我觉得还是懂得怎么折腾的。

    校验提示文案

    提交
    收起所有回复
  • 可以加一下v嘛?有些问题想交流一下 [流汗]

    校验提示文案

    提交
    那我加你吧

    校验提示文案

    提交
    收起所有回复
  • 最后保存脚本 怎么写哈。为什么我上面端口脚本填上去能转发,关闭窗口就失效哈

    校验提示文案

    提交
    看描述脚本文件是保存 ,似乎没有开机启动吧。在openwrt里启动项启用。vi编辑器保存脚本,具体查一下百度,用的命令是 qw 意思为推出并保存

    校验提示文案

    提交
    收起所有回复
  • 大佬什么时候出个其他的游戏服务器搭建教程 [赞一个]

    校验提示文案

    提交
    有可推荐的吗,我可以研究研究。但空闲时间实在太少 [皱眉]

    校验提示文案

    提交
    倒是没什么推荐,有其他的就行,毒奶粉我已经搭好了,也玩了两星期,所以想问问你有没有其他的 [喜极而泣] [喜极而泣]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 启动项里没有autosocat这一项 咋整

    校验提示文案

    提交
    这是自己添加的脚本,看文中的配置方式

    校验提示文案

    提交
    谢谢,我找找看有没有,哈哈

    校验提示文案

    提交
    收起所有回复
  • 楼主,请教一下,能用IPV6访问unradi后台,但访问不了docker和文件怎么解决,谢谢!

    校验提示文案

    提交
    可能是 docker没有被分配ipv6的原因,也可能不支持,

    校验提示文案

    提交
    收起所有回复
  • 我想说小白就不要折腾了,小米路由一键解决!

    校验提示文案

    提交
    目前发现最简单的就是 品牌路由加花生壳的ddns ,家里有公网

    校验提示文案

    提交
    收起所有回复
  • 感觉直接用openwrt做主路由不是更简单吗?多一个环节多一个不稳定因素,配置稍显麻烦

    校验提示文案

    提交
  • 大神,有个端口我不明白。
    ip6tables -A FORWARD --dport 8096,51413 -d 你的域名.com -j ACCEPT
    8096 , 51413 这二个端口的意思能不能讲解一下?
    前面端口是哪些作用,后面的端口又是哪一个作用?谢谢!

    校验提示文案

    提交
  • 楼主写的很详细了,DDNS 我的做法和楼主不太一样,我是托管给 CloudFlare,Unraid 下有现成的通过 CF 实现 DDNS 的 Docker 镜像,用起来还是比较便捷的。主路由不是 OpenWRT 的话,单独虚拟一个只用来做 DDNS 确实是有些高射炮打蚊子的意思了。不过防火墙规则那一块,如果重新拨号,那 V6 前缀不是会变么。这样又得重新设置一下规则了吧

    校验提示文案

    提交
  • 好文,已打赏。回去设置一下,谢谢小编。 [刷我滴卡]

    校验提示文案

    提交
  • 老毛子不能为接入的设备的ipv6进行动态解析吗

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
351
扫一下,分享更方便,购买更轻松