
我的软路由折腾之旅 篇三在openmediavault上通过Docker实现OPENWRT旁路由功能2020-06-20 11:28:3857点赞415收藏74评论你是AMD Yes党还是intel和NVIDIA的忠实簇拥呢最新一届#装机大师赛#开始啦本次装机阵营赛分为3A红组、intel NVIDIA蓝绿组、混搭组还有ITX组实体or虚拟装机都能参与可使用值得买定制化DIY装机工具在文中展现配置单每个小组均有精美礼品优秀文章还可角逐装机大师终极大奖点击参与创作立场声明应该写成在debian或者ubuntu下实现docker运行软路由的功能但是我感觉写omv可能会更有代表意义在centos类的操作系统应该也是可以是实现该功能的。我想很多朋友和我最初一样会想利用群晖或者libreelec中的docker尝试但是我这里没有成功我猜测的原因是没有安装docker.io所致unas的docker-ce套件也有这个问题。这篇文章属抛砖引玉希望大家能够集思广益。大家好我是carlyang1986不走寻常路的干货教程垃圾佬。网上很多的N1盒子搞OPENWRT做旁路由让我很是羡慕于是我就在网上找但是没有发现在x86平台上能够实现的教程贴。还好功夫不负有心人esir大神在docker hub上推出了一个可以给x86平台使用的docker镜像。让我等p民看到了希望结合esir大神的教程经过一番折腾经历过多次重装更换系统我找到了一个在openmediavaultdebianubuntu上实现使用docker运行openwrt旁路由的方法如果大家感兴趣也可以结合我软路由系列的第一篇去设置单臂路由这里就不做展开了只来告诉大家在x86平台上通过docker运行openwrt的注意事项。我的软路由折腾之旅 篇一单网口电脑也能做主路由——openwrt平台下的安装过程论一个合格垃圾佬的自我修养——不抛弃不放弃。在系列文章nashtpc方案的最后两期提到这台过年期间淘汰下来的“受害者”1017u一体机无奈性能有限无法承担我越来越过份的影音播放和转码要求于是我在大概三月份开启给他安排了很多种方案其中就包括这个软路由的方案。中间尝试过lubuntu的虚拟机下运carlyang1986|赞88评论119收藏852查看详情为了不耽误大家的时间我这里先说我折腾出来的结果首先使用虚拟机的情况下。我试vmwarevitrualboxhyper-v这三个虚拟机运行过debian9debian10ubuntu18.04libreelecU-NAS等系统在docker中运行openwrt的情况。都可以打开路由器的主界面正常设置但是路由的核心功能一概无法使用。但是debianubuntuomv系统在实体机上就可以了。到底什么情况我也不清楚猜测是win10防火墙或者是虚拟机网络设置的问题。毕竟我不是虚拟机的作者也不是docker镜像的作者。为了自己的发际线和正常生活所以到这一步我就没有继续折腾了各位看官老爷们如果有兴趣和精力可以尝试下。其次我使用的NAS系统是OMV网上下载的版本是5.3.9属于比较新的老版本的应该也是可以的这里我把OMV当成了原生的debian来用直接通过命令行安装docker没有使用系统插件库中自带的。esir大神的这个docker镜像个人感觉有点挑docker。我在DSMlibreelecUNAS等系统下都尝试安装原生的docker套件都实现了能够看到路由器界面但是功能无法使用的情况。感觉可能是套件中的docker版本不够高或者是缺少组件总之就是本作者技术不行没办法在这几个系统上运行成功所以我的这个方法可以分享给大家去折腾如果有人成功的话欢迎留言给我给我点启发。实现原理我测试的结果和这个理论介绍的中提到的混杂模式有出入我在所有的系统中尝试过打开和关闭网卡的混杂模式对于建立openwrt镜像访问web页面设置服务等没有关系。换句话说libreelec黑群u-nas等系统打开混杂和不打开混杂网页该能访问访问。设置该能保存保存。服务该用不了用不了。所以对于第一次尝试的新手我不建议去折腾这一项也许其他场景中能用到再说。这里引用一张图来解释docker中使用的bridge mode虽然macvlan有很多种但是在docker中使用的是bridge模式。这种模式的特点是macvlan之间可以互相访问但是都不能和物理网卡直接进行访问但是macvlan模式下网卡的效率会高很多对于不支持网卡直通的CPU来说是一个巨大的福音。部署openwrt镜像过程代码安装OMVdebianubuntu系统的教程请大家自行百度不是本教程的重点这里不做展开说明。安装后使用root账户登录或者使用sudo命令#后面是注释。1. 激活软件源apt-get update2. 安装docker.io U-NAS的库中没有docker.io只有docker.ce加了debain9的源也没用使用U-NAS的朋友请如果能安装上docker.io也请帮我测试下讲道理应该也是可以用的。apt-get -y install docker.io我使用的是docker.ioU-NAS下使用docker-ce没有成功原因不清楚。3. 如果是OMV系统可以在网络界面中通过网络接口看到网卡信息。例如我这个网卡的名称是enp4s0这里记住下面要用。4. 没有网络界面或者不知道怎么查的可以通过命令行来完成这里先安装个工具如果已安装可以略过。apt-get install net-tools我这里已经安装过了大家可以参考下我安装后的版本。5. 查询网卡信息ifconfig这里可以看到列出了很多网卡信息包括docker0。这里注意一下已经连到网络中的网卡。这里要多说一下我这个物理网卡的名字是enp4s0大家的可能跟我的不一样这里不要照搬照抄一定要记录下自己网卡的名字后续会用到。接下来使用docker安装openwrt的镜像以下内容都在命令行中操作虽然在portainer中也有图形界面去设置但是感觉更麻烦还不如命令行方便。6. 创建macvlan网络注意倒数第一步之前的命令末尾都要加空格docker network create -d macvlan -o parentenp4s0 eNet这一步parent后面填自己刚才查到的网卡的名称比如我的是enp4s0就写成enp4s0。如果是eth0就写eth0按照自己上一步中查到的去写不能照抄。7. 设置maclvan的子网段这里根据自己的网络的网段去设置。--subnet192.168.1.0/24比如我的网段是192.168.1.X路由器的网关是192.168.1.1那么这里的网段信息就是192.168.1.0后面的/24的意思就是我们手动设置ipv4时候的子网掩码255.255.255.0的意思。8. 设置macvlan的网关注意这一步是没有空格的。--gateway192.168.1.1这一步你路由器的网关或者访问路由器的IP地址是什么就设置成什么。防止大家出错这里截个图大家注意格式。因为我的macvlan网络已经创建好了这里就点回车确认了回车以后会提示网络创建好了。9. 我们输入命令检查一下docker network list可以看到这个叫eNet的macvlan网络已经创建好了10. 下载并运行openwrt镜像docker run -d --restart always --name buddha --privileged --network eNet --ip192.168.1.5 esirpg/buddha /sbin/init这里我准备把openwrt当作旁路由来用在ip后面设置一个ip地址给容器避免何其他地址冲突。大家可以根据自己的情况设置。这个镜像大概有60M有可能中间会有retry大家耐心等到pull完就好如果多次没有陈工就按键盘的ctrlc退出这个命令重新执行一次。我的镜像已经下载好了这里不做截图演示了。11. 进入到容器中设置openwrt的ip地址。docker exec -it buddha ash进入到路由器的命令行openwrt旁路由设置过程在openwrt的命令行状态下首先要设置openwrt路由器的ip地址。esir大神考虑到初学者可能对vi命令比较恐惧所以内置了nano为大神的贴心点赞。nano /etc/config/network旁路由设置示意因为我的这个旁路由已经设置好了所以这个地默认的wan和vpn0都删掉了如果只需要做旁路由的朋友可以参考我图片中的设置。其中option ipaddr 192.168.1.5 填openwrt管理页面的IP地址option netmask 255.255.255.0 填子网掩码默认好像就是255.255.255.0 没有特殊需要不要去改。option gateway 192.168.1.1 填路由器的IP网关地址不知道自己网络网关地址的可以在电脑上通过CMD命令查询到。我的路由器的网关option dns 192.168.1.1 114.114.114.114 8.8.4.4 填dns的ip地址我这里填了这几个大家可以根据自己的情况填其中192.168.1.1就是网关。这些设置好以后进入到web页面中设置。打开浏览器输入openwrt的ip进入到openwrt的管理页面。默认情况下输入任何密码都能进入进入后首先按照提示修改登录密码点击修改密码提示的字或者从系统控制权选项卡进入填写自己的登录密码点击保存并应用。然后从网络接口选项卡中对LAN口进行设置要注意的地方是去掉在此接口DHCP的勾还有物理连接中去掉桥接然后继续点保存并应用。这两步设置好以后就可以试着在服务等选项卡中设置订阅内容后者尝试导入连接测试是否可以正常应用。我在libreelec群晖u-nas的docker中这一步尝试均失败。本人水平不行无法解释其中原因希望大家自己摸索如果谁成功了麻烦在评论区留言告诉我或者给我点提示。在目前的局域网中可以把旁路由理解成一个网关服务器去广告等服务内容是可以通过旁路由这个网关服务器处理后下发给客户机的这样一定程度上减少了主路由运算的负担而且旁路由的功能也更加强大这里大家自己去摸索不做展开介绍。服务设置好并正常使用后回到主路由器的设置。在主路由的DHCP或者内网设置中将网关地址指向旁路由的IP地址比如我的是192.168.1.5。设置好以后会提示重启重启后再联网就可以享受旁路由的强大功能了。将主路由的网关指向旁路由即可一点经验提示我在ubuntu18.04debian 9 debian 10以及衍生版omv 5.39下成功的实现了openwrt的搭建和运行U-NAS系统是基于debian 9的讲道理如果放弃自带的docker套件通过命令行安装上docker.io应该可以使用我不知道是soures.list设置不对还是什么原因无法安装中找到docker.io的package。如果是arm平台的朋友可以参考N1搭建openwrt的文章使用armbian完成配置过程是类似的。docker是一个很开放的平台有了debianubuntu和omv的成功经验其他平台的朋友尝试过后也麻烦将结果在留言评论中告诉我集思广益也许您的宝贵经验能够帮助我在群晖和libreelec上找到突破口这里再次感谢大家