通知 爱刷机 路由器教程 →→《省钱助手

配置Docker OpenWrt与宿主机网络互通及作为网关详细教程

2024-10-15
0评论
/
阅读
爱搜啊

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已满】

本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件


饿了么红包

饿了么红包

于2024-10-15发布