X86下Docker版Openwrt记录
环境设置
1、打开网卡混杂模式,其中enp1s0根据ifconfig命令找到自己的本地网卡名称替换
sudo ip link set enp1s0 promisc on
2、创建名称为macvlan的虚拟网卡,并指定网关gateway、子网网段subnet、虚拟网卡的真实父级网卡parent(第一步中的本地网卡名称)
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=enp1s0 macnet
3、查看虚拟网卡是否创建成功,成功的话能看到名称为“macnet”的虚拟网卡
docker network ls
拉取镜像
4、拉取镜像,可以通过阿里云镜像提升镜像拉取速度
piaoyizy/openwrt-x86
5、创建容器并后台运行
docker run --restart unless-stopped --name openwrt -d --network macnet --privileged piaoyizy/openwrt-x86 /sbin/init
(视情况加选项–mac-address 02:42:c0:a8:01:xx –ip=192.168.x.x ,arm架构比如玩客云的话推荐使用 dreamwsbg/openwrt 镜像)
容器内设置
6、进入容器内部环境
docker exec -it openwrt bash
7、根据自己实际情况修改网络配置,修改完成后保存配置vim /etc/config/network
例如:
1 |
|
8、exit
退出容器内部环境,在宿主机环境执行重启openwrt网络命令
/etc/init.d/networking restart
Openwrt页面设置
9、openwrt设置
进入openwrt网页后台,大多数情况下用户名密码为root/password root/root
在接口里取消lan的br-lan桥接,关闭其IPV6并且忽略DHCP然后防火墙规则里设置iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
补充1:当OPENWRT作为主路由时开启IPV6
(以下为OP主路由开启IPV6的设置,旁路需要根据情况调整:如需IPV6建议新建WAN6接口,设备修改为@wan,然后来到 lan 的高级设置,勾选委托 IPv6 前缀,并将 IPv6 分配长度从禁用修改为 64 或更小,接着再点击 lan 的 DHCP 服务器中的 IPv6 设置,将 RA 服务与 DHCPv6 服务都设置为服务器模式。最后再来到 lan 的 DHCP 服务器中的 IPv6 RA 设置,勾选启用 SLAAC,RA 标记看自己的需求是否需要同时开启 DHCPv6,需要的话勾选**受管配置(M)和其他配置(O),不需要则只勾选其他配置(O)**)。
补充2:当OPENWRT作为旁路有时开启IPV6
接口里新建一个LAN6,选择DHCPV6,物理设置里 选择自定义输入“**@lan**” 重要,重要,重要。
设置防火墙,在LAN6接口设置里,开启“开机自动运行”“使用内置的IPV6管理”“使用默认网关”“使用对端通告的DNS服务器”。
LAN里的IPV6设置,DHCP服务器-基本设置,路由通告服务-服务器模式,DHCPV6服务-已禁用,NDP代理-已禁用。
补充3:docker启用ipv6
- 在
/etc/docker/daemon.json
文件中填下 IPv6 相关配置1
2
3
4
5
6{
"ipv6": true,
"ipv6tables": true,
"experimental": true,
"fixed-cidr-v6": "2001:db8::/64"
} - 重启 Docker
systemctl restart docker
镜像详细使用方法请参考博客文章:
解决openwrt容器和宿主机互通问题