找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 11539|回复: 7

利用Docker给自己定制旁路由(一)安装immortalWrt

[复制链接]
本帖最后由 tyxu 于 2024-3-24 17:35 编辑

本人老白,又老又白,喜欢折腾。目前半退休状态,终于有时间折腾啦,和大家分享一下我的近期折腾结果。如果大佬们觉得本文幼稚,请勿喷,不要打击老同志那颗爱折腾的心。同时,热烈欢迎大家指正交流。
本文极度适合群晖用户,适合各种已经完成docker搭建的用户。当然,如果您有设备可以运行虚拟机,或者直接安装Openwrt,本文大部分步骤可以借鉴。
根据我自己的使用情况,计划包含以下几个部分:安装immortalWrt、安装配置science小猫咪、DDNS如何在FakeIP下工作、利用*V*P*N*回家学习science文化知识。

选择openwrt的原因就不多说了,主要是比较小巧,可用的插件多,适合小规模折腾。您要是非得觉得装个ubuntu更好,也别喷我,毕竟适合自己的才是最好。

docker hub上基于openwrt的旁路由集成镜像很多,多数都是集成了各种插件的18.06版本,而且试用过程发现这些镜像动辄几百兆,很多插件还用不上,毕竟18.06有点老,有些插件更新还会出现内核兼容问题。

那么有没有办法使用新一些的openwrt版本,并且只安装自己需要的插件呢?必须有!
经过一些尝试,最后决定使用immortalWrt的 21.02.7版本搭建一个自己定制的环境,这个版本应该是上一个稳定的版本,只有大约25M。没敢用最新的23.05.x,还是感觉有点不踏实。
关于immortalWrt,是openwrt的一个分支,具体情况可以百度
好啦,开始正题:

准备工作。。。。
我使用的是群晖DS418play,型号比较老并被定义为家用系列,在DSM7.x下是无法安装docker的。
首先,无“open vswitch”选项,需要更改配置文件,共要改两个文件,,,如何修改和打开,请自行百度



其次,DS418play 无 Docker 套件,建议去官网下载DS218+的,注意DSM版本,我用的是DSM7.1系列,毕竟都是同一CPU,其它配置也差不多,,,
https://global.synologydownload. ... &build_number=42962

Docker-x64-20.10.3-1308_DS218plus.spk


如果您用的不是这种蹩脚的群晖,上面可以跳过。

打开“open vswitch”后,群晖会在原有两个物理网卡(eth0,eth1)的基础上,增加两个虚拟网卡(ovs_eth0,ovs_eht1),用于连接vswitch虚拟交换机。
使用ifconfig命令会发现,开启vswitch后,联机网卡已经自动切换成了ovs_eth0或ovs_eth1。


现在,使用下载好的群晖DS218docker套件,安装吧!安装好docker后,基础准备完成。
如果您不是群晖用户,上面的全可以跳过,选择适合您设备的应用,装好docker就行啦!

为docker配置环境。。。
1、开启网卡混杂模式(混杂模式-物理网卡可以被虚拟多个MAC地址)
切换root权限,否则没有权限
  1. sudo -i
复制代码
eth0是我群晖已经联机的物理卡。ovs_eth0是“open vswitch”后,eth0虚拟出来连接虚拟交换机的网卡,根据个人实际修改。
  1. ip link set eth0 promisc on
  2. ip link set ovs_eth0 promisc on
复制代码
设置网卡混杂模式,我不知道设置哪个,至少ovs_eth0需要设置,索性都设置了。

2、创建虚拟vlan
其中192.168.10.0/24是我的内网地址,192.168.10.1是我的主路由器地址,ip-range 是使用的地址范围,以上根据个人实际修改。macnet是新建的macvlan名,可以随意取,后面会用到。
  1. docker network create -d macvlan --subnet=192.168.10.0/24 --ip-range 192.168.10.16/28 --gateway=192.168.10.1 -o parent=ovs_eth0 macnet
复制代码

3、准备镜像
Openwrt的镜像选择还是比较多的,在Docker hub以此为关键字可以检索出很多,根据自己需要选用就可以,有实力的同学还可以制作自己的镜像。
但上面说过,这些自带插件的镜像个头都比较大,OP版本基本基于18.06有点老,插件更新也经常有问题(内核不兼容)
如果您执意选择这些大佬们精心定制的版本,我推荐:

piaoyizy/openwrt-x86,一个兄弟根据Lean大神制作的镜像,功能上根据旁路网关用途做了简化,只包括了“师夷长技以制夷” plus,“师夷长技以制夷”和Clash三个关键插件,以及一些基础插件。至少2023年底还在更新。
sulinggg/openwrt:x86_64,这个很著名啦,但最后版本应该是几年前编译的,已经停更。

我最后还是选择了immortalWrt21.02.7 自己定制。在docker注册表搜索“immortalwrt/rootfs”,选择“x86-64-openwrt-21.02.7”并拖取镜像。里面镜像很多,如果您的设备不是x86,可以选择您合适的架构下载。


如果你的群晖无法访问注册表,可以尝试用 docker pull 命令试试,但成功机会依然不大。
我最初也没办法访问注册表。为了解决这个问题,用了个笨办法。在台式机上也安装了docker for win,毕竟台式机出门就方便多了。用台式机的docker获取镜像,然后使用shell执行:
注意!是windows的那个DOS界面,提示符长这个样子的! PS C:\Users\Administrator>
  1. docker save -o c:\immortalwrt_21.02.7.tar immortalwrt/rootfs:x86-64-openwrt-21.02.7
复制代码
这样就在C:盘根目录获得了镜像文件immortalwrt_21.02.7.tar,把文件上传到群晖,导入群晖docker就可以啦。

4、创建并运行容器
回到ssh,登入群晖,提升权限
  1. sudo -i
复制代码

运行命令创建容器
  1. docker run -d \
  2.     --restart always \
  3.     --name immortalwrt_21.02.7 \
  4.     --privileged \
  5.     --network macnet \
  6.     --ip=192.168.10.19 \
  7.    immortalwrt/rootfs:x86-64-openwrt-21.02.7 \
  8.     /sbin/init
复制代码
说明:“\”是连接符号,用于声明命令行没有结束接下一行。
            -d  参数是让容器在后台运行。
            --restart always  为了避免容器意外挂掉,或者被误杀,设置了意外退出自动重启。
            --name  给容器定义个名字,可以自由定义。
            --privileged  获取宿主机root权限(或特殊权限)。
            --network macnet  指定网络为macnet,就是我们上面创建的那个vlan。

            --ip=192.168.10.19  指定默认地址。
            immortalwrt/rootfs:x86-64-openwrt-21.02.7  镜像的名称。
             /sbin/init  表示载入容器后内核启动时主动呼叫的第一个进程,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上自己kill自己。
最后回车运行一下吧!

这样的结果,就是容器已经成功创建。可以
  1. docker ps
复制代码
看一下,是不是已经成功创建并运行。记住那一大串字符(CONTAINER ID)的前四位,一会儿要用到。


5、更改容器网络参数
使用SSH工具,进入容器,2e5b就是我们上面创建的容器ID缩写

  1. docker exec -it 2e5b /bin/ash
复制代码
进入容器后,执行下面命令,编辑网络配置文件
  1. vi /etc/config/network
复制代码


我是编辑成了这个样子,可以参考:


  1. config interface 'loopback'
  2.     option ifname 'lo'
  3.     option proto 'static'
  4.     option ipaddr '127.0.0.1'
  5.     option netmask '255.0.0.0'

  6. config interface 'lan'
  7.         option type 'bridge'
  8.         option ifname 'eth0'
  9.         option proto 'static'
  10.         option ipaddr '192.168.10.19'
  11.         option netmask '255.255.255.0'
  12.         option gateway '192.168.10.1'
  13.         option dns '114.114.114.114 8.8.8.8'

  14. config interface 'wan'
  15.     option proto 'static'
  16.     option ipaddr '10.10.10.254'
  17.     option netmask '255.255.255.0'

  18. config interface 'wan6'
  19.     option ifname 'eth0'
  20.     option proto 'dhcp6'
复制代码
编辑完成后,按esc,输入":wq",保存退出,执行下面的命令,重启一下容器的网络
  1. /etc/init.d/network restart
复制代码

好啦,在浏览器输入 192.168.10.19 就可以看到 immortalwrt_21.02.7的登录界面啦,用户名root,密码root

还没写完,按错发布了。晚上补齐吧,第一次发帖,抱歉啦



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| | 显示全部楼层
本帖最后由 tyxu 于 2024-3-25 00:40 编辑

继续上边的过程。。。。

在浏览器输入 192.168.10.19 就可以看到 immortalwrt_21.02.7的登录界面啦,用户名root,密码root
成功登录进来啦!首先要更新一下列表:系统》软件包》更新列表


报错啦!这个镜像在制作的时候,有个失误  /etc/resolv.conf 的nameserver设置应该是手抖了
我们可以通过SSH登入容器看一下,直接用SSH连接192.168.10.19,用户名root,然后输入命令:
  1. cat /etc/resolv.conf
复制代码

看到这行了吗? “nameserver 127.0.0.11”显然是手抖多输了个1,可以使用vi命令改一下就正常了。
  1. vi /etc/resolv.conf
复制代码

改成 “nameserver 127.0.0.1” 这里也可以直接输入DNS地址,但使用 127.0.0.1 本机,在openwrt中更改DNS,更方便。


再试试更新列表吧!正常了

最后,到web主界面:系统》系统》语言和界面》语言:auto,把此项改为“简体中文。。。”
大功告成啦!

下一篇,是关于安装和设置小猫咪,不知能不能通过审核呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

支持楼主
回复

使用道具 举报

支持楼主,感谢分享。下一篇在哪?
回复

使用道具 举报

piaoyizy/openwrt-x86   和sulinggg/openwrt:x86_64 这个2个版本的DOCKER版OPT我全部用过,没法P-ALL&W+ALL或者S&S&R,使用过N个版本,即使是自己编译的OP,没一个成功过。我的实际用途不是为了上网海淘,而是连回家里再回到单位,因为单位网络禁止访问部分资源。DS418play群晖支持VMM,如果就为了个OP使用DOCKER没意思,VMM里部署非常简单。还有个问题就是DOCKER部署容器,部分容器得配置网络,重启还得建立网络,当然可以使用脚本自动配置。而VMM或者用LXC部署,随便宿机怎么重启,配置都不会掉。
回复

使用道具 举报

来自手机 | 显示全部楼层
hunterson 发表于 2024-4-11 14:27
piaoyizy/openwrt-x86   和sulinggg/openwrt:x86_64 这个2个版本的DOCKER版OPT我全部用过,没法P-ALL&W+ALL ...

确实。我也试了好多基于Lean大佬代码的镜像,感觉从R21后面的某个版本开始,不知道网络转发哪里出了问题,直连可以,science不行。反而是两年前我自己编译的某个版本还能用
回复

使用道具 举报

 楼主| | 显示全部楼层
回复

使用道具 举报

谢谢楼主,我晚上试试,docker方式比VM效率更高
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-9 17:26

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表