使用Docker安装Openwrt软路由

玩物誌二

前面一篇介绍了自用的软路由使用方案,这是一篇改换思路的架设方案,算是一种优化吧。


2024年5月8日更新:这里不再推荐使用此中方式安装Openwrt,缘由见这篇文章。


在用设备情况

配置:

J3160 4gRAM 32gSSD 单千兆电口 4USB2.0 2USB3.0 (最近换电源时冒了个火花,貌似烧了USB,只剩一个2.0了)

优化前软体组成:

1. Jellyfin:看片的媒体中心

1. Transmission:主用的下片工具

1. Filerun:自建的网盘,同时利用其Webdav功能为Joplin作同步服务器

1. Nps_client:内网穿透客户端,主要用于实现外网访问自建的网盘

小主机直接上的Openwrt,做旁路网关,实现内网设备自动Magic上网。以上功能通过Openwrt系统自带的Docker实现,方法在上篇中介绍过了。

优化缘由及思考

软路由的附加功能一直稳定,唯一问题是Magic上网一直不稳,由于是自建的节点,思考可能是VPS(太便宜),或者线路问题,没钱,就放那没理它。

近来通过学习,产生新的想法,一同探讨下。Openwrt是为路由而生的,虽然底层也是Linux,但必竟做了相应的优化,因此其做为服务器的性能多少还是会有些打折。

就我目前的使用方式,实则Openwrt也就只是实现了Magic上网,其它附加功能都是借助基于Linux的Docker来实现。既然如此,那将底层系统直接改为Linux,然后通过Docker实现上述全部功能,是否性能发挥更好,Magic上网也能更稳定点?个人觉得靠谱,必竟发行版Linux都是为服务器而生。

调整后效果

先上使用感受,基础系统安装完成后,由Docker实现包括Openwrt在内的所有功能,另在Linux上安装Samba服务器。

使用大致一周了,目前Magic上网超级稳定,改善明显;Jellyfin加载速度提升明显,过去海报墙存在个别加载失败的情况,调整后加载迅速且无失败情况;Transmission下载速度,好的资源可以直接拉满带宽,以前没有过。

综上,感觉这种部署方式的确 性能和稳定性更好。

实现

安装系统

我选用的Debian11,没什么其它缘由,唯熟悉尔,VPS上一直用的这个。官网下个镜像,烧U盘上,再随意找个教程照着装就行了,英文可以的不用教程,全程基本傻瓜操作,跟着导航走就行。只装个命令行就行,不用图形界面,浪费性能资源也没什么用。

装完配好网络,能上网后装上Openssh server 开启访问权限,后来就可以通过任意设备SSH远程登陆操作小主机了。

安装Docker

Docker可以使用官方的安装脚本:

curl -sSL https://get.docker.com/ | sh

据说由于国内网络的限制可能会出错,但我自己直接用的没什么问题。出错的可以使用国内的镜像脚本,两个随意一个:

阿里云脚本

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh –

DaoCloud 的安装脚本

curl -sSL https://get.daocloud.io/docker | sh

安装Docker compose(选装)

compose可以根据个人需要,用到的时候再装就可以。

Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。

运行以下命令以下载 Docker Compose 的当前稳定版本:

$ sudo curl -L “https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)”  -o /usr/local/bin/docker-compose

要安装其他版本的 Compose,请替换 v2.2.2。

Docker Compose 存放在 GitHub,不太稳定。你可以也通过执行下面的命令,高速安装 Docker Compose。

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

将可执行权限应用于二进制文件:

$ sudo chmod +x /usr/local/bin/docker-compose

创建软链:

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

$ docker-compose version

cker-compose version 1.24.1, build 4667896b

Openwrt安装

Openwrt的镜像选择还是比较多的,在Docker hub以此为关键字可以检索出许多,根据自己需要选用就可以,有实力的同学还可以制作自己的镜像。在这里推荐一个兄弟根据Lean大神制作的镜像,功能上根据旁路网关用途做了简化,只包括了SSR plus,passwall和Clash三个关键插件,以及一些基础插件。完全胜任这里的功能需求而又没有多余的浪费。镜像名piaoyizy/openwrt-x86

1、开启网卡混杂模式(许多人都说这个是必须打开的,但个人经验证并不是必须,没开我也用的很好)

sudo ip link set enp2s0 promisc on

其中enp2s0是我的网卡名,根据跟人实际修改。

2、创建虚拟vlan

docker network create -d macvlan –subnet=192.168.1.0/24 –gateway=192.168.1.2 -o parent=enp2s0 macnet

其中192.168.1.0/24是我的内网地址,根据个人实际情况修改。192.168.1.2是我的主路由器地址,一样要改成你自己的。macnet是新建的macvlan名,可以随意取,但要记住,下条命令会用到。

3、安装容器

docker run –restart always –name openwrt -d –network macnet –privileged piaoyizy/openwrt-x86

其中openwrt是创建的容器名称,个人喜好修改。macnet是上一步中创建的macvlan名称,必须与上一步保持一致

4、修改openwrt地址

通过docker ps命令查看openwrt容器ID

然后通过`docker exec -it ContainerID bash`进入openwrt 命令行,其中ContainerID为前面查到的容器ID

然后通过`vim /etc/config/netwrok `修改软路由IP地址。按`i`键开始输入以下内容:

config interface lan

        option type bridge

        option ifname eth0

        option proto static

        option netmask 255.255.255.0

        option ip6assign 60

        option ipaddr 192.168.1.254

        option gateway 192.168.1.2

        option dns 192.168.1.2

其中`option ipaddr`为软路由地址,注意不要与内网其他地址冲突;`option gateway`为内网网关,就是2步中的主路由地址,两者要一致;`option dns`选填,不加也可以。其他选项用这个例子中的就可以。

修改完毕后先按Esc键,再输入`:wq`并回车,就可以保存退出了。

5、修改完成后通过`/etc/init.d/network restart `重启网络,这时就可以使用浏览器通过软路由地址192.168.1.254(上一步刚刚修改的地址)访问软路由了,密码是`password`。

6、在网页端修改软路由配置,并将其他设备网关指向软路由就可以实现Magic上网了。旁路网关的设置方案网上许多,大家自行检索一下吧。我的方式是在主路由开启DHCP,将网关指向软路由,这样其他设备自动完成Magic上网。这种旁路网关的方式不用每个终端进行配置就可以实现Magic上网,而且一旦软路由出现问题,或者自己想折腾的时候,简单的只修改主路由的DHCP配置,将网关指向主路由自己,其他设备重连下WIFI或网络,就可以以普通的方式上网,对家人的影响可以忽略不计了。超级适合爱折腾的我自己。

其他附加功能安装

至于其他附加功能如网盘啥的,都通过Docker 实现,具体方法可以参考我的这篇文章软路由Openwrt还可以做什么


其他相关资料请点击索引目录。

© 版权声明

相关文章

暂无评论

none
暂无评论...