配置Docker OpenWrt与宿主机网络互通及作为网关详细教程
以下是详细的教程文章,介绍如何在Armbian宿主机上使用Docker安装OpenWrt,并实现与宿主机网络互通及作为网关的工作流程。
最近需要用Docker版的OpenWrt(旁路由)作为网关,在配置过程中遇到了一些问题,通过查阅资料,最终完美解决。现将整体方案和具体操作步骤分享给大家。
背景
环境如下:
1. 宿主机操作系统:Armbian
2. 宿主机IP:192.168.5.2
3. 宿主机新macvlan接口ip:192.1683.5.3
4. Docker镜像:unifreq/OpenWrt-aarch64
5. Docker ip(macvlan):192.168.5.10
6. 主路由ip:192.168.5.1
7. 网段:192.168.5.0/24
操作步骤
1. Docker安装OpenWrt
- 使用Docker macvlan的bridge网络模式提升性能。
- 确认宿主机网络接口名,例如这里是eth0。
2. 确认宿主机网络接口名
- 在宿主机输入`ifconfig`命令查看网络接口信息,例如返回结果为:
eth0: flags=4163<UP> mtu 1500 inet 192.168.5.2 netmask 255.255.255.0 broadcast 192.168.5.255 inet6 xxxx::xxxx prefixlen 64 scopeid 0x20<link> ether 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 0 TX packets 6366329 bytes 10052966588 (10.0 GB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 65
3. 开启桥接网卡的混淆模式
- 在宿主机输入以下命令开启混淆模式:
ip link set eth0 promisc on
- 再次输入`ifconfig`确认是否成功开启,如果对应接口有PROMISC,证明已成功开启。
4. 创建docker macvlan网络
- 在宿主机输入以下命令创建docker macvlan网络:
docker network create --subnet=192.168.5.0/24 --gateway=192.168.5.1 -o parent=eth0 macvlan-net
5. 为docker创建macvlan网络
- 在宿主机输入以下命令为docker创建macvlan网络:
docker network create --subnet=192.168.5.0/24 --gateway=192.168.5.1 -o parent=eth0 macvlan-net
6. 创建OpenWrt容器
- 在宿主机执行以下命令创建OpenWrt容器,并指定使用restart策略:
docker run --restart always --name openwrt -d unifreq/openwrt-aarch64 /bin/bash
- 登录容器终端:
docker exec -it openwrt bash
- 修改容器内的/etc/config/network文件,使ipaddr为宿主机网段,并指向主路由地址,配置dns和gateway:
config interface 'lan' option type 'bridge' option proto 'static' option ifname 'eth0' option ipaddr '192.168.5.10' option netmask '255.255.255.0' option gateway '192.168.5.1' option dns '192.168.5.1' option domain 'lan'
- 重启network生效配置:
/etc/init.d/network restart
- 验证容器内网络配置生效,例如查看ifconfig配置是否正确。
7. 与宿主机网络互通
- 在宿主机创建新的macvlan接口:
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 metric 100 dev macvlan-proxy
- 测试ping通,例如从宿主机ping容器IP:
ip link set eth0 promisc on0
- 如果可以ping通,则表示配置成功。
8. 加入启动项
- 编辑/etc/rc.local文件,加入以下内容以在系统启动时执行相关命令:
#!/bin/sh -e # 确保rc.local文件具有可执行权限,并加入到启动项中 ip link set eth0 promisc on >/dev/null 2>&1 ip link add macvlan-proxy link eth0 type macvlan mode bridge >/dev/null 2>&1 ip addr add 192.168.5.3 dev macvlan-proxy >/dev/null 2>&1 ip link set macvlan-proxy up >/dev/null 2>&1 echo "1" >/proc/sys/net/ipv4/ip_forward route add default gw 192.168.5.10 metric 100 dev macvlan-proxy >/dev/null 2>&1 ip link set eth0 promisc on2 systemctl enable rc-local.service systemctl start rc-local.service
- 确保文件具有可执行权限:
ip link set eth0 promisc on2
至此,Docker OpenWrt与宿主机网络互通及作为网关的配置已完成。
希望这个详细教程能够帮助大家更好地理解和操作相关配置。
本文只介绍了如何配置Docker OpenWrt与宿主机网络互通,以及如何作为宿主机网关,至于OpenWrt如何配置作为旁路由(网关),还需要其他的设置,OpenWrt作为旁路由(网关)配置
点击链接加入群聊三群:751529538
点击链接加入群聊二群:376877156
点击链接加入群聊【路由器交流群:622891808已满】
本站附件分享,如果附件失效,可以去找找看
饿了么红包