找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 4362|回复: 11

[小米7000] 有没有用docker运行op旁路由成功的?

[复制链接]
发表于 2023-12-8 14:17 | 显示全部楼层 |阅读模式
之前一直用的shell插件,最近很不稳定,ROM也满了,所以看了一下docker的op,怎么弄都不行,创建的macvlan也不能和主机互通


有没有哪位大佬搞定了的?出来分享一下经验
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2023-12-8 14:23 来自手机 | 显示全部楼层
macvlan和host主机是通不了

点评

promisc 这个模式就可以,再加一个ip link,已经完美运行半年  详情 回复 发表于 2023-12-8 14:40
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2023-12-8 14:36 | 显示全部楼层
宿主机开启promisc模式,然后给docker 容器直接分配一个宿主机同域ip,最后再做一个net,让宿主机网络也可以访问op 容器
##开启网卡混杂模式

ip link set eth0 promisc on
##网卡永久设置混杂模式
vi /etc/rc.local
ip link set eth0 promisc on
###查看设置结果
ifconfig
promisc




docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet

docker run -itd --name=OneCloud --restart=always --network=macnet --privileged=true jyhking/onecloud:1.1 /sbin/init

docker run --restart no --name openwrt -d --network macnet --ip 192.168.3.4 --privileged w8ves/openwrtnecloud /sbin/init


# 以下操作都在宿主机上运行,新增一个叫mynet(不要和容器的macvlan重名)的macvlan接口
ip link add mynet link eth0 type macvlan mode bridge
# 为该接口分配ip,并启用
ip addr add 192.168.1.100 dev mynet
ip link set mynet up
# 修改路由,使宿主机到192.168.1.10的通信全部经由mynet进行
ip route add 192.168.1.10 dev mynet

点评

[attachimg]659720[/attachimg]还是不通呀?大佬加个Q,帮忙弄一下吧 641268146  详情 回复 发表于 2023-12-8 21:01
另外请问你是用的那个docker op镜像?  详情 回复 发表于 2023-12-8 20:58
docker run --restart no --name openwrt -d --network macnet --ip 192.168.3.4 --privileged w8ves/openwrt/onecloud /sbin/init 这个命令是这样的吗?你发的被表情代替了  详情 回复 发表于 2023-12-8 20:55
promisc模式 这个模式是什么?  详情 回复 发表于 2023-12-8 20:46
有两条run的,可以忽略一条即可。  详情 回复 发表于 2023-12-8 14:37

评分

参与人数 1恩山币 +1 收起 理由
641268146 + 1 强大的恩山!(以下重复1万次)

查看全部评分

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2023-12-8 14:37 | 显示全部楼层
silentpoppy 发表于 2023-12-8 14:36
宿主机开启promisc模式,然后给docker 容器直接分配一个宿主机同域ip,最后再做一个net,让宿主机网络也可以 ...

有两条run的,可以忽略一条即可。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2023-12-8 14:40 | 显示全部楼层
zyqes 发表于 2023-12-8 14:23
macvlan和host主机是通不了

promisc 这个模式就可以,再加一个ip link,已经完美运行半年
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2023-12-8 20:46 | 显示全部楼层
silentpoppy 发表于 2023-12-8 14:36
宿主机开启promisc模式,然后给docker 容器直接分配一个宿主机同域ip,最后再做一个net,让宿主机网络也可以 ...

promisc模式
这个模式是什么?
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2023-12-8 20:55 | 显示全部楼层
silentpoppy 发表于 2023-12-8 14:36
宿主机开启promisc模式,然后给docker 容器直接分配一个宿主机同域ip,最后再做一个net,让宿主机网络也可以 ...

docker run --restart no --name openwrt -d --network macnet --ip 192.168.3.4 --privileged w8ves/openwrt/onecloud /sbin/init
这个命令是这样的吗?你发的被表情代替了
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2023-12-8 20:58 | 显示全部楼层
silentpoppy 发表于 2023-12-8 14:36
宿主机开启promisc模式,然后给docker 容器直接分配一个宿主机同域ip,最后再做一个net,让宿主机网络也可以 ...

另外请问你是用的那个docker op镜像?
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2023-12-8 21:01 | 显示全部楼层
silentpoppy 发表于 2023-12-8 14:36
宿主机开启promisc模式,然后给docker 容器直接分配一个宿主机同域ip,最后再做一个net,让宿主机网络也可以 ...

还是不通呀?大佬加个Q,帮忙弄一下吧 641268146


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-4-26 16:27 | 显示全部楼层
silentpoppy 发表于 2023-12-8 14:37
有两条run的,可以忽略一条即可。

Error response from daemon: authorization denied by plugin opa-docker-authz: request rejected by administrative policy.  为啥我会报没有权限  是要开启什么吗
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-11-14 16:19 | 显示全部楼层
本帖最后由 hengdm 于 2025-11-14 16:28 编辑

想用“师夷长技以制夷”A做旁路由,费老大劲天配置了macvlan容器,结果HTTPS死活无法连接,最终还是没法用。

小米固件在br-lan接口上处理 “非本机MAC(macvlan虚拟的子MAC)→WAN的TCP流量”时,有硬件/固件bug。也可能是MTK芯片的多MAC转发硬件bug。具体表现是:
- macvlan容器里,Ping、DNS、HTTP 80正常;TCP 443三次握手成功(nc -vz显示open);随后立刻被RST。SSL/TLS握手全部失败。
- 容器发出SYN→对端回SYN+ACK→容器ACK →接着的数据包在MTK/NAT层被丢或reset。不是对端reset而是本地路由器这条转发路径直接触发RST。
有兴趣可搜索:macvlan passthrough ARP/NAT bug on MTK BE7000 router

既然已经浪费了我大把青春和很多ChatGPT电费。 就记一下配置macvlan容器的方法吧,无HTTPS需求情况下还是可以用的。
ssh到路由器终端(即宿主机)执行:
  1. # 开启网卡promisc混杂模式
  2. ip link set br-lan promisc on

  3. # 新增接口macvlan0,分配IP并启用
  4. ip link add macvlan0 link br-lan type macvlan mode bridge
  5. ip addr add 192.168.42.2/24 dev macvlan0
  6. ip link set macvlan0 up

  7. # 允许 macvlan0 出口流量
  8. iptables -I INPUT -i macvlan0 -j ACCEPT
  9. iptables -I FORWARD -i macvlan0 -o pppoe-wan -j ACCEPT
  10. iptables -I FORWARD -i pppoe-wan -o macvlan0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

  11. # 为docker创建macvlan类型网络
  12. docker network create -d macvlan --subnet=192.168.42.0/24 --gateway=192.168.42.1 --opt parent=br-lan macvlan

  13. # 创建运行“师夷长技以制夷”a容器
  14. docker run -itd \
  15.   --name “师夷长技以制夷”a \
  16.   --network macvlan \
  17.   --ip=192.168.42.64 \
  18.   -v /mnt/usb-xxxxx/docker/“师夷长技以制夷”a:/etc/“师夷长技以制夷”a \
  19.   --restart unless-stopped \
  20.   --cap-add=NET_ADMIN \
  21.   --entrypoint sh \
  22.   ghcr.io/“师夷长技以制夷”a/“师夷长技以制夷”a \
  23.   sh -c "ip route del default 2>/dev/null; ip route add default via 192.168.42.2 dev eth0; sysctl -w net.ipv4.ip_forward=1; /usr/bin/“师夷长技以制夷”a"

  24. # 加路由,使宿主机到容器的通信全部经由macvlan0
  25. ip route add 192.168.42.64/32 dev macvlan0
复制代码

这样容器就能跑了。


还需要做持久化,不然路由器重启容器就没网了。小米路由器不支持/etc/rc.local持久化(重启清空),但脚本如下。有兴趣的请参考SSH持久化的方法,懒得搞了。


  1. #!/bin/sh
  2. # Put your custom commands here that should be executed once
  3. # the system init finished. By default this file does nothing.

  4. # Enable promiscuous mode on br-lan (required for macvlan to receive frames)
  5. ip link set br-lan promisc on

  6. # Create macvlan0 on br-lan (acts as upstream gateway for the container)
  7. ip link add macvlan0 link br-lan type macvlan mode bridge 2>/dev/null || true
  8. ip addr add 192.168.42.2/24 dev macvlan0 2>/dev/null || true
  9. ip link set macvlan0 up

  10. # Add return route so host knows 192.168.42.64 is reachable via macvlan0
  11. ip route add 192.168.42.64/32 dev macvlan0 2>/dev/null || true

  12. # Allow traffic from container to WAN
  13. iptables -I INPUT -i macvlan0 -j ACCEPT
  14. iptables -I FORWARD -i macvlan0 -o pppoe-wan -j ACCEPT

  15. # Allow return traffic from WAN back to container
  16. iptables -I FORWARD -i pppoe-wan -o macvlan0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

  17. exit 0
复制代码



点评

我早就放弃了,小米的固件docker太拉垮了,重启系统后,大概率出现docker核心丢失,还是老老实实的跑crash吧  详情 回复 发表于 2025-11-25 11:49
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2025-11-25 11:49 | 显示全部楼层
hengdm 发表于 2025-11-14 16:19
想用“师夷长技以制夷”A做旁路由,费老大劲天配置了macvlan容器,结果HTTPS死活无法连接,最终还是没法用 ...

我早就放弃了,小米的固件docker太拉垮了,重启系统后,大概率出现docker核心丢失,还是老老实实的跑crash吧
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2026-8-24 00:14

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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

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