在 TUN 模式下使用 ssh root@xxxx
的方式,会得到
Connection closed by xxx.xxx.xxx.xxx port 22
但是不使用 TUN 模式,使用系统代理就不会有这个问题。
想知道是什么问题,各位大佬有没有什么解决方法,谢谢!
感谢大佬的解答,总结一下该问题。
原因:
TUN 模式下 ssh 会走代理节点,而代理节点会屏蔽 22 端口。
解决方法
在规则中将该 IP 的连接方式改为直连。
更好的解决方法
但是我的想法是如果对 IP 全部改为直连,那么网页访问时就无法使用代理节点的加速功能,能不能只将该 IP 的 22 端口直连呢,答案是可以的!
我查看了 clash 的 wiki (Rules 规则 | Clash 知识库)
发现可以使用 AND
,使IP和端口规则同时满足。
添加下面的规则:
AND,((IP-CIDR,xxx.xxx.xxx.xxx/32),(DST-PORT,22,DIRECT)),DIRECT
这样就可以在 TUN 模式下通过直连的方式 ssh 访问指定的 IP,如下图所示:
7 Likes
stevessr
(Stevessr)
2
是不是用了fakeip啊
试试用ssh走梯子的代理连接呢?
2 Likes
是的啊,用了 fakeip,我的配置是参考别的人配的,我看大家基本都用了
enhanced-mode: fake-ip
附一下我的 DNS 配置
dns:
default-nameserver:
- tls://223.5.5.5
- 8.8.8.8
- 1.1.1.1
- 119.29.29.29
- 223.6.6.6
- 180.76.76.76
direct-nameserver-follow-policy: false
enable: true
enhanced-mode: fake-ip
fake-ip-filter:
- '*.lan'
- '*.local'
- '*.arpa'
- time.*.com
- ntp.*.com
- time.*.com
- +.market.xiaomi.com
- localhost.ptlogin2.qq.com
- '*.msftncsi.com'
- www.msftconnecttest.com
fake-ip-filter-mode: blacklist
fake-ip-range: 198.18.0.1/16
fallback:
- https://1.0.0.1/dns-query
- https://sky.rethinkdns.com
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query
fallback-filter:
domain:
- +.google.com
- +.facebook.com
- +.youtube.com
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
- 0.0.0.0/32
listen: :53
nameserver:
- https://120.53.53.53/dns-query
- https://223.5.5.5/dns-query
- https://8.8.8.8/dns-query
- https://1.1.1.1/dns-query
prefer-h3: false
proxy-server-nameserver:
- https://120.53.53.53/dns-query
- https://223.5.5.5/dns-query
- https://1.1.1.1/dns-query
- https://8.8.8.8/dns-query
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
- https://9.9.9.9/dns-query
- https://208.67.222.222/dns-query
respect-rules: true
use-hosts: false
use-system-hosts: false
以及 tun 配置
tun:
auto-detect-interface: true
auto-route: true
device: Mihomo
dns-hijack:
- any:53
mtu: 1500
stack: mixed
strict-route: false
enable: true
1 Like
stevessr
(Stevessr)
7
尝试关闭tun,让ssh经过mihomo的代理连接远程服务器,看看连不连得上
1 Like
layden
11
试试看加个规则:
PROCESS-NAME,ssh.exe,YOUR_PROXY
我试了一下,这个方法不行。
但是我又有一个新的发现,不是所有的 ssh 都连不上。
我的阿里云配置了私钥连接,即 ~/.ssh/config
中配置了:
Host aliyun
HostName xxx.xxx.xxx.xxx
User root
IdentityFile ~/.ssh/mac.pem
我通过 ssh aliyun
是可以在 TUN
模式下连接的,但是别的就不能连接
机场节点吗,
大部分机场把22端口屏蔽了,开tun后,ssh走了代理所以不通
1 Like
layden
14
有些机场会屏蔽 SSH 连接来着,换一下看行不行。要么直连,要么代理(没屏蔽 22 时),总有一个能行的。
1 Like
佬,我试了一下确实是这样,TUN
模式下改成直连就能访问了,可以确认是机场屏蔽了22端口。
那有没有好的解决方案,能够根据端口来选择连接方式,比如ssh的时候直连,网页访问的时候使用代理节点呢,谢谢
layden
16
使用内置 DIRECT 策略,所有的 SSH 连接都会走直连:
PROCESS-NAME,ssh.exe,DIRECT
(推荐)或者新建代理组(proxy-groups),里面放节点和 DIRECT 内置策略,然后动态控制 ssh.exe 使用节点或直连:
PROCESS-NAME,ssh.exe,YOUR_PROXY_GROUP
system
(system)
Closed
17
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。