在docker(linux)中安装openwrt作为旁路由

本文使用ubuntu-server20.04,服务器架构为x86-64,已假设安装了docker,net-tools,vim

1.开启网卡混杂模式

1.1查看网卡名称

使用ifconfig查看。如下图,enp4s0为网卡名称,inet为局域网ip,这里需要记录网段,我这里是10.0.0.x

1.2执行指令并保持开机自启

执行如下指令

ip link set 网卡名称 promisc on

举例:我这里网卡名称为enp4s0,则执行的命令为: ip link set enp4s0 promisc on。

执行后查看ifconfig,对应网卡后出现promisc即为成功。

将上方执行的命令添加到如下文件中即可开机自启。

/etc/rc.local

2.创建docker网络

docker network create -d macvlan --subnet=网段 --gateway=网关 -o parent=网卡名 macnet

说明:

网段:在这里我的ip是10.0.0.71,子网掩码为255.255.255.0,则这里填写10.0.0.0/24

网关:一般为路由器地址,我这里是10.0.0.1

网卡名:填写第一步开启混杂模式的网卡,我这里是enp4s0

示例如下:

docker network create -d macvlan --subnet=10.0.0.0/24 --gateway=10.0.0.1 -o parent=enp4s0 macnet

3.选择合适的docker镜像

我这里使用官方镜像,也可以选择大佬们封装的镜像,没什么要求。记得非x86-64架构要看好tag

docker pull openwrtorg/rootfs

4.创建容器

docker run --restart always --name openwrt -d --network macnet --privileged openwrtorg/rootfs /sbin/init

如不使用上面的镜像,按需替换即可。

不需要创建端口映射

5.设置openwrt网络

进入docker容器

docker exec -it openwrt sh

编辑/etc/config/network

openwrt中包含vi编辑器。

vi /etc/config/network

输入i 进入编辑模式

向文件内追加如下内容,缩进不能乱

config interface 'lan'
        option proto 'static'
        option ipaddr '旁路由地址'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '网关'
        option broadcast '广播地址'
        option device 'eth0'
        list dns 'DNS地址'

说明:

旁路由地址:填写你想设置为路由的ip,需与主路由同一网段,如:10.0.0.2

网关:路由器地址,如:10.0.0.1

广播地址:相同网段的最后一个ip,将网关的最后一段替换为255即可。如:10.0.0.255

DNS地址:建议使用路由器地址

示例:

config interface 'lan'
        option proto 'static'
        option ipaddr '10.0.0.2'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option gateway '10.0.0.1'
        option broadcast '10.0.0.255'
        option device 'eth0'
        list dns '10.0.0.1'

保存退出。vi编辑器按一下esc,输入:wq然后回车退出,冒号需要输入。

执行如下命令重启网络配置

/etc/init.d/network restart

至此结束。如使用的docker镜像不包含web界面,可使用如下方式安装。

6.安装WEB界面

使用passwd设置root密码

opkg update
opkg install luci

安装汉化包

opkg install luci-i18n-base-zh-cn

启动web

/etc/init.d/uhttpd enable
/etc/init.d/uhttpd start

至此,真的结束

上一篇