crabandapple 发表于 2025-4-1 15:13 解决了,不关MACVLAN的事,是我看QB显示防火墙连接,然后在OP那里设置了端口转发,折腾了好久。大佬也是玩PT吗?能求个药不 |
xzw186 发表于 2025-4-1 14:47 自定义网络是指ipvlan或macvlan的网络模式。 你开了unraid默认的,自建的就没了,就跟随unraid走旁路由出去了。 mp和qb联动好像是需要同一个网络类型,但是mp又需要旁路。你可以设定指向主路由的macvlan网络,mp也用这个网络,但是给它加上http代理就可以了。 |
我是unraid单口,指定网关为ikuai主路由,现在要实现unraid和个别docker走旁路由非常简单,就是在ikuai指定这些ip走"下一跳网关" 稳定用了好几年了 |
真是好难搞啊,创建好了QB下载器的MACVLNA ,网关设置的爱快的,不走旁路由。(在咸鱼花了几十让人帮忙搞了)搞好之后,QB和MP不能通了。然后开了unraid docker的自定义网络br0,MP和qb可以连接了,结果QB不能下载了,走回了openwrt,关了OPEN克拉斯就能下载了,真是头疼。 |
crabandapple 发表于 2025-3-26 09:05 好的谢谢大佬 |
xzw186 发表于 2025-3-18 13:21 目前是利用的双网口,设定部分网段地址走不同网关。 你的问题很简单,进入unrai的设置,进入docker,开启高级试图,有一项“保留用户自定义网络”设置为是即可。 |
最后楼主是怎么做的,最近也在玩PT,昨天试着做了一下,开始创建一个MACVLAN网络。然后提升错误,已经有了br0。删除之后,重新创建了一个,我的爱快网关是192.168.10.1.旁路由网关是192.168.10.3,UNRAID,网络设置直接指向旁路由。创建的br0设置指向爱快,创建成功了,后来查看显示指向了确实是指向了爱快,然后重启了docker 居然恢复成了指向旁路油。 |
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 --ip-range=192.168.2.x/xx -o parent=eth1 br1 transmission Custom:br1 192.168.2.? |
帮助后来者用。最近plex的国内访问出了大问题,服务端连不上plex.tv导致转码器无法下载,转码出大问题,搜索关键词找到本帖,被帖子里的楼层启发后,发现最简单的方法是:首先你必须是爱快主路由,OPENWRT旁路由,然后在UNRAID内创设macvlan时网关指向爱快(就是为了完全杜绝下载器、plex等跑魔法流量),然后对于需要魔法的macvlan创建的docker容器来说,首先考虑是否像moviepilot那样可以用环境变量设置代理,如果不行,则在爱快主路由内设置下一条网关为OPENWRT,便可走魔法和通过OP的代理软件设置规则。 |
25楼应该是正解,根据他的方法,我用linuxserver/qbittorrent举例,我在unraid下用的是docker-compose.yml运行容器。 我的docker-compose.yml如下: version: '3.9' services: qbittorrent: container_name: qbittorrent image: linuxserver/qbittorrent:14.3.9v2 restart: unless-stopped networks: br0: ipv4_address: 192.168.2.99 ports: - 9999:9999 - 55555:55555 - 55555:55555/udp volumes: - /mnt/user/appdata/qbittorrent/config:/config - /mnt/ssd:/downloads entrypoint: /config/entrypoint.sh environment: - PUID=1000 - PGID=100 - TZ=Asia/Shanghai - WEBUI_PORT=9999 cap_add: - NET_ADMIN # 允许修改网络设置 networks: br0: # 定义 macvlan 网络 external: true # 使用外部网络 先写一个shell脚本,我的文件名是route.sh,内容如下: #!/bin/bash #如果容器里没有route命令,去掉下面这行的#先安装route命令(安装这个貌似要选择yes/no之类的,最好先拉取镜像安装好容器之后,再用命令docker commit -m="这里随便填" -a="这里随便填" 38fbe36addd5 linuxserver/qbittorrent:14.3.9v2创建一个有route工具的镜像,38fbe36addd5是原来容器的ID,linuxserver/qbittorrent:14.3.9v2我在原来容器的基础上加了个v2表示区别) #apt-get update && apt install net-tools # 删除原来的路由规则 route del -net 0.0.0.0/0 gw 192.168.2.3 # 添加新的路由规则 route add -net 0.0.0.0/0 gw 192.168.2.1 再生成一个entrypoint.sh,内容如下: #!/bin/bash # 执行你的 route.sh 脚本 bash /config/route.sh # 调用 linuxserver/qbittorrent 的默认 entrypoint 脚本 exec /init 这两个文件一起放进config文件夹,先用#注释掉entrypoint: /config/entrypoint.sh这行,这样才能进入容器,不然会一直重启。在容器里打开控制台,分别运行chmod +x /config/route.sh和chmod +x /config/entrypoint.sh,使这两个文件拥有执行权限,不然进入容器会报错。权限修改好后,停止容器,去掉docker-compose.yml里entrypoint: /config/entrypoint.sh前的#号,保存运行容器即可。进入容器控制台,使用route -n命令可以看到路由表已更改为192.168.2.1,这样即便重启容器也会自动执行这个脚本,从主路由192.168.2.1出口。 |
vivin7 发表于 2023-6-17 22:10 我之前也是这么做的,用排除列表,但是总觉得有问题。所以就改了,现在是unraid宿主机指向旁路,设置了macvlan指向主路,剩下需要旁路的docker添加HTTP PROXY参数解决。 unraid只是简化了docker的创建步骤吧,对不会的人友好。可能用命令行或者portainer,compose会好点,但是暂时没时间去尝试。 |
crabandapple 发表于 2023-6-17 14:58 懂了。。。 我自己的方案是走桥接LAN,给tr和qb指定一个固定内网ip,然后在科学里直接排除掉这个ip。也算绕道解决了。 我是不太喜欢这么搞,明明就是一个网关的事儿。感觉unraid对docker的支持甚至还比不过群晖和qnap,吐血。。。 |
vivin7 发表于 2023-6-16 18:15 暂时放弃了,用了别的办法。 将macvlan的网关指向主路由,这样tr和qb就不用走科学了。然后剩下的emby,nt那些需要的就加了个HTTP代理。 |
坐等楼主新的结果, 我用--gateway 的命令去限制到另一个网关,建立失败。 |
1.方案1 不用新建子网/网段 docker network connect --gateway=<GATEWAY> <NETWORK_NAME> <CONTAINER_NAME> 当你使用 docker network connect 命令将容器连接到网络时,可以使用 --gateway 参数指定一个不同的网关。这将覆盖创建网络时指定的默认网关,仅对当前连接的容器有效。 不过重启无效。 要重启有效就写脚本,额外参数跑脚本 2. 新建子网/网段,需要用另一个网关就用那个新建的网络 |
再弄一个 docker host 不就好了 |
thereone 发表于 2023-6-7 22:48 非常感谢! 我去试试。。。。 |
crabandapple 发表于 2023-6-7 21:57 先算一下要走旁路由的多还是不走的多,要走的多的话 少走的少 那就手动进入到容器里面修改网关,这个不同网关还有些不好解决。只能手动修改网关了。修改方法也很简单。 创建容器的时候要加一个 --privileged 参数,才有真实的root权限。 docker exec -it 容器ID /bin/bash 就可以进入容器 进入容器后用route -n 查看路由表 linux修改网关里面 增加默认路由 route add -net 0.0.0.0/0 gw 192.168.x.x 跟上你的主路由的网关就行 删除默认路由 route del -net 0.0.0.0/0 gw 192.168.x.x 跟上你的docker设置的默认网关就行 可以先删除在添加默认路由 |
喂你好嗎 发表于 2023-6-7 21:24 是可以,但是设置好了所有docker都走同一个网关。 |
macvlan设置的时候我咋记得可以设置gateway? |
x7touch 发表于 2023-6-7 17:21 你的意思是创建两个网段? 比如我家里网段是192.168.2.0,然后增加一个192.168.3.0的网段? |
thereone 发表于 2023-6-7 17:13 这个好像不行啊 docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.3 -o parent=br0 br0 我用这个命令创建的br0 再创建一个,名称改别的也会提示这个网段已经存在了。。。 |
宿主机建两个网络分别指向两个网关,不同docker创建的时候走不同网络 |
crabandapple 发表于 2023-6-7 16:12 在创建一个br1网络网段还是一样,网关不一样的。需要用到br1就改成br1就行。 |
thereone 发表于 2023-6-7 14:48 刚看了下,好像不太对。 我这个是unraid宿主机。 已经建立了br0的自定义网络,网络是192.168.2.0/24网段,网关192.168.2.3。 在这里再新建docker选择这个网络无法更改网关了。。。将他删除?都重新创建? |
0x2020201 发表于 2023-6-7 14:55 大概知道了,就是用命令创建docker 创建一个就指定一个ip,指定一个网关。。unraid里这么操作好像有点烦。我去试试。 感谢指教 |
thereone 发表于 2023-6-7 14:48 懂了,感谢答复。 就是通过命令来创建容器。。。 unriad里直接视图界面。。。不行我回头装个portainer试试。不过好像这样装unraid的dokcer界面就看不到了,得进portainer管理。 |
本帖最后由 0x2020201 于 2023-6-7 15:21 编辑 crabandapple 发表于 2023-6-7 14:33 我是直接用docker-compose,类似如下:
和楼上提到的创建容器的时候通过--gateway=x.x.x.x指定网关是一样的效果 |
本帖最后由 thereone 于 2023-6-7 14:49 编辑 既然docker只需要指定容器过旁路,那在创建容器的时候指定网关不就行了 添加 --gateway=x.x.x.x。觉得麻烦那就装个portainer生成容器的时候也可以指定网关的,创建完成后点击编辑重新生成该容器时也可以编辑网关的。方法有很多。 |
Archiver|手机版|小黑屋|Chiphell
( 沪ICP备12027953号-5 )310112100042806
GMT+8, 2025-7-10 12:52 , Processed in 0.014862 second(s), 9 queries , Gzip On, Redis On.
Powered by Discuz! X3.5 Licensed
© 2007-2024 Chiphell.com All rights reserved.