- 博客/
Docker 部署多网口 openWrt 软路由
作者
Johny
熟练的 云原生搬砖师
Table of Contents
环境说明:#
操作系统: Centos 7.8.2003
内核版本: 4.14.129-bbrplus
Docker 版本: 19.03.12
使用 Docker 镜像: raymondwong/openwrt_r9:20.1.24-x86_64
网卡说明: 板载螃蟹网卡、绿联
usb3.0
千M 网卡
系统网卡配置#
将对应网卡启动混淆模式#
ip link set enp0s29u1u2 promisc on
ip link set enp2s0 promisc on
echo """ip link set enp0s29u1u2 promisc on
ip link set enp2s0 promisc on""" >> /etc/rc.local # 配置加入开机自启动
chmod a+x /etc/rc.local
Docker 创建虚拟网卡#
主机规划:
我们现在要基于现有的网卡创建两个
macvlan
类型的网卡,这样后面创建的容器才能有网卡进行挂载使用,并且使用独立的网卡进行数据报文的通讯。macnet1
我们作为后面openWRT容器
运行的Wan口
使用,macnet2
则是Lan口
。oepnWRT 使用网络说明
(环境存在差异 按照你的环境配置参照修改即可)
- wan: 192.168.2.0/24
- lan:192.168.22.0/24
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=enp2s0 macnet1
docker network create -d macvlan -o parent=enp0s29u1u2 macnet2
容器网络配置#
启动容器#
这里启动时关联了创建的一张网卡,没有找到启动时关联多张网卡的方法,如有知道的小伙伴请留言告知。
docker run --name openwrt \
--restart always \
-d --network macnet2 \
--privileged raymondwong/openwrt_r9:20.1.24-x86_64 /sbin/init
添加第二块网卡#
docker network connect macnet1 openwrt
进入容器 修改网卡配置#
docker exec -it openwrt bash
查看 发现没有 IP 我们需要手动配置一下
修改网卡配置文件: /etc/config/network
#
默认的配置如下:#
修改后的配置展示#
Lan口配置了静态ip
192.168.2.111
,wan口
通过使用dhcp
的方式自动获取IP使用.
cat > /etc/config/network << EOF
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fdc4:0ac4:85d4::/48'
config interface 'lan'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.22.111'
option netmask '255.255.255.0'
config interface 'wan'
option ifname 'eth1'
option proto 'dhcp'
config interface 'vpn0'
option ifname 'tun0'
option proto 'none'
EOF
重启网卡#
/etc/init.d/network restart
再次检查一下 此时我们配置的 ip 已经有了
客户端使用及优化#
配置与 Lan口
为同一个网段的 ip#
访问 Dashboard
#
我使用的这个容器默认的用户名密码为:
User: root
Passwold: password
测试上网效果#
Ping 测试
#
ping -c 3 223.5.5.5 # 发现无法 ping 通
检查路由
- 常见操作系统查看路由表的方法
- mac 通常使用命令:
ip route
- linux 通常使用命令:
route -n
- windows 通常使用命令:
route print
检查路由发现是正确指向 Lan口
上面的网关的
导致客户端无法正常上网的解决方案#
⚠️ 添加防火墙自定义规则进行解决
将下面这个粘贴进去,注意修改示例中的网段为你 Lan口上的网段
,然后重启一下防火墙#
iptables -t nat -I POSTROUTING -s 192.168.22.0/24 -j MASQUERADE
再次测试一下 发现此时的网络已可以ping通 ~#
相关文章
Docker 部署的 openWrt 软路由, 并解决无法与宿主机通信问题
·923 字·2 分钟·
fix
openwrt
n1
docker-compose
docker
openwrt
Kind 部署本地k8s集群的使用记录
·326 字·1 分钟·
k8s
docker
devops
centos7
kind