目 录CONTENT

文章目录

旁路由及docker容器独立旁路由访问

ming8918
2022-05-30 / 2 评论 / 6 点赞 / 7606 阅读 / 10877 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-09-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

旁路由

b3298a164d6c7c7c7ad2b300ea3e11a7_Jietu20211229-100144

旁路由实际上是网关服务器,说旁路由更好理解,用来分流数据和扩展插件,这在硬路由上是完成不了的。

这样不走旁路由的线路走主路由,要走旁路由的信号走了旁路由后再到主路由出去。就可以实现很多额外的功能,比如去广告、科学上网等

安装

我家本来主路由就是软路由,J1900软路由,装的爱快系统,双线双拨。爱快系统非常好用,还稳定,当时买回来就是装的OpenWrt,可能自己不会用,反正出了些问题。最后换成爱快的系统,一个字:稳得一皮 ,一直没重启稳稳的运行着,里面的很多分流功能很好用,管理小孩的终端、监控她用了些啥都简单易用。我把动态域名、端口映射、双线双拨、静态路由、行为管控、分流等用起来,简直不要太爽!

但爱快没法装乱其八糟的插件实现特殊功能,虽然现在也有docker了,但不好用,受限于硬件很多版本也不对。想着这样稳稳的运行吧,主路由还是要稳、快当头!

那就用NAS来实现旁路由的功能吧。
最先是用docker 的方式来安装OpenWrt 做旁路由,但所有设置OK后,地址也正确也能通信,但就是web不能访问,搞了两下不成功放弃了!

NAS不是用虚拟机嘛,这个来得多稳当,下载了bleachwrt 的这个版本。

  • 打开Open vswitch ,在群晖NAS 的控制面板-网络界面中-管理-打开
  • 安装Virtual Machine Manager
  • 打开Virtual Machine Manager,选择映像-硬盘映像-新增,上传刚下的bleachwrt.img 的映像

image-1653906192852

  • 网络-新增,设置一下网络接口,这里注意下选择:virtio,还是e1000,可以先选择1个,默认是virtio
  • 虚拟机-新增旁的小箭头下拉-导入-从硬盘映像导入-选择映像,下一步
  • 到了CPU设置这里,就看自己的主机,建议2CPU,1G内存吧
  • 一直向下,就OK,自动重启选上

image-1653906451816

运行中,改一下IP地址,因为默认的是192.168.1.1,就算没冲突,也要改为同一网段,改网卡连路由再改还不如这里就一并改了,也简单。
在上面的运行界面,点:连接,弹出SSH窗,数据跑完或回车显示命令符时,输入:

vi etc/config/network

进入后,找到 config interface “lan” 下面这一档,修改ippaddr 为主路由同一网段地址,及gateway:主路由IP。
方法:光标移动到相应位置,按键盘的INS插入键,即可以修改
修改好后,按ESC键,再按shift+键盘上;:键 ,这时下面显示:光标,输入wq 保存退出即可。
image-1653906869026

这时用设置的IP访问就可以登录路由器了,我上面是:192.168.1.2 ,密码每个版本不一样,我这是root/password。
进去后

找到网络-LAN,点修改,把网关改成主路由器的IP地址,DNS可以是主路由或公网的DNS地址。一定把下面的基本设置 忽略接口打上钩,这样就不会DHCP服务了。这里旁路由就可以正常工作了,如果要用科学上网,那还得关掉IPV6的相关设置。

如果LAN 显示的是半双工不是全双工,最好是测速验证,设备不同有时改为了e1000,反而跑不满速度。
反正停机状态可以随时改的!
image-1653907994536

使用

这里怎么让终端走旁路由?

一种方式就是家里所有终端都走,但我不建议,家里领导万一上不了网就麻烦了,我还是喜欢我的爱快的稳定!
这个方式就是把DHCP 服务端的网关设置成旁路由的地址(如我的就是192.168.1.2),如下所示:

image-1653907232397

这样所有终端只需断网连接一次就都是走旁路由了。

还有就是手动改终端的网关为旁路由IP地址(就是网卡改成手动配置IP、网关等,DNS写主路由或旁路由都是可以的),即改即生效。

还有就是推荐在路由器上操作,DHCP 自动分配好后,把动态的变为静态,这时MAC地址就绑定了,在静态页面把网关手动设置成旁路由地址,也是OK的,这样可以批量管理那些终端走旁路由,那些终端走主路由,这种方式对手机等终端友好些。

但这种也是需要网络重新连接才生效!如下图如示,PC是走的旁路由。
image-1653907649461

科学上网

这个看自己的用法了,openwrt 自带的服务里就够用了,像PassWall、hello world、clash、openclash 等。
我习惯用openclash,进去后首先要配置订阅,不然启动不了!
找到配置文件订阅,下方添加,配置文件名可以随便取,主要用于区分多个订阅用的。下面的地址填入自己机场的链接,如果提供的是clash 订阅,就填上确认即OK,如果不是clash 方式的订阅链接,就需要钩选下方的在线订阅转换。也可以自己提前转换好手动上传到openclash里。

image-1653908316216

配置更新后,检查通过,整个平台启动正常,这样走旁路由的就已经可以任意起飞了!
image-1653908516837

打开控制面板就可以看到所有连接的详细信息,clash 是可以自动策略选择路径,对于一些低端机场服务就很有用了,也很方便!

同时旁路由还有去广告、解锁网易云灰色歌曲等等功能。

这样家里领导上网还是走主路由,就算NAS 挂机了,OPENWRT挂机了、报错了,出问题了都不影响整个家庭网络上网,特别是那些智能设备,NICE。因为我还是信任我的爱快软路由,真的好用,相比openwrt 更好用(但没那么开放)。

docker容器走旁路由

NAS走旁路由与其它终端一样的操作方式,但我不想NAS服务再走旁路由,双网卡如果没聚合,我还可以把能设置网络接口的服务走旁路由,如有些第三方服务 emby,plex 等等
群晖自己的套件,就不知道怎么设置了,不知有大神知道不?可以让部份套件也指定走旁路由?

这里我的目的是让docker里部份容器走旁路由,由于容器是独立网络或与主机同网络,就没法指定某个容器服务走旁路由,比如我的xteve 服务,许多外网IPTV源,我想走旁路由机场服务,那怎么办了?

这就要用到macvlan 网络模式,这个网络是可以设置自己的同网段独立IP地址的,就相当于容器变成了虚拟机了,不需要端口映射到容器的172.0.0.0段的地址上了,直接用192.168.1.X访问。

首先本地SSH连接群晖NAS ,连接后是自己的用户名模式,还需进入root模式操作

sudo -i
输入NAS密码(不显示的)
再次确认  # 进入root@机器名即OK了
ip addr  # 这个是查看网卡情况,很多人就是网卡名没找对而失败

image-1653909311266
命令查看后,会列出所有NAS的网卡,如果开了Open vSwitch,就会是ovs_eth0 为第一个网口,如果没开就没有ovs_ ,还有开了聚合就会是bond0,或ovs_bond0,所以一定要找准自己的网卡,当然也可以指定另一个物理口的网卡。
输入下面的命令可以查看docker的网络结构,没有macvlan网络,那我们就要新建macvlan

docker network ls

默认应该只有bridge\host\none这三种。

创建macvlan 网络

docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.2 -o parent=ovs_eth0 macvlan1

这里subnet是自己的网段,gateway就是我要走旁路由,所以我就设为旁路由IP,如果不走旁路由就设成主路由的网关。
parent=的网卡名字一定要对,就是上面说的网卡
macvlan1实际上是这个网络的名字,自己可以随便取
这时网络就建立了,在docker里是可以看到的

但这里就遇到一个问题了,这个默认IP范围就是192.168.1.0开始,自动分配就可能分配成192.168.1.1,那这不与自己的网络冲突了吗?肯定不行的。

这时就需要在上面的 加上 ip range,并通过掩码让这个网络永远分配不到你计划留给家庭网络的IP地址。

docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.2 --ip-range 192.168.1.205/28 -o parent=ovs_eth0 macvlan1

这样他分配的地址就只有192.168.1.192-206 可用了,207成了他的广播地址,再在自己的路由器上把DHCP的范围避开190后的分配,一切就自然OK!
安装容器时选择macvlan1这个网络就可以了,这个容器就走这个网络及对应的路由网关了!还是一个独立IP地址,不是端口映射了!

image-1653910326513

这样网段内的终端都可以访问容器了,但NAS是访问不到这个容器的(这个容器在NAS上)

那就需要打通NAS与容器的网络,因为macvlan与macvlan 是可以互通的!

我的NAS是192.168.1.200,我刚建的容器自动分配出来是192.168.1.192,要让他们之间能访问,就需加座桥。
我们给NAS新建个macvlan,名字就叫macvlan2吧,区分前面的macvlan1

ip link add macvlan2 link ovs_eth0 type macvlan mode bridge
ip addr add 192.168.1.201 dev macvlan2
ip link set macvlan2 up

然后就是建立路由

ip route add 192.168.1.192 dev macvlan2

这样NAS访问容器就可以用192.168.1.192进行访问,比如我的plex 就可以访问IP为192.168.1.192:34400 的xteve 的IPTV服务,这个上面挂的是外网的IPTV源,走旁路由看电视。

反过来容器也可以访问NAS,但就不是访问NAS本来的IP地址,如我的192.168.1.200,而是我们新建的macvlan2,192.168.1.201

但这个接口和路由不是持久的,NAS重启就没有了,所以需要在NAS 计划任务里以root方式,触发条件为开机的自动计划任务,把上面的4条命令运行一次,这样开机后一样可以用。

如果容器只需走旁路由,不需与NAS互通,那就不用后面这个操作,是不是很OK。

6

评论区