Featured image of post OpenClash自定义规则不生效问题排查(领英Linkedin自动跳转中国站点)

OpenClash自定义规则不生效问题排查(领英Linkedin自动跳转中国站点)

领英 Linkedin 在2021年10月14宣布关闭中国区版本,而后中国区(IP)的用户访问linkedin.com都会被重定向至linkedin.cn

在OpenClash中添加自定规则,然后打开linkedin.com发现居然还会重定向到linkedin.cn领英中国,大惊,OpenClash失灵了吗?!

排查因素1

使用PC端Clash选择自定义节点全局代理,linkedin.com能够正常访问,检查了OpenClash自定义规则语法也没错,又分别尝试了DOMAIN-SUFFIX域名后缀匹配和DOMAIN-KEYWORD域名关键词匹配,均无效。

但自定义规则中其他域名如stripe的规则生效了,唯独linkedin的规则无效。

排查因素2

此时想起ACL4SSR作者在TG里回复过:规则优先级以配置文件里面规则先后顺序为准

怀疑是不是和这有关,于是下载了OpenClash的运行配置查看,添加的linkedin.com的自定义规则已经在规则的前面了。

甚至我还将运行配置中关于linkedin.com的其他规则都删除,只保留自定义规则,仍然无效。

开始百思不得姐。

接着习惯地用curl请求了下域名看看报文,似乎也没啥异常。 curl -vv www.linkedin.com

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
	* Rebuilt URL to: www.linkedin.com/
	*   Trying 182.175.242.17...
	* TCP_NODELAY set
	* Connected to www.linkedin.com (182.175.242.17) port 80 (#0)
	> GET / HTTP/1.1
	> Host: www.linkedin.com
	> User-Agent: curl/7.55.1
	> Accept: */*
	>
	< HTTP/1.1 301 Moved Permanently
	< Date: Tue, 18 Jan 2022 13:34:54 GMT
	< X-Li-Pop: prod-vsh1
	< X-LI-Proto: http/1.1
	< X-LI-UUID: cfvpWeZgaxjAOioPiioAAA==
	< Location: https://www.linkedin.com/
	< Content-Length: 0
	<
	* Connection #0 to host www.linkedin.com left intact

等等!182.175这个IP段似乎有点眼熟!去查询了下果然是中国的IP!

问题定位

此时,心里已经隐约感觉到问题出在了哪里。

为了验证我的直觉,查询了大陆内外分别解析到www.linkedin.com的IP

https://tools.ipip.net/dns.php

问题的关键:中国大陆解析到的都是中国大陆IP!

而我在OpenClash中,勾选了绕过中国大陆IP!

此选项的描述:启用后中国大陆流量将不再经过内核,提升系统性能

所以OpenClash没有处理中国大陆的IP,因此自定规则未生效!

因此,将绕过中国大陆IP取消勾选,自定规则生效!

*2023-09-02更新: 还有2种更简单的办法: 第一种: 插件设置-DNS设置-启用第二DNS服务器 1.1.1.1 然后把你希望用这个DNS服务器解析的域名加进来 linkedin.com www.linkedin.com

第二种: 如果你自己托管订阅转换服务,可以在dns配置里面这样写:

1
2
3
  nameserver-policy:
    "+.linkedin.com": 8.8.8.8
    "+.linkedin.cn": 8.8.8.8

*2024-03-28更新: 使用8.8.8.8时,linkedin.com也会返回中国IP。 更换1.1.1.1即可。

1
2
3
  nameserver-policy:
    "+.linkedin.com": 1.1.1.1
    "+.linkedin.cn": 1.1.1.1