教育类php开源网站,seo关键词排名优,宁波网络推广公司核心秘密,一个空间放多个网站目录 背景环境 操作步骤Docker安装OpenWrt确认宿主机网络接口名创建macvlan网络开启桥接网卡的混淆模式为docker创建macvlan网络 创建OpenWrt容器登录容器更改ip网段重启network生效配置 与宿主机网络互通宿主机创建新的macvlan接口为新接口分配ip并启用添加静态路由使宿主机与… 目录 背景环境 操作步骤Docker安装OpenWrt确认宿主机网络接口名创建macvlan网络开启桥接网卡的混淆模式为docker创建macvlan网络 创建OpenWrt容器登录容器更改ip网段重启network生效配置 与宿主机网络互通宿主机创建新的macvlan接口为新接口分配ip并启用添加静态路由使宿主机与容器使用新接口通信配置新接口的默认网关为容器地址测试是否能ping通加入启动项自启动 备注 背景
最近需要用Docker版的Openwrt作为旁路由网关在配置过程中遇到一些问题通过查阅资料最终完美解决。现在将整体方案和具体操作步骤贴到这里分享给大家
环境
这里我使用的环境如下
宿主机操作系统Armbian宿主机ip192.168.5.2宿主机新macvlan接口ip192.168.5.3Docker镜像unifreq/openwrt-aarch64Docker ipmacvlan192.168.5.10网段192.168.5.0/24主路由ip192.168.5.1
操作步骤
Docker安装OpenWrt
这里我使用docker macvlan的bridge网络模式提升性能
确认宿主机网络接口名
ifconfig以我的返回为例这里是eth0
eth0: flags4419UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 192.168.5.2 netmask 255.255.255.0 broadcast 192.168.5.255inet6 xxxxxxxxxxx prefixlen 64 scopeid 0x20linkether d2:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)RX packets 10762458 bytes 10675054731 (10.6 GB)RX errors 0 dropped 164956 overruns 0 frame 0TX packets 6366329 bytes 10052966588 (10.0 GB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 65 创建macvlan网络
开启桥接网卡的混淆模式
在宿主机输入下面命令
ip link set eth0 promisc on再一次ifconfig接口名查看是否成功开启。如果对应接口有PROMISC证明已成功开启
eth0: flags4419UP,BROADCAST,RUNNING,PROMISC,MULTICAST mtu 1500inet 192.168.5.2 netmask 255.255.255.0 broadcast 192.168.5.255inet6 xxxxxxxxxxx prefixlen 64 scopeid 0x20linkether d2:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)RX packets 10762458 bytes 10675054731 (10.6 GB)RX errors 0 dropped 164956 overruns 0 frame 0TX packets 6366329 bytes 10052966588 (10.0 GB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 65 为docker创建macvlan网络
docker network create -d macvlan --subnet192.168.5.0/24 --gateway192.168.5.1 -o parenteth0 macnet创建OpenWrt容器
在宿主机执行
docker run --restart always --name openwrt -d --network macnet --privileged unifreq/openwrt-aarch64:latest /sbin/init登录容器更改ip网段
宿主机执行下面命令进入容器终端
docker exec -it openwrt bash在容器终端下修改/etc/config/network文件修改ipaddr为宿主机网段并增加gateway和dns配置指向主路由地址配置如下
config interface lanoption type bridgeoption ifname eth0option proto staticoption ipaddr 192.168.5.10option dns 192.168.5.1option gateway 192.168.5.1option netmask 255.255.255.0重启network生效配置
容器下执行
/etc/init.d/network restart然后ifconfig相应的接口名看配置是否生效并测试是否可以访问互联网
ping -c 3 baidu.com与宿主机网络互通
在用上述配置创建完OpenWrt docker后虽然宿主机和容器在同一网段但是因为macvlan模式的限制宿主机与容器是无法互相通信的但与同网段下的其他机器是可以相互通信的所以需要在宿主机创建一个新的macvlan接口然后增加一条宿主机macvlan访问容器macvlan的静态路由。
在宿主机终端执行下面代码 注macvlan-proxy这个接口名称可以随便起只需要每条命令的名字保持一致即可
宿主机创建新的macvlan接口
ip link add macvlan-proxy link eth0 type macvlan mode bridge为新接口分配ip并启用
ip addr add 192.168.5.3 dev macvlan-proxy
ip link set macvlan-proxy up添加静态路由使宿主机与容器使用新接口通信
ip route add 192.168.5.10 dev macvlan-proxy配置新接口的默认网关为容器地址
route add default gw 192.168.5.10 macvlan-proxy测试是否能ping通
在宿主机执行
# 宿主机--OpenWrt容器
ping 192.168.5.10 -c 3
# OpenWrt容器--宿主机
docker exec -it openwrt bash -c ping 192.168.5.3 -c 3如果可以相互ping通则证明设置没问题。
加入启动项自启动
上述命令会在宿主机重启后失效为了每次重启宿主机均可自动运行上述命令需要编辑/etc/rc.local文件将上面的命令粘贴到exit 0之前
ip link set eth0 promisc on /dev/null 21
ip link add macvlan-proxy link eth0 type macvlan mode bridge
ip addr add 192.168.5.3 dev macvlan-proxy
ip link set macvlan-proxy up
ip route add 192.168.5.10 dev macvlan-proxy
route add default gw 192.168.5.10 macvlan-proxy最后确保为/etc/rc.local文件增加了可执行权限且rc-local.service是自启动的状态
chmod ax /etc/rc.local
systemctl enable rc-local至此Docker OpenWrt与宿主机网络互通配置已完成可重启后验证是否生效。
备注
本文只介绍了如何配置Docker OpenWrt与宿主机网络互通以及如何作为宿主机网关至于OpenWrt如何配置作为旁路由网关还需要其他的设置详见此文章。 参考资料1 参考资料2 参考资料3