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

软路由使用 Clash Tun 模式下,如何代理 telegram

  •  
  •   yikyo · 2021-11-30 09:16:37 +08:00 · 5281 次点击
    这是一个创建于 1118 天前的主题,其中的信息可能已经有所发展或是发生改变。

    软路由使用了基于 debian 的 vyos 系统,仅将 dns 流量转发到 53 端口

    其他应用都没有什么问题,就是 TG 无法使用,TG 配置代理也不行( SOCKS5 10.0.0.1:7890 )

    从 Clash debug 日志中看不到任何信息,TG 配置代理后,会有几个 IP 的流量信息

    请问如何解决此问题,万分感谢

    mixed-port: 7890
    allow-lan: true
    mode: rule
    log-level: silent
    external-controller: 0.0.0.0:9090
    
    dns:
      enable: true
      listen: 0.0.0.0:53
      ipv6: false
      enhanced-mode: fake-ip
      fake-ip-range: 198.18.0.1/16
      nameserver:
        - 10.0.0.1:5553
    
    tun:
      enable: true
      stack: system
    
    set interfaces bridge br0 address '10.0.0.1/24'
    set interfaces bridge br0 member interface eth1
    set interfaces bridge br0 member interface eth2
    
    set interfaces ethernet eth0 address 'dhcp'
    set interfaces ethernet eth0 hw-id 'e4:3a:6e:2d:5d:6e'
    set interfaces ethernet eth1 hw-id 'e4:3a:6e:2d:5d:6f'
    set interfaces ethernet eth2 hw-id 'e4:3a:6e:2d:5d:70'
    
    set interfaces loopback lo
    
    set nat destination rule 100 destination address '!10.0.0.1'
    set nat destination rule 100 destination port '53'
    set nat destination rule 100 inbound-interface 'br0'
    set nat destination rule 100 protocol 'tcp_udp'
    set nat destination rule 100 source address '10.0.0.0/24'
    set nat destination rule 100 translation address '10.0.0.1'
    
    set nat source rule 300 outbound-interface 'eth0'
    set nat source rule 300 source address '10.0.0.0/24'
    set nat source rule 300 translation address 'masquerade'
    
    set service dhcp-server shared-network-name Lan subnet 10.0.0.0/24 default-router '10.0.0.1'
    set service dhcp-server shared-network-name Lan subnet 10.0.0.0/24 lease '86400'
    set service dhcp-server shared-network-name Lan subnet 10.0.0.0/24 name-server '10.0.0.1'
    set service dhcp-server shared-network-name Lan subnet 10.0.0.0/24 range 100 start '10.0.0.100'
    set service dhcp-server shared-network-name Lan subnet 10.0.0.0/24 range 100 stop '10.0.0.200'
    
    set service ssh port '22'
    
    set system config-management commit-revisions '100'
    
    set system host-name 'vyos'
    
    set system name-server '202.101.172.35'
    set system name-server '202.101.172.47'
    
    set system ntp server time.apple.com
    set system ntp server time.asia.apple.com
    
    set system syslog global facility all level 'info'
    set system syslog global facility protocols level 'debug'
    
    set system time-zone 'Asia/Shanghai'
    
    18 条回复    2022-11-04 11:52:20 +08:00
    terrancesiu
        1
    terrancesiu  
       2021-11-30 09:33:13 +08:00
    redir
    -A PREROUTING -s 172.31.0.0/16 -d 91.108.4.0/22 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 91.108.8.0/22 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 91.108.56.0/22 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 109.239.140.0/24 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 149.154.160.0/20 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 23.246.0.0/18 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 37.77.184.0/21 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 45.57.0.0/17 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 64.120.128.0/17 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 66.197.128.0/17 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 108.175.32.0/20 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 192.173.64.0/18 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 198.38.96.0/19 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    -A PREROUTING -s 172.31.0.0/16 -d 198.45.48.0/20 -p tcp -m tcp ! --dport 22 -j REDIRECT --to-ports 3128
    yikyo
        2
    yikyo  
    OP
       2021-11-30 09:34:22 +08:00
    @terrancesiu 是需要用 iptables 将流量导到 clash 吗
    lmoon
        3
    lmoon  
       2021-11-30 09:39:27 +08:00
    这不是你规则的问题吗
    yikyo
        4
    yikyo  
    OP
       2021-11-30 09:50:10 +08:00
    @lmoon 尝试过添加规则没有解决,我从官方 issue 中发现也有类似的问题。
    有一个现象,我开 debug 模式查看日志,没有任何信息,感觉像流量没过 clash 。
    如果是规则的问题,应该还是会有日志,而且我设置为全局模式,telegram 仍然无法使用。
    ziseyinzi
        5
    ziseyinzi  
       2021-11-30 09:55:05 +08:00
    telegram 直接使用 ip,你这个 fake-ip 方案只对域名有效
    ghjexxka
        6
    ghjexxka  
       2021-11-30 09:57:57 +08:00
    试试看给 tg 配一个地址是域名的 mtp 公共代理呢
    yikyo
        7
    yikyo  
    OP
       2021-11-30 10:03:18 +08:00
    @ziseyinzi 所以需要怎么解决,换成 redir ?
    noahzh
        8
    noahzh  
       2021-11-30 10:03:19 +08:00
    你没有理解 clash tun 模式工作原理,你用的是 fake ip 模式.但是 telegram 是直接连接 ip 不是走域名.
    yikyo
        9
    yikyo  
    OP
       2021-11-30 10:09:07 +08:00
    @noahzh 嗯,看了 5#的回答,大概了解问题了,但是还是有点疑问,clash 规则中针对 ip 部分的配置,fake-ip 下是无效的吗?
    yikyo
        10
    yikyo  
    OP
       2021-11-30 10:17:55 +08:00
    @ghjexxka 感谢,我等会尝试一下,感觉这个方案最简单点。但是还是想了解一下具体原因。方便以后排查问题
    terrancesiu
        11
    terrancesiu  
       2021-11-30 10:19:16 +08:00
    @yikyo 是的,假设你的局域网是 173.1.0.0/16,clash 的 redir 端口是 3128 。因为 fakeip 模式,只针对于域名,如果 ip 直连需要重定向
    noahzh
        12
    noahzh  
       2021-11-30 13:55:53 +08:00
    tun 就是一个网卡他只接收你 fakeip 的流量,这样理解就完了.
    dcty
        13
    dcty  
       2021-11-30 14:00:28 +08:00
    对网络相关配置不熟悉的话,可以试一下 shellclash
    yikyo
        14
    yikyo  
    OP
       2021-11-30 18:58:59 +08:00
    @noahzh 还是想请教一下大佬,tun 模式下如何解决 ip 直联的情况,常规的解决方案是什么
    zhouzm
        15
    zhouzm  
       2021-12-05 10:48:32 +08:00   ❤️ 1
    既然软路由了,应该专业的软件干专业的事:
    1. ipset 配合 https://github.com/gaoyifan/china-operator-ip 生成中国 ip 集。
    2. 使用 coredns 的插件 dnsredir ( https://github.com/missdeer/coredns_custom_build ) 解决纯净 dns 问题
    3. 任意支持透明代理的软件即可,提供一个本机端口,代理所有流量到远程,无需复杂配置,只要解决网络通道就行。
    4. iptables + ipset ,非中国 ip 走透明代理端口,记得把局域网段排除掉

    这种模式下,局域网下任意客户端上的任意软件都是一样的,访问国内 ip 走原始网络,其他 ip 走透明代理。
    yikyo
        17
    yikyo  
    OP
       2022-07-09 19:40:28 +08:00
    @smilingsun 非常感谢,找个时间测试一下
    jemyzhang
        18
    jemyzhang  
       2022-11-04 11:52:20 +08:00
    @yikyo 请问你有没有设置成功?我在设置路由下一条的时候出错了。
    ```
    root@OpenWrt:~# route add -net 91.108.4.0/22 gw 198.18.1.254
    route: SIOCADDRT: Network unreachable
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2735 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:52 · PVG 17:52 · LAX 01:52 · JFK 04:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.