使用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还可以做什么


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容