ShellCrash icon indicating copy to clipboard operation
ShellCrash copied to clipboard

Redir/混合模式无法代理本机,Nft/Tproxy/Tun模式外网wan端口转发无法访问

Open EYW-015 opened this issue 2 years ago • 7 comments

设备

  • 主路由openwrt 192.168.1.1
    • 拨号+DHCP+ddns,端口转发wan:11111 > 192.168.1.2:11111,勾选启用NAT环回
  • ubuntu 192.168.1.2
    • 网关DNS 192.168.1.1
    • shellcrash测试版1.8.1,meta内核1.16.0
    • Clash运行模式: Tproxy混合
    • DNS运行模式: redir_host
    • 本机代理服务: 开启 nftable模式
    • 启用域名嗅探: 已启用
    • 一键配置加密DNS
    • hosts优化: 已开启
  • 电脑192.168.1.100
    • 网关DNS 192.168.1.2 image

状况描述

  1. 电脑如果正常设置网关为1.1上网的话,访问example.com:11111可以回到1.2的11111端口,正常访问emby页面
    • 此时1.100电脑解析的example.com地址为公网IP
  2. 电脑通过1.2网关,走clash(Nft模式),访问example.com:11111,clash日志显示会解析域名并请求到主路由的公网IP:11111,此时连接不上emby,感觉环回失败了,此时的clash日志显示
    1. 从外部网络(手机流量)直接访问example.com:11111,也会出现2的相同问题
[TCP] dial 回国 (match RuleSet/Domestic IPs) 192.168.1.100:10880 --> example.com:11111 error: connect failed: dial tcp 公网IP:11111: i/o timeout
  1. 运行模式为redir时(本机代理为nftable模式),来源192.168.1.2链接不进入clash内核 此时外网域名访问正常,切换为Nft或Tp模式时,来源192.168.1.2链接进入clash内核,并出现2中的错误

    1. 运行模式为redir时,来自本机192.168.1.2的请求不通过内核,但其他地址如192.168.1.100以及本机的docker地址172.17.0.*可通过内核
    2. 运行模式为NFT或TProxy时,来自本机1.2地址的请求可正常进入内核分流
  2. 我尝试了在ubuntu的hosts中添加了192.168.1.2 example.com,clash就将解析的地址作为LAN地址过滤,不走clash内核,此时可以正常访问

需求

外网访问example.com:11111可正常进入1.2:11111地址

  • 如果我添加hosts解析为正确且唯一解决方式,请告知并关闭issue

或者运行模式为Redir转发TCP时,来自192.168.1.2地址的请求可通过内核

非常感谢

EYW-015 avatar Dec 16 '23 09:12 EYW-015

@EYW-015 这是防火墙的问题,防火墙会过滤目标是内网IP的地址,但是不会过滤公网IP地址 所以你的处理方式是对的

juewuy avatar Dec 16 '23 12:12 juewuy

@EYW-015 这是防火墙的问题,防火墙会过滤目标是内网IP的地址,但是不会过滤公网IP地址 所以你的处理方式是对的

那请问redir转发rcp模式不能代理本机请求,这是否属于正常情况,只有tp或者nft模式可以代理来自本机ip的数据

EYW-015 avatar Dec 16 '23 12:12 EYW-015

@EYW-015 nft基础模式就是redir

juewuy avatar Dec 16 '23 15:12 juewuy

@EYW-015 nft基础模式就是redir

基础模式无法代理udp数据,有时候玩游戏有需求 混合模式经过尝试会出现上述"2"的问题,是否只能用hosts解析方式解决该问题 另外还是想问在2-1-1运行模式为Redir时(非Nft基础)本机ip数据不经过内核是否为正常现象,本机代理模式为nftable

EYW-015 avatar Dec 16 '23 15:12 EYW-015

改hosts方案姑且能用,先关闭issue了

EYW-015 avatar Dec 18 '23 17:12 EYW-015

发现点新状况

情况描述

端口从主路由外网转发至ubuntu本机

  1. 使用2-1-7 Nft混合2-1-5 Tp模式时,无法正常访问到本机的服务端口,日志中未见域名请求,个人判断未经过内核
  2. 使用2-1-1 Redir模式2-1-3 Tp混合2-1-6 Nft基础时,可以正常从外网用域名访问服务端口,日志中也未见域名请求
    • 2-1-1 Redir模式2-1-3 Tp混合,即前三个Redir转发TCP模式无法代理来自ubuntu本机的请求,电脑与Ubuntu同样使用curl ipinfo.io,电脑获取的IP为代理地址,Ubuntu获取的IP为主路由的WAN口地址

EYW-015 avatar Dec 24 '23 18:12 EYW-015

使用一段时间发现还是不能两全

电脑设置网关和DNS为clash设备,Nft基础模式不能代理UDP数据,游戏相关程序无法正常连接 Tun模式,Tproxy模式,Nft混合,均无法从主路由外网Wan通过端口转发访问本设备的服务 Redir模式,混合模式,Tproxy混合,均无法代理来自本机ip的请求 将clash日志等级设置为debug,在外网访问过程中,未见相关条目

EYW-015 avatar Jan 08 '24 14:01 EYW-015

尝试更新开发版

juewuy avatar Mar 15 '24 05:03 juewuy