开启网卡混杂模式
ip link set eth0 promisc on
创建Macvlan复用网卡
用于虚拟主机接入局域网,这里的gateway和subnet根据自己的网段设置
docker network create -d macvlan --subnet=192.168.50.0/24 --gateway=192.168.50.1 -o parent=eth0 macnet
创建容器
创建名为openwrt的OpenWRT容器
docker run --name openwrt --restart always -d --network macnet --privileged itvro/openwrt-aarch64:latest /sbin/init
修改容器网络参数
创建成功后,启动容器的bash进行设置
CoreELEC:~ # docker exec -it openwrt /bin/bash
bash-5.1# vi /etc/config/network
将lan口网络参数按自己网络结构来设置
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 'fdf7:b573:bfcc::/48'
config interface 'lan'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.50.2'
option netmask '255.255.255.0'
option gateway '192.168.50.1'
option broadcast '192.168.50.255'
option dns '192.168.50.1'
option ip6assign '60'
option delegate '0'
config interface 'vpn0'
option ifname 'tun0'
option proto 'none'
停用防火墙
bash-5.1# /etc/init.d/firewall disable&&/etc/init.d/firewall stop
Warning: Section @defaults[0] requires unavailable target extension FLOWOFFLOAD, disabling
Warning: Section @zone[1] (wan) cannot resolve device of network 'wan'
Warning: Section @zone[1] (wan) cannot resolve device of network 'wan6'
Warning: Section @defaults[0] requires unavailable target extension FLOWOFFLOAD, disabling
Warning: Section @zone[1] (wan) has no device, network, subnet or extra options
* Flushing IPv4 filter table
* Flushing IPv4 nat table
* Flushing IPv4 mangle table
重启网络
bash-5.1# /etc/init.d/network restart
退出到CoreELEC环境
bash-5.1# exit
重启OpenWRT容器
CoreELEC:~ # docker restart openwrt
现在可以像正常硬路由一样,通过刚才配置的容器网络ip地址 192.168.50.2 访问并配置Docker中的OpenWRT了。
另外注:做旁路由的话还要添加自定义防火墙规则(网络->防火墙->自定义规则):
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
也可以尝试(有桥接存在的情况下)
iptables -t nat -I POSTROUTING -o br-lan -j MASQUERADE
10 条评论
要是openwrt作为主路由,请问怎么设置
[...]原文地址:CoreELEC Docker OpenWRT 配置 - XiongHao's Notes[...]
请问博主用的 CE 是哪个编译版?
R大的9.2.7一步一步的做,客户机无法访问网络
我用的是这位Erick编译的CoreELEC Erick.9.2.2,内核编译带了ipset这些功能。
这个是恩山论坛的原贴子地址,你可以看一下到底是docker里openwrt配置不对,还是因为没带ipset的CE. https://www.right.com.cn/forum/thread-3998915-1-1.html
您好,请问您用的这个编译过内核的版本有存档吗,原帖的链接已经失效了还没补上|´・ω・)ノ
「CoreELEC-Phicomm-N1.arm-...-Erick.9.2.2.img.exe」https://www.aliyundrive.com/s/koQGAezXTRv 提取码: k37s
已传至阿里云盘,因阿里云盘不能分享常规的压缩文件,打包成exe自解压格式的。下载完解压出来.gz文件使用。
I cant download it, im from malaysia .. can u upload on google drive ?
我找找硬盘里还有没有备份,找到的话传阿里云盘。到时再告诉你地址。
谢谢,Erick.9.2.2是成功了。
不知你有没有试过 9.2.7 替换内核是否可以?我尝试了下即便用Erick.9.2.2的内核也是无法正常。
我是想着有时间的时候去学习一下怎么自己编译一下带ipset的CoreELEC,没有自己尝试高版本CE替换内核的方案。目前运行也没遇到瓶颈,所以暂时还没去折腾高版本内核,我现在N1上面跑CE,跑TVHeadend,docker里再跑个OpenWRT做旁路由什么的,稳定运行几百天都没管它。