记录 wireguard+IPv6+IPTV 设置过程,用两台 x-wrt 路由实现异地组网看电视
写作说明:最近创作产量有点高啊,不是我喜欢舞文弄墨,而是为下下月家里移动IPTV停播着手准备。有人可能会说,不就区区每月多花20元钱,至于吗?但是蚊子虽小,那也是肉啊!况且经济下行带来的影响下,中国移不动宽带的优惠力度一减再减(加价不加量),下个月原手机套餐赠送的宽带和电视到期后,再也没有免费的午餐了,要收200元的安装费,每月还要70元宽带使用费呢。
本文可以说是前面几篇关于异地组网和IPTV文章的优化和提升,内容涉及wireguard、IPv6、ddns动态域名、udpxy等知识,有兴趣的同志可以随着我的介绍动手实操一遍哈。至于稳定性,由于我只是在同一条宽带下的测试,目前还不确定真正拿回老家使用的效果如何。
一、硬件准备
需要两台可刷openwrt的路由器,一台是上篇介绍的已刷x-wrt的极路由4增强版,另一台是前面花30元钱购入的JDC无线宝一代,也给它刷上x-wrt。为什么选择x-wrt,主要是该系统已集成了WireGuard,比自个加装的更容易成功些。
这里还有个小插曲,之前在准备JDC-1系统时,x-wrt.com上还没有适配的系统,刚开始想着采用padavan下设置open微屁恩,折腾了老久握不了手。无奈之下,准备拿出另一台吃灰的小米R2100(在海鲜市场挂了一个多月几乎无人问津),登陆x-wrt,习惯性地在搜索框输入cloud,结果显示有3个,往下一看,一阵狂喜,居然是JDCloud,后面一串不知道代表啥。莫不成是无线宝一代?想着反正已刷不死,何不拿来开刀试试。于是把那台旁路由方案的无线宝当作小白鼠,开搞。
x-wrt终于有适配JDCloud1了插上网线,按住重启键同时插上电源线开机,更新JDCloud x-wrt固件,进度条走完后原来闪烁的蓝色灯熄灭,电脑显示网线已断开,初以为要糟。但凭着多年搞机的经验,按捺住焦急的心情,经过有点漫长的等待,发现网口又有动静了,一会指示灯也亮了,哈哈,这回成绿灯了,果然跟padavan老毛子系统不一样(蓝灯)。进系统一看,虽然闪存比极4P小得多,但同样集成了wireguard。
JDC刷完x-wrt后有个坑需要填。就是路由的各个接口mac地址不固定,我是设置mac绑定才允许上网的,导致刷完后重启路由就上不了网的问题。这可能是新适配系统的一个bug吧。
解决的办法就是去网络>>接口>>设备>>配置,把br-lan、eth0、lan1/2配置成与phy0-ap0相同的MAC地址,wan的MAC地址在此基础上相应加1。如下所示
JDC网口MAC需手动固定其他路由一般不需要做此修改。
对于wireguard就不过多介绍了,不了解的可以问度娘。先上拓扑图
拓扑图二、光猫开启IPv6
我的移动宽带原先开启过IPv6,里面的参数又被我动过。导致我的各式路由均获取不到IPv6。经过摸索和学习(B站韩风大佬的视频),对光猫设置如下,看到已是连接状态了。
宽带设置LAN侧地址配置-IPv6配置IPv6已连接三、设置IPv6和ddns
之前我有一篇文章也写到过,是修改DHCP文件的,有点麻烦。以下是web网页操作方式,照作就行。
3.1 wan6口配置
网络>>接口>>wan6
wan6接口配置3.2 lan口配置
网络>>接口>>lan
lan配置保存并应用,客户端网络断开重连一下,如果不行把路由重启试试。
3.3 阿里云域名解析
阿里云的域名解析我用了几年了,续费太贵,所以到期我就换一个。这不又到期了,新换的.fun后缀域名首年才8元费用。到AccessKey管理下创建子账号,ddns设置会用到。
云解析DNS>>域名解析>>解析设置>>添加记录
记录类型:AAAA
主机记录:就是域名前缀,如ab.cd.ef
记录值:到你的x-wrt路由wan6端口查看下,把*.*.*.*/64斜杠前面部分拷贝到这里
状态显示正常就可以回到路由器管理页面操作ddns了。
3.4 wrt路由设置ddns
服务>>动态 DNS(DDNS)>>编辑myddns_ipv6
域名和用户名、密码均用阿里云的网络选择有获取到IPv6的接口保存并应用,查看日志是否正常,如果不正常则重启下。
万事具备只欠东风!接下来就该今天的主角——WireGuard登场了!
哦,差点忘了!两台路由的内网IP网段都是192.168.15.0/24,这样是行不通的,配置wireguard之前先把JDC无线宝的网段改成192.168.25.0/24,命名为B路由,保留原网段的极4P路由以下称为A路由,A放在老家,设置udpxy转发,详见拓扑图。
四、WireGuard IPv6组网
大部分设置参照这篇文章,在此谢过Neo博主。WireGuard on OpenWrt+IPv6 组网 | Neo's Blog
为了便于识别两台路由,我把A路由的系统界面修改成OpenWrt2020风格。
OpenWrt2020主题4.1 配置 WireGuard 接口
我所了解到,WireGuard是不分客户端和服务端(公和母)的,引用博文“若使用 N 台路由器互相连接,则需要在每台路由器上设置 N-1 个对端,这样可以确保任意两台路由器之间能互相连接。此处假设使用两台路由器来配置互相连接,每台路由器上均需要设置一个对端。”
如果你利用一台路由做IPTV转发,然后给你的亲戚朋友送上已配置好wireguard联网的路由器,再帮他们把安卓电视接收软件如 IPTV Pro 或 PerfectPlayer TV版安装好,快乐地共享吧!呵呵哒,想想而已,要面对不同运营商逐一去配置IPv6就够你受的了。
好了,废话少说。下面开始配置:
(1)A路由
① 网络>>接口>>添加新接口...
新建wg接口② 接口>> wg >>常规设置,生成新的密钥对,监听端口填写12000,IP地址填入172.16.1.1/16
wg接口常规配置③ 接口>> wg >>高级设置
MTU:填入1280,此处尽量填小值,如果大了会让两端连接速度变慢。什么道理我也搞不明白,照搬博文。
④ 接口>> wg >>防火墙设置
新建一个区域,命名随意。
创建防火墙区域⑤ 保存并应用,完成接口创建
在 状态 – WireGuard 中可以看到 A 路由器的公钥,复制下来,等下要填入路由器 B 的对端设置中。
A路由的公钥此时A路由的配置先暂停,因为对端的配置需要用到B路由的公钥,因此,先参照A路由的配置对B路由进行一些操作,然后再回过头来完成A的配置。
(2)B路由
过程可以照着A路由配置,注意B路由在wireguard中的IP地址变成:172.16.2.1/16
wg常规配置查看B路由的公钥,复制下来
查看B路由公钥配置对端
顺势以B路由为例,配置wg接口的对端,即A路由
接口>> wg >>添加对端,描述可以写routerA,公钥填入前面记下的A路由生成的公钥,私钥不用填,允许的IP填入 172.16.1.1/32 和 192.168.15.0/24,勾选路由允许的IP,端点主机填入对端路由器你在前面ddns设置好的域名,端点端口填入对端路由器的端口12000,持续Keep-Alive按照建议填入25,保存应用所有设置。
B路由wg对端配置防火墙设置(与博文不同,主要是MSS钳制)
网络>>防火墙>>编辑在wg配置里新建的区域
入站、转发都改为接受,勾选 MSS 钳制,允许转发到目标区域、允许来自源区域的转发都勾选 lan。
防火墙设置网络>>防火墙>>通信规则,添加一条规则
在 常规设置 中,名称填写 Allow-WireGuard,协议保持默认 TCP+UDP ,源区域选择 wan,目标区域选择 设备(输入),目标端口调入 WireGuard 监听端口 12000,操作选择接受。
通信规则-基本设置有在B站视频中见到目标地址处,添加如下内容,::110:110/::ffff:ffff:ffff:ffff
我并没有添加,因为已经正常使用了就不做尝试啦。
在 高级设置 中,地址族限制选择 仅 IPv6。
通信规则-高级设置保存并应用防火墙设置。
在 网络>>接口 页面,重启 wg 接口。
(3)回到A路由继续配置
配置对端,即B路由
接口>> wg >>添加对端,描述可以写routerB,公钥填入前面记下的B路由生成的公钥,私钥不用填,允许的IP填入 172.16.2.1/32 和 192.168.25.0/24,勾选路由允许的IP,端点主机填入对端路由器你在前面ddns设置好的域名,端点端口填入对端路由器的端口12000,持续Keep-Alive按照建议填入25,保存应用所有设置。
A路由防火墙设置,可以照抄B路由的。
(4)完成
两台路由的wg接口都重启后,稍等片刻,在各自路由器的 状态>>WireGuard 中,可以看到另一台路由的连接信息。刚开始我只能在B中看到A的连接,A中木有连上,经故障排查发现是A路由的wg接口配置对端时,误把A自己的公钥填入了,导致连接不成功。
4.2 重启两台路由
可能有些性急的朋友会像我一样,见到wg连接成功就迫不及待地在浏览器中输入远端的IP地址,想试下“毒苹果”的滋味,估计多数会无功而返。开始我还想着会不会还需要设置静态路由表呢,还动手实践了下,搞完重启了下,再进到 状态>>路由,查看路由表,发现比我设置的要多得多。于是把另一台路由也重启了下,才知道不用手动增加静态路由。所以明白了一个道理,设置完成后,要重启。再次强调:
重启两台路由!重启两台路由!重启两台路由!
4.3 配合 WatchCat 使用,守护wg不断线
“当出现问题无法连通对端路由器的时候,如果有自动化的操作可以直接重启接口,就很方便了,省去手动重启操作。”——Neo's Blog
opkg update
opkg install watchcat luci-app-watchcat luci-i18n-watchcat-zh-cn
(1)安装watchcat
我是在路由的 系统>>软件包 里安装的,先操作 更新列表,再筛选器里输 watchcat ,完成安装
安装watchcat插件(2)配置watchcat
服务>>Watchcat,直接利用已有实例修改。
模式:选择重启接口;周期:调整为1m(1分钟),它表示待1分钟没收到回复就重启接口
要检查的主机:在A路由上的watchcat就填B路由的IP地址 192.168.25.1,在B路由上的watchcat就填A的IP地址 192.168.15.1
接口:选择wg,其余参数默认即可
watchcat配置这样,在路由器发现无法ping通对端1分钟后将会自动重启wg接口,保证两台路由器持续连接。
五、一些并不必要的测试
5.1 互ping测响应时间
互ping响应时间在2ms左右,太过理想状态了。
5.2 利用iperf3测传输速率
在A路由器的 服务>>终端 中,用root/admin登陆,输入命令(前提是已安装ttyd插件,没有插件的用putty也行)
# 开启 iperf3 服务
iperf3 -s
在B路由器终端输入命令:
iperf3 -c 192.168.15.1
得到传输速率结果如下图,有点夸张,因为是同一台光猫下的两个百兆口,基本能跑满。
理想状态下的测速等下次回老家再真刀真枪地测试一下。
六、有IPTV的一端设置udpxy,有网的地方就有电视
6.1 A路由设置udpxy
通过WireGuard搭设好异地组网后,当然就是安装udpxy进行组播转单播啦。这部分内容就不再重复造轮子,请看我的上一篇文章吧。
6.2 IPTV抓包
至于广东移动的抓包,还得移步去看第十篇文。
6.3 路由器搭建web服务,用于存放.m3u文件
uHTTPd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器,默认80端口就是用于登陆wrt主界面的,我们要添加自己的web服务,那么只需重新定义一个端口即可。我定义了一个8088端口作为网站端口。
首先使用WinSCP登陆路由器,以A路由为例
先在/usr/目录下新建webfile目录,用于存放.m3u文件
新建web访问的目录把/etc/config目录下的uhttpd复制出来,再编辑
备份后编辑uhttpd编辑/etc/config/uhttpd
config uhttpd 'web'
list listen_http '0.0.0.0:8088'
option home ' /usr/webfiel'
option cgi_prefix ' /cgi-bin'
还是用WinSCP将原先整理好的.m3u文件上传到路由的/usr/webfile目录,m3u文件里格式如下
http://192.168.15.1:4022/rtp/239.*.*.*:*
具体要求另外我前面两篇文章。
上传要放在网站的.m3u文件在 服务>>终端 或使用 putty 重启 uhttpd,命令如下
/etc/init.d/uhttpd
restart
在浏览器中输入:http://192.168.15.1:8088
A路由web搭建完成同样在B路由器中也搭建好web网站,上传的.m3u文件用同A路由的。
6.4 电脑vlc软件测试播放
媒体>>打开网络串流,网址输入:http://192.168.25.1:8088/51iptv-15.m3u
成功播放。至于电视端如何播放,自行百度找软件吧,我这里用的是 IPTV Pro TV 版。
好啦,折腾暂告一段落,完美收官!
七、后记
7.1 强化进程守护设置
使用了几天,刚开始还是会出现断链情况,于是我又在两端路由上添加了两条静态路由,如下
静态路由(无效果)感觉没起到什么效果。于是我又回到watchcat,在 ModemManager 接口的名称 里选择wg接口
保险起见,多选一个接口并在下方新增一个 重启接口,如下设置:
要检查的主机:你用于连接wireguard的公网IP或域名
接口:wan
ModemManager 接口的名称:wan6
增加一条重启接口的规则顺便在后面增加一条ping重启规则,一量ping不通 x-wrt.com 或 baidu.com,即触发重新启动路由器。
经过这番补强守护进程的操作,目前运行稳如老狗。
7.2 后续展望
后面在无线宝padavan系统上无意间发现已标配 SoftEther 威皮恩,又在B站上扒拉了一些关于softether的介绍,听了wireguard与之对比分析,说是 softether => wireguard。于是又着手捣鼓 softether 来。
我的思路是利用两台padavan路由,开启softether服务,服务端IPTV桥接到释放出来的一个lan口,对端(其实也是开启softether服务,并非client)桥接接口同样选释放的lan口,这个lan口插上移动机顶盒,打开电视,10%……85%……居然认证登陆成功。
这么多电视节目,“看不完,根本看不完”,打开一部免费电视,播放很流畅,呵呵,马上下单给家里的机顶盒找个替身,月底退网去。
正当我喜不自禁手舞足蹈飘飘欲仙时,一盆冷水从天而降,电视直播看不了,打开时有点声响,之后就一直转圈圈。
可以看综合节目和电视回看,却看不了直播。这是个什么道理呢?这对于非IT专业的我来说,实在是个天大的难题啊!希望有大神指点一二,在些谢过!!
softether自带ddns管理级联连接后续再折腾通过softether的常规用法,即连通两地的 internet 网络,直接相当于同 IP 段的大内网,再 udpxy 转发 源IP/接口 填入有IPTV一端的 IP 地址,相信明天更美好。
值友7160702297
校验提示文案
老实和尚说不得
校验提示文案
duolab
校验提示文案
gunpen
校验提示文案
gunpen
校验提示文案
0x5e
校验提示文案
小仙女儿她娘亲
校验提示文案
值友gsp1991
校验提示文案
just_see
校验提示文案
值友7365602769
校验提示文案
o0o0oo0o0o
校验提示文案
Coffey_Wen
校验提示文案
Coffey_Wen
校验提示文案
值友7160702297
校验提示文案
0x5e
校验提示文案
o0o0oo0o0o
校验提示文案
值友7365602769
校验提示文案
duolab
校验提示文案
just_see
校验提示文案
gunpen
校验提示文案
老实和尚说不得
校验提示文案
gunpen
校验提示文案
值友gsp1991
校验提示文案
小仙女儿她娘亲
校验提示文案