V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mmr
V2EX  ›  宽带症候群

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

  •  
  •   mmr · 266 天前 · 3228 次点击
    这是一个创建于 266 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    33 条回复    2024-08-16 19:39:02 +08:00
    urzz
        1
    urzz  
       266 天前
    跑题问一下,你跑的镜像是啥?
    mmr
        2
    mmr  
    OP
       266 天前
    @urzz clash-premium
    piaorenyong
        3
    piaorenyong  
       266 天前
    支持
    目前正常使用
    winson030
        4
    winson030  
       266 天前 via iPhone
    帖 yaml 出来看看👀
    gam2046
        5
    gam2046  
       266 天前
    chr 版本的 docker 用来跑过 zerotier ,TUN/TAP 是可以正常挂载进去的。
    mmr
        6
    mmr  
    OP
       266 天前
    @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.jsdelivr.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
       266 天前
    @gam2046 您咋配置的,具体说一下吧,需要特别指定网卡吗??
    mmr
        8
    mmr  
    OP
       266 天前
    @piaorenyong 能具体说说如何配置吗?
    gam2046
        9
    gam2046  
       266 天前
    @mmr #7 没什么特别的,TUN 是二层的,相当于虚拟出来一个新的网卡挂到路由下面。因此 docker 里面的路由一般是不需要特别设置的。

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

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

    可以尝试的路子是 ros 配置路由规则连通 veth 到 container 的网络,容器内再自己手动配置 IP forward 以及路由出口。
    f0rger
        10
    f0rger  
       266 天前 via iPhone
    反正我的 5009 没成功过,可能是因为 arm 。大佬们成功的可以分享一下
    w01230
        12
    w01230  
       266 天前
    RB5009 里跑 clash.meta 正常,clash-premium 时不行
    keyfunc
        13
    keyfunc  
       266 天前
    建议把防火墙的配置和路由配置输出下
    ip/firewall/nat/ export
    ip/firewall/mangle/ export
    ip/route/ export
    sayemike
        14
    sayemike  
       266 天前 via iPhone
    ros 容器不支持
    auto-route: true
    auto-detect-interface: true
    按 11 楼的文章做,可以跑起来
    terrancesiu
        15
    terrancesiu  
       266 天前
    @mantouboji 我说怎么提示我,原来是我写的,哈哈。
    mmr
        16
    mmr  
    OP
       266 天前
    @terrancesiu 谢谢大佬文章,已经跑通了,不过请问我要是把 fake-ip 以外的 IP 转发到 clash 里,流量会被代理吗,纯 IP 可以代理吗??
    terrancesiu
        17
    terrancesiu  
       265 天前
    @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  
       265 天前
    @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  
       265 天前
    怒赞。建议你把最新更新状态单独发一个帖子在这里。
    BI4NBN
        20
    BI4NBN  
       265 天前
    给你一个我正在有用的配置
    /ip firewall mangle
    BI4NBN
        21
    BI4NBN  
       265 天前
    用这个镜像 docker pull metacubex/mihomo:Alpha 100%可以
    mmr
        22
    mmr  
    OP
       263 天前
    @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  
       243 天前
    /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  
       92 天前
    @sayemike #18 你好,已经映射了,但是第 4 点似乎不会执行:run -C /etc/sing-box && cd /etc/sing-box && ./ip.sh
    sayemike
        25
    sayemike  
       91 天前 via iPhone
    @leafxen 容器启动时执行指定的 sh ,文件中再启动必须的程序,加路由,我用的 clash ,不确定 sing-box 是否通用
    leafxen
        26
    leafxen  
       91 天前
    @sayemike sing-box 似乎不行,只运行 sh 的话容器就不能启动,如果 sing-box 先启动,后面的命令就失效
    mmr
        27
    mmr  
    OP
       90 天前 via Android
    @leafxen docker 只有一个主程序,启动多个你需要一个进程管理器
    leafxen
        28
    leafxen  
       89 天前
    @mmr 明白了,谢谢!
    sayemike
        29
    sayemike  
       89 天前
    @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  
       89 天前
    @sayemike 你好,配置文件是直接封装在容器内的是吧
    sayemike
        31
    sayemike  
       89 天前
    @leafxen 容器中的内容可以挂载到外面(宿主、ros )
    leafxen
        32
    leafxen  
       89 天前
    @sayemike 我挂载了,用 singbox 改写的,启动后提示找不到配置文件,会不会启动逻辑不一样
    leafxen
        33
    leafxen  
       89 天前
    @sayemike 可以了,厉害!!是我路径改了一直没注意...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5539 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 03:40 · PVG 11:40 · LAX 19:40 · JFK 22:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.