找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 6909|回复: 9

[openwrt(x86)] docker 下安装 openwrt 做旁路由(拨号 & DHCP)

[复制链接]
本帖最后由 lothario 于 2021-8-31 14:43 编辑

鉴于没几个帖子看到有人尝试用单网口机器安装docker 做主路由的教程.
于是把自己最近踩的坑做一个总结, 顺带有其他的朋友想参考的可以有个参照.


前置条件
1> 有个单网口的机器x86/arm 都可以吧.
2> 安装合适的linux os(debian/centos/ubuntu)
3> 在os 上安装docker. 可参照如下docker 官网.
https://docs.docker.com/engine/install/
4> 编译/找大佬要一个docker 版本的 openwrt. 我是自己编译的. 这里感谢lean/esir 等大佬的连接和教程.
如果有人需要编译的详细教程. 可以后续再出...
https://github.com/coolsnowwolf/lede


配置网络:
1> 光猫接路由器lan口
2> 单网口机器接路由器lan口.


然后是选择docker 的网络, 由于需要在局域网二层内可发现且需要设置独立的ip
所以选择docker 在2层网络下的 macvlan/ipvlan 这里用macvlan 来举例.
macvlan 也有局限:
1> 不能和host machine 网络互通. 具体原因可以参考如下链接, 有兴趣的同学可以自行查看.
https://zhuanlan.zhihu.com/p/67384482
https://blog.csdn.net/dog250/article/details/45788279
2> 不能assign gateway ip 到container, 这点就限制了我们使用container进行拨号的想法, 但是可以通过如下WA 解决.
https://github.com/moby/libnetwork/issues/1447


接下来开始正式的配置:
开启网络接口混杂模式(我没有开启也ok, 不晓得为什么)
sudo ip link set eth0 promisc on


创建网络
docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.100 \
--aux-address "ct=192.168.1.1" \
--aux-address "router=192.168.1.2" \
--aux-address "host=192.168.1.3" \
-o macvlan_mode=bridge \
-o parent=vmbr0 \
mv


加载OP 的 docker image, 默认生成latest 的tag 也可以自定义为日期的tag
docker import openwrt*.tar.gz openwrt


运行container
docker run -itd -P --privileged \
    --name op \
    --hostname openwrt \
    --network mv \
    --cap-add NET_ADMIN \
    openwrt /sbin/init


进入container 内部手动修改ip & /etc/resolv.conf
ifconfig eth0 192.168.1.100 netmask 255.255.255.0


将nameserver 从127.0.0.11 修改为127.0.0.1
/ # nslookup www.baidu.com
nslookup: write to '127.0.0.11': Connection refused
;; connection timed out; no servers could be reached

最后通过任意连接路由器的机器打开http://192.168.1.100 开启配置op.
资源消耗非常低. 我跑300M 11年前的笔记本才占7% 的cpu.
在mv 网络上创建的其他container 都以op 为gateway(网络出口), 效率还是蛮高的.
加一个adguardhome 的启动, 这样可以把op 的dns解析放在adh 上面. 也还可以.
docker run -dit -P \
    --name adh \
    --hostname adguardhome\
    --network mv --ip 192.168.1.9 \
    --restart unless-stopped\
    -v /etc/adh/work:/opt/adguardhome/work\
    -v /etc/adh/conf:/opt/adguardhome/conf\
    adguard/adguardhome

我的恩山、我的无线 The best wifi forum is right here.
前排学习学习
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

厉害厉害

点评

划水, 互相学习...  详情 回复 发表于 2021-8-31 19:44
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

都能编译固件了,直接刷op不好吗

点评

直接刷op少了很多可玩性呀, docker 可玩性很高的...  详情 回复 发表于 2021-8-31 19:45
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

都能装docker了,直接装个虚拟机不行吗

点评

虚拟机性能没有docker高的, 我机器上有proxmox, 在虚拟机下跑300m 得占用20% 以上的cpu. docker 下只有7%  详情 回复 发表于 2021-8-31 19:46
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层

划水, 互相学习...
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
await 发表于 2021-8-31 16:15
都能编译固件了,直接刷op不好吗

直接刷op少了很多可玩性呀, docker 可玩性很高的...
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
wander555 发表于 2021-8-31 17:31
都能装docker了,直接装个虚拟机不行吗

虚拟机性能没有docker高的, 我机器上有proxmox, 在虚拟机下跑300m 得占用20% 以上的cpu. docker 下只有7%
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

将nameserver 从127.0.0.11 修改为127.0.0.1
/ # nslookup www.baidu.com
nslookup: write to '127.0.0.11': Connection refused
;; connection timed out; no servers could be reached

需要这个,点赞留念
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

这正是我需要的单网口模式,谢谢大佬!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-28 14:44

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表