RouterOS 的容器到底支不支持 TUN 啊? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mmr
V2EX    宽带症候群

RouterOS 的容器到底支不支持 TUN 啊?

  •  
  •   mmr 2024-02-21 16:33:26 +08:00 5497 次点击
    这是一个创建于 664 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Clash 始终接管不了流量,大佬们有人搞成功过吗,指导一下

    35 条回复    2025-01-21 16:09:42 +08:00
    JadeLove
        1
    JadeLove  
       2024-02-21 17:43:21 +08:00
    跑题问一下,你跑的镜像是啥?
    mmr
        2
    mmr  
    OP
       2024-02-21 17:59:08 +08:00
    @urzz clash-premium
    piaorenyong
        3
    piaorenyong  
       2024-02-21 18:35:46 +08:00
    支持
    目前正常使用
    winson030
        4
    winson030  
       2024-02-21 18:50:44 +08:00 via iPhone
    帖 yaml 出来看看
    gam2046
        5
    gam2046  
       2024-02-21 19:43:41 +08:00
    chr 版本的 docker 用来跑过 zerotier ,TUN/TAP 是可以正常挂载进去的。
    mmr
        6
    mmr  
    OP
       2024-02-21 19:52:13 +08:00
    @winson030
    ######### 锚点 start #######
    # proxy 相关
    pr: &pr {type: select, proxies: [默认,香港,台湾,日本,新加坡,美国,其它地区,全部节点,自动选择,DIRECT]}

    #这里是订阅更新和延迟测试相关的
    p: &p {type: http, interval: 86400, health-check: {enable: true, url: https://www.gstatic.com/generate_204, interval: 36000}}


    urltestinterval: &urltest-interval
    type: url-test
    url: 'http://www.gstatic.com/generate_204'
    interval: 300
    lazy: true
    ######### 锚点 end #######

    proxy-providers:
    xxxxxxxxxxxxxxxxxxxxxx

    ipv6: true
    allow-lan: true
    mixed-port: 7890
    unified-delay: false
    tcp-concurrent: true
    external-controller: 0.0.0.0:9090
    secret: "123456"
    external-ui: ui
    # external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip"

    geodata-mode: true
    geox-url:
    geoip: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
    geosite: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"
    mmdb: "https://testingcf.jsdelvr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb"

    find-process-mode: strict
    global-client-fingerprint: chrome

    profile:
    store-selected: true
    store-fake-ip: true

    sniffer:
    enable: true
    sniff:
    HTTP:
    ports: [80, 8080-8880]
    override-destination: true
    TLS:
    ports: [443, 8443]
    QUIC:
    ports: [443, 8443]

    tun:
    enable: true
    stack: gvisor
    dns-hijack:
    - 'any:53'
    auto-route: true
    auto-detect-interface: true

    dns:
    enable: true
    listen: :1053
    ipv6: true
    # enhanced-mode: fake-ip
    enhanced-mode: redir-host
    fake-ip-filter:
    - "*"
    - "+.lan"
    - "+.local"
    nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
    proxy-server-nameserver:
    - https://doh.pub/dns-query
    nameserver-policy:
    "geosite:cn,private":
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
    "geosite:geolocation-!cn":
    - "https://dns.cloudflare.com/dns-query#dns"
    - "https://dns.google/dns-query#dns"

    proxies:

    proxy-groups:
    ................................
    mmr
        7
    mmr  
    OP
       2024-02-21 19:52:56 +08:00
    @gam2046 您咋配置的,具体说一下吧,需要特别指定网卡吗??
    mmr
        8
    mmr  
    OP
       2024-02-21 19:53:37 +08:00
    @piaorenyong 能具体说说如何配置吗?
    gam2046
        9
    gam2046  
       2024-02-21 20:00:27 +08:00
    @mmr #7 没什么特别的,TUN 是二层的,相当于虚拟出来一个新的网卡挂到路由下面。因此 docker 里面的路由一般是不需要特别设置的。

    我的操作步骤就是按这位大哥来的: https://forum.mikrotik.com/viewtopic.php?t=190121

    你的情况其实和我不太一样,你可能需要 docker container 作为一个代理或者网关,但是 ros 的 container 似乎是不支持从容器外进行访问的。

    可以尝试的路子是 ros 配置路由规则连通 veth 到 container 的网络,容器内再自己手动配置 IP forward 以及路由出口。
    f0rger
        10
    f0rger  
       2024-02-21 21:34:42 +08:00 via iPhone
    反正我的 5009 没成功过,可能是因为 arm 。大佬们成功的可以分享一下
    w01230
        12
    w01230  
       2024-02-21 23:00:55 +08:00
    RB5009 里跑 clash.meta 正常,clash-premium 时不行
    keyfunc
        13
    keyfunc  
       2024-02-21 23:05:41 +08:00
    建议把防火墙的配置和路由配置输出下
    ip/firewall/nat/ export
    ip/firewall/mangle/ export
    ip/route/ export
    sayemike
        14
    sayemike  
       2024-02-21 23:37:09 +08:00 via iPhone
    ros 容器不支持
    auto-route: true
    auto-detect-interface: true
    按 11 楼的文章做,可以跑起来
    terrancesiu
        15
    terrancesiu  
       2024-02-22 09:01:29 +08:00
    @mantouboji 我说怎么提示我,原来是我写的,哈哈。
    mmr
        16
    mmr  
    OP
       2024-02-22 11:09:02 +08:00
    @terrancesiu 谢谢大佬文章,已经跑通了,不过请问我要是把 fake-ip 以外的 IP 转发到 clash 里,流量会被代理吗,纯 IP 可以代理吗??
    terrancesiu
        17
    terrancesiu  
       2024-02-22 11:42:02 +08:00
    @mmr 可以,现在 clash 的 tun 支持直接丢路由进去了,我之前最后关于电报的搞法过时了。之前有人针对这个发了 email 给我,最后我直接转发他研究成功的结果方法给你:
    实现方法,要实现 IP 地址引入到 TUN 口步骤:
    一、Routeros 的配置
    1 、Routeros 上配置路由将要翻的路由下一跳指向 Clash 的 VETH 接口
    先在 ip firewall address-list 里面配置地址组

    add address=108.175.32.0/20 list=free
    add address=192.173.64.0/18 list=free
    add address=198.38.96.0/19 list=free

    2 、配置 managle 路由标记
    /ip firewall mangle
    add action=mark-routing chain=prerouting dst-address-list=free new-routing-mark=Free passthrough=yes

    3 、路由表里面配置将需要翻的网段走向 clash 的 VETH 端口
    add disabled=no dst-address=0.0.0.0/0 gateway=172.17.0.2 routing-table=Free suppress-hw-offload=n


    二、docker 里面的 Clash 需要配置将这些路由引入到 utun 接口,也就是 Tun 端口里面。
    route add -net 103.2.30.0/23 dev utun
    route add -net 108.175.32.0/20 dev utun
    route add -net 125.209.208.0/20 dev utun
    sayemike
        18
    sayemike  
       2024-02-22 12:40:12 +08:00
    @terrancesiu 在 clash 容器中手动添加的路由,容器重启后会丢失
    1 ,在 ROS 添加静态路由,将目标 IP 指向 clash 容器的 IP ,这样可以不用 managle 规则
    2 ,在 clash 的 config.yaml 中配置需要科学的 IP 地址规则
    3 ,在 clash 挂载目录下创建个 shell 文件,读取 config.yaml 中标记走科学的 ip 地址,添加路由
    4 ,在 ros 容器启动项中设置命令,执行该 shell
    这样做的好处是,路由器或容器重启后,容器内手动添加的路由规则会自动创建
    mantouboji
        19
    mantouboji  
       2024-02-22 12:49:22 +08:00
    怒赞。建议你把最新更新状态单独发一个帖子在这里。
    BI4NBN
        20
    BI4NBN  
       2024-02-22 20:05:34 +08:00
    给你一个我正在有用的配置
    /ip firewall mangle
    BI4NBN
        21
    BI4NBN  
       2024-02-22 20:11:44 +08:00
    用这个镜像 docker pull metacubex/mihomo:Alpha 100%可以
    mmr
        22
    mmr  
    OP
       2024-02-24 15:50:14 +08:00
    @BI4NBN 方便发个配置文件吗,meta 内核我没能成功启动,会产生回环。
    1 192.168.0.1 * [RFC1918] 局域网
    0.27 ms / 0.30 ms / 0.40 ms
    2 192.168.0.80 * [RFC1918] 局域网
    0.32 ms / 0.27 ms / 0.39 ms
    3 192.168.0.1 * [RFC1918] 局域网
    0.29 ms / 0.34 ms / 0.34 ms
    4 192.168.0.80 * [RFC1918] 局域网
    0.36 ms / 0.30 ms / 0.30 ms
    5 192.168.0.1 * [RFC1918] 局域网
    0.37 ms / 0.34 ms / 0.30 ms
    6 *
    7 192.168.0.1 * [RFC1918] 局域网
    0.30 ms / 0.34 ms / 0.29 ms
    8 *
    9 192.168.0.1 * [RFC1918] 局域网
    0.34 ms / 0.40 ms / 0.31 ms
    10 *
    11 192.168.0.1 * [RFC1918] 局域网
    0.36 ms / 0.31 ms / 0.34 ms
    12 *
    BI4NBN
        23
    BI4NBN  
       2024-03-16 06:15:40 +08:00
    /ip firewall mangle
    add action=change-mss chain=forward new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn
    add action=change-mss chain=output new-mss=clamp-to-pmtu passthrough=no protocol=tcp tcp-flags=syn
    add action=mark-routing chain=prerouting dst-address-list=!CNIP new-routing-mark=Proxy passthrough=yes \
    protocol=!icmp src-address=!10.10.10.254
    leafxen
        24
    leafxen  
       2024-08-14 09:39:20 +08:00
    @sayemike #18 你好,已经映射了,但是第 4 点似乎不会执行:run -C /etc/sing-box && cd /etc/sing-box && ./ip.sh
    sayemike
        25
    sayemike  
       2024-08-15 00:59:43 +08:00 via iPhone
    @leafxen 容器启动时执行指定的 sh ,文件中再启动必须的程序,加路由,我用的 clash ,不确定 sing-box 是否通用
    leafxen
        26
    leafxen  
       2024-08-15 11:01:22 +08:00
    @sayemike sing-box 似乎不行,只运行 sh 的话容器就不能启动,如果 sing-box 先启动,后面的命令就失效
    mmr
        27
    mmr  
    OP
       2024-08-16 06:57:40 +08:00 via Android
    @leafxen docker 只有一个主程序,启动多个你需要一个进程管理器
    leafxen
        28
    leafxen  
       2024-08-16 13:11:20 +08:00
    @mmr 明白了,谢谢!
    sayemike
        29
    sayemike  
       2024-08-16 16:17:47 +08:00
    @leafxen
    我在创建了一个 start.sh 脚本文件,内容如下,容器启动时执行,entrypoint="sh /xxxx/start.sh"
    #!/bin/sh

    (
    while ! ip address show utun > /dev/null 2>&1; do
    sleep 0.5
    done
    grep -i 'IP-CIDR' /root/.config/clash/config.yaml | grep -iv 'DIRECT' | awk -F, '{print "route add -net "$2" dev utun"}' | sh
    ) & exec /clash
    leafxen
        30
    leafxen  
       2024-08-16 17:35:28 +08:00
    @sayemike 你好,配置文件是直接封装在容器内的是吧
    sayemike
        31
    sayemike  
       2024-08-16 17:41:15 +08:00
    @leafxen 容器中的内容可以挂载到外面(宿主、ros )
    leafxen
        32
    leafxen  
       2024-08-16 17:50:09 +08:00
    @sayemike 我挂载了,用 singbox 改写的,启动后提示找不到配置文件,会不会启动逻辑不一样
    leafxen
        33
    leafxen  
       2024-08-16 19:39:02 +08:00
    @sayemike 可以了,厉害!!是我路径改了一直没注意...
    sayemike
        34
    sayemike  
       339 天前 via iPhone
    @leafxen 最近换成了 mihomo ,发现很方便,不用写脚本处理 ip 路由,clash 配置几乎通用
    f0rger
        35
    f0rger  
       329 天前
    @sayemike 来个教程吧谢谢兄弟
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     873 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 21:32 PVG 05:32 LAX 13:32 JFK 16:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86