1.通过ssh连接我们的服务器

这里默认你的系统已经安装好了docker,如果没有安装请搜索其他教程先安装好

2.查看网卡名称

使用 nmcli命令查看你的网卡名称

root@debian:~# nmcli
enp2s0: connected to Wired connection 2
...
  		inet4 192.168.1.6/24
        route4 192.168.1.0/24 
...       

我这里的网卡名是 enp2s0 ,IP地址是192.168.1.6 ,每个人的不一样,这里记住了后面会用到

3.开启网卡混杂模式

sudo ip link set eth0 promisc on 

4.设置macvlan网络

注意这一步一定要根据自己的实际情况来,否则会设置失败

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

命令中的子网掩码 192.168.1.0/24、网关 192.168.1.1、网卡名称 enp2s0要根据第一步中你的实际情况更改,其中gateway的值是你路由器的IP,一般情况下为你主机所在网段的第一个也就是192.168.XXX.1
比如你第一步中查到的是192.168.22.3/24eth0这里就要设置成下面这样的代码

docker network create -d macvlan --subnet=192.168.22.0/24 --gateway=192.168.22.1 -o parent=eth0 macnet

设置完成后可以使用 docker network ls命令查看,这里可以看到网络macnet已建立成功

root@debian:~# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
de29daef40a1        bridge              bridge              local
f961f2a52dd9        host                host                local
2cfd9f6843a7        macnet              macvlan             local
a8a1bb1e628d        none                null                local

5.拉取openwrt镜像

这里使用的是Dock镜像仓库中的OpenWrt-Rpi-Docker这个镜像,大家有其他习惯的版本可以自行选择
在这里插入图片描述
由于我的是x86平台,所以我使用以下命令,每个人根据实际情况自行选择

docker pull sulinggg/openwrt:x86_64

镜像拉取成功后,我们可以执行docker images命令查看现存镜像

root@debian:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
sulinggg/openwrt    x86_64              5ce79834d1ba        2 days ago          460MB

6.创建并启动容器

docker run -d --restart always --name openwrt --network macnet --privileged sulinggg/openwrt:x86_64 /sbin/init

--restart always参数表示容器退出时始终重启,使服务尽量保持始终可用

--name openwrt参数定义了容器的名称

-d参数定义使容器运行在 Daemon 模式

--network macnet参数定义将容器加入 maxnet网络

--privileged 参数定义容器运行在特权模式下

sulinggg/openwrt:x86_64为 Docker 镜像名

/sbin/init定义容器启动后执行的命令
安装成功后使用命令查看安装情况

root@debian:~# docker run -d --restart always --name openwrt --network macnet --privileged sulinggg/openwrt:x86_64 /sbin/init
7be08241566d293f7ab8fd81e7ee4a2e47efdb77bd2288d3aa7e292f6941bd15
root@debian:~# docker ps -a
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS               NAMES
7be08241566d        sulinggg/openwrt:x86_64   "/sbin/init"        32 seconds ago      Up 31 seconds                           openwrt

status显示UP就表示安装并启动成功了

7.进行网络配置

须结合实际网络情况,不能照抄配置,否则前面的努力都白费了

使用命令进入docker 的bash模式

docker exec -it openwrt bash

其中:

openwrt为容器名称;

bash为进入容器后执行的命令

执行此命令后我们便进入 OpenWrt 的命令行界面

root@debian:~# docker exec -it openwrt bash
bash-5.1#

首先,我们需要编辑 OpenWrt 的网络配置文件

vim /etc/config/network

我们需要更改 Lan 口设置:

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option ipaddr '192.168.123.100'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '192.168.123.1'
        option broadcast '192.168.123.255'

其中:

所有的 192.168.123.x需要根据第一步中IP所处网段修改,option gateway填写路由器的 IP,若第一步中获得的 IP 为 192.168.1.6,路由器 IP 为192.168.1.1,则需要这样修改:

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.8'
        option gateway '192.168.1.1'
        option dns '192.168.123.1'

注意这里的option proto 名字保持默认就行,不需要修改,我安装时因为改动了这里,重复了好几次才发现问题

8.重启网络更新配置

/etc/init.d/network restart

9.重置openwrt管理密码

passwd

根据提示输入两次密码即可

bash-5.1# passwd
Changing password for root
New password:
Retype password:
passwd: password for root changed by root

10.进入控制面板配置软路

在浏览器中输入第 7 步option ipaddr项目中的 IP 进入控制面板,若option ipaddr 的参数为 192.168.1.8,则可以在浏览器输入 http://192.168.1.8进入控制面板。

好了,openwrt的安装就完成了,具体的关于作为旁路由要怎样配置,我会在后面的文章中详细介绍一下

参考资料

1.在Docker 中运行 OpenWrt 旁路网关
2.OpenWrt-Rpi-Docker

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐