找回密码
 加入我们
搜索
      

【已解决,附方法】求教大佬们一个走不同网关的问题。urnaid,不同网关

查看数: 16682 | 评论数: 41 | 收藏 6
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-6-7 00:09

正文摘要:

本帖最后由 crabandapple 于 2024-8-26 08:36 编辑 貌似自己表述有点问题,现在情况是这样 主路由192.168.2.1,旁路由192.168.2.3,旁路由网关指向主路由。 unraid是192.168.2.132,网关指向旁路。里面的docker创 ...

回复

xzw186 发表于 2025-4-7 08:15
crabandapple 发表于 2025-4-1 15:13
自定义网络是指ipvlan或macvlan的网络模式。
你开了unraid默认的,自建的就没了,就跟随unraid走旁路由出 ...

解决了,不关MACVLAN的事,是我看QB显示防火墙连接,然后在OP那里设置了端口转发,折腾了好久。大佬也是玩PT吗?能求个药不
crabandapple 发表于 2025-4-1 15:13
xzw186 发表于 2025-4-1 14:47
真是好难搞啊,创建好了QB下载器的MACVLNA ,网关设置的爱快的,不走旁路由。(在咸鱼花了几十让人帮忙搞了 ...

自定义网络是指ipvlan或macvlan的网络模式。
你开了unraid默认的,自建的就没了,就跟随unraid走旁路由出去了。
mp和qb联动好像是需要同一个网络类型,但是mp又需要旁路。你可以设定指向主路由的macvlan网络,mp也用这个网络,但是给它加上http代理就可以了。
eneiku 发表于 2025-4-1 15:01
我是unraid单口,指定网关为ikuai主路由,现在要实现unraid和个别docker走旁路由非常简单,就是在ikuai指定这些ip走"下一跳网关"

稳定用了好几年了
xzw186 发表于 2025-4-1 14:47
真是好难搞啊,创建好了QB下载器的MACVLNA ,网关设置的爱快的,不走旁路由。(在咸鱼花了几十让人帮忙搞了)搞好之后,QB和MP不能通了。然后开了unraid docker的自定义网络br0,MP和qb可以连接了,结果QB不能下载了,走回了openwrt,关了OPEN克拉斯就能下载了,真是头疼。
xzw186 发表于 2025-3-26 15:56
crabandapple 发表于 2025-3-26 09:05
目前是利用的双网口,设定部分网段地址走不同网关。
你的问题很简单,进入unrai的设置,进入docker,开启 ...

好的谢谢大佬
crabandapple 发表于 2025-3-26 09:05
xzw186 发表于 2025-3-18 13:21
最后楼主是怎么做的,最近也在玩PT,昨天试着做了一下,开始创建一个MACVLAN网络。然后提升错误,已经有了b ...

目前是利用的双网口,设定部分网段地址走不同网关。
你的问题很简单,进入unrai的设置,进入docker,开启高级试图,有一项“保留用户自定义网络”设置为是即可。
xzw186 发表于 2025-3-18 13:21
最后楼主是怎么做的,最近也在玩PT,昨天试着做了一下,开始创建一个MACVLAN网络。然后提升错误,已经有了br0。删除之后,重新创建了一个,我的爱快网关是192.168.10.1.旁路由网关是192.168.10.3,UNRAID,网络设置直接指向旁路由。创建的br0设置指向爱快,创建成功了,后来查看显示指向了确实是指向了爱快,然后重启了docker 居然恢复成了指向旁路油。
haroldi 发表于 2024-8-18 20:00
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.?
BENbenBEN 发表于 2024-8-18 18:27
帮助后来者用。最近plex的国内访问出了大问题,服务端连不上plex.tv导致转码器无法下载,转码出大问题,搜索关键词找到本帖,被帖子里的楼层启发后,发现最简单的方法是:首先你必须是爱快主路由,OPENWRT旁路由,然后在UNRAID内创设macvlan时网关指向爱快(就是为了完全杜绝下载器、plex等跑魔法流量),然后对于需要魔法的macvlan创建的docker容器来说,首先考虑是否像moviepilot那样可以用环境变量设置代理,如果不行,则在爱快主路由内设置下一条网关为OPENWRT,便可走魔法和通过OP的代理软件设置规则。
d7a564fe0a3e1a91d063d2130a4c492e.png
summerx99 发表于 2023-6-27 20:46
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出口。
crabandapple 发表于 2023-6-18 09:38
vivin7 发表于 2023-6-17 22:10
懂了。。。
我自己的方案是走桥接LAN,给tr和qb指定一个固定内网ip,然后在科学里直接排除掉这个ip。也算 ...

我之前也是这么做的,用排除列表,但是总觉得有问题。所以就改了,现在是unraid宿主机指向旁路,设置了macvlan指向主路,剩下需要旁路的docker添加HTTP PROXY参数解决。
unraid只是简化了docker的创建步骤吧,对不会的人友好。可能用命令行或者portainer,compose会好点,但是暂时没时间去尝试。
vivin7 发表于 2023-6-17 22:10
crabandapple 发表于 2023-6-17 14:58
暂时放弃了,用了别的办法。
将macvlan的网关指向主路由,这样tr和qb就不用走科学了。然后剩下的emby,nt ...

懂了。。。
我自己的方案是走桥接LAN,给tr和qb指定一个固定内网ip,然后在科学里直接排除掉这个ip。也算绕道解决了。
我是不太喜欢这么搞,明明就是一个网关的事儿。感觉unraid对docker的支持甚至还比不过群晖和qnap,吐血。。。
crabandapple 发表于 2023-6-17 14:58
vivin7 发表于 2023-6-16 18:15
坐等楼主新的结果,
我用--gateway 的命令去限制到另一个网关,建立失败。

暂时放弃了,用了别的办法。
将macvlan的网关指向主路由,这样tr和qb就不用走科学了。然后剩下的emby,nt那些需要的就加了个HTTP代理。
vivin7 发表于 2023-6-16 18:15
坐等楼主新的结果,
我用--gateway 的命令去限制到另一个网关,建立失败。
Prikoo 发表于 2023-6-8 02:05
1.方案1 不用新建子网/网段
docker network connect --gateway=<GATEWAY> <NETWORK_NAME> <CONTAINER_NAME>
当你使用 docker network connect 命令将容器连接到网络时,可以使用 --gateway 参数指定一个不同的网关。这将覆盖创建网络时指定的默认网关,仅对当前连接的容器有效。
不过重启无效。
要重启有效就写脚本,额外参数跑脚本
2. 新建子网/网段,需要用另一个网关就用那个新建的网络
老饭 发表于 2023-6-8 01:20
再弄一个 docker host 不就好了
crabandapple 发表于 2023-6-7 23:16
thereone 发表于 2023-6-7 22:48
先算一下要走旁路由的多还是不走的多,要走的多的话 少走的少 那就手动进入到容器里面修改网关,这个不同 ...

非常感谢!
我去试试。。。。
thereone 发表于 2023-6-7 22:48
crabandapple 发表于 2023-6-7 21:57
是可以,但是设置好了所有docker都走同一个网关。

先算一下要走旁路由的多还是不走的多,要走的多的话 少走的少 那就手动进入到容器里面修改网关,这个不同网关还有些不好解决。只能手动修改网关了。修改方法也很简单。
创建容器的时候要加一个 --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设置的默认网关就行
可以先删除在添加默认路由
crabandapple 发表于 2023-6-7 21:57
喂你好嗎 发表于 2023-6-7 21:24
macvlan设置的时候我咋记得可以设置gateway?

是可以,但是设置好了所有docker都走同一个网关。
喂你好嗎 发表于 2023-6-7 21:24
macvlan设置的时候我咋记得可以设置gateway?
crabandapple 发表于 2023-6-7 20:31
x7touch 发表于 2023-6-7 17:21
宿主机建两个网络分别指向两个网关,不同docker创建的时候走不同网络

你的意思是创建两个网段?
比如我家里网段是192.168.2.0,然后增加一个192.168.3.0的网段?
crabandapple 发表于 2023-6-7 20:30
thereone 发表于 2023-6-7 17:13
在创建一个br1网络网段还是一样,网关不一样的。需要用到br1就改成br1就行。 ...

这个好像不行啊
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.3 -o parent=br0 br0

我用这个命令创建的br0
再创建一个,名称改别的也会提示这个网段已经存在了。。。
x7touch 发表于 2023-6-7 17:21
宿主机建两个网络分别指向两个网关,不同docker创建的时候走不同网络
thereone 发表于 2023-6-7 17:13
crabandapple 发表于 2023-6-7 16:12
刚看了下,好像不太对。
我这个是unraid宿主机。
已经建立了br0的自定义网络,网络是192.168.2.0/24网段 ...

在创建一个br1网络网段还是一样,网关不一样的。需要用到br1就改成br1就行。
crabandapple 发表于 2023-6-7 16:12
thereone 发表于 2023-6-7 14:48
既然docker只需要指定容器过旁路,那在创建容器的时候指定网关不就行了 添加 --gateway=x.x.x.x。觉得麻烦 ...

刚看了下,好像不太对。
我这个是unraid宿主机。
已经建立了br0的自定义网络,网络是192.168.2.0/24网段,网关192.168.2.3。
在这里再新建docker选择这个网络无法更改网关了。。。将他删除?都重新创建?
crabandapple 发表于 2023-6-7 16:00
0x2020201 发表于 2023-6-7 14:55
我是直接用docker-compose,类似如下:

大概知道了,就是用命令创建docker
创建一个就指定一个ip,指定一个网关。。unraid里这么操作好像有点烦。我去试试。
感谢指教
crabandapple 发表于 2023-6-7 15:59
thereone 发表于 2023-6-7 14:48
既然docker只需要指定容器过旁路,那在创建容器的时候指定网关不就行了 添加 --gateway=x.x.x.x。觉得麻烦 ...

懂了,感谢答复。
就是通过命令来创建容器。。。
unriad里直接视图界面。。。不行我回头装个portainer试试。不过好像这样装unraid的dokcer界面就看不到了,得进portainer管理。
0x2020201 发表于 2023-6-7 14:55
本帖最后由 0x2020201 于 2023-6-7 15:21 编辑
crabandapple 发表于 2023-6-7 14:33
请问是unriad吗?
这个vlan是在unraid上设置还是怎么弄?
一开始也想的这个,但是网上搜了个遍,摸不着头 ...


我是直接用docker-compose,类似如下:

  1. networks:
  2.   lan:
  3.     driver: macvlan
  4.     driver_opts:
  5.       parent: enp1s0f2.XXX
  6.     ipam:
  7.       config:
  8.         - subnet: 192.168.XXX.0/24
  9.           gateway: 192.168.XXX.1
复制代码



和楼上提到的创建容器的时候通过--gateway=x.x.x.x指定网关是一样的效果
thereone 发表于 2023-6-7 14:48
本帖最后由 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.

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