sing-box 入站 tun 的配置如下,其中,sniff
表示开启域名嗅探,sniff_override_destination
表示开启域名复写。
有些 vps 或者节点提供商可以通过 dns 解锁 chatgpt 服务,不开启复写的情况下,一般的网络访问为本地通过 dns 解析到域名对应的 ip,然后将 ip 和端口发送到节点服务器进行访问,节点接到要访问的 ip 和端口之后,如果节点没有开启嗅探复写就会直接访问 ip 和端口,如果节点开启了嗅探复写就会从接收到的内容中嗅探到要访问的域名,并在节点服务器进行 dns 解析,然后用节点服务器解析到的 ip 进行访问。
如果本地开启了嗅探复写那么客户端会讲嗅探到的域名交给节点服务器去访问,节点服务器在接收到客户端发过来的域名之后,会先进性 dns 查询,然后用查询到的 ip 和端口进行访问。
嗅探主要用来进行域名分流规则匹配,复写主要用嗅探到的域名替换掉访问目标 ip,如果节点开启了嗅探复写也可以正常解锁 chatgpt 服务。
开启嗅探复写导致无法连接智能家居和无法连接 tor 网络(对于 tor 网络本地和节点都不能开启嗅探复写,如果无法关闭嗅探复写则可以开启 tor 的 obfs4 混淆,这样就会嗅探不到域名)。
{
"type": "tun",
"tag": "tun-in",
"inet4_address": "172.19.0.1/30",
"mtu": 9000,
"gso": true,
"auto_route": true,
"stack": "system",
"sniff": true,
"sniff_override_destination": false
}
通过 HTTP3 或者 QUIC 协议访问网站会导致即使开启嗅探也无法嗅探到域名,QUIC 会导致代理连接缓慢的问题,所以一般都会关闭 QUIC 协议的网络连接,在 sing-box 中关闭 QUIC 连接的方法是在 route 中屏蔽 QUIC 协议,或者在 dns 规则 rules 中平屏蔽 HTTPS 查询类型,这两种方法都会屏蔽掉 QUIC。
# 在 route 中屏蔽 quic 协议
{
"protocol": "quic",
"outbound": "block-out"
}
# 在 dns rules 中屏蔽 HTTPS 查询类型
{
"query_type": "HTTPS",
"server": "block-dns"
}
如果是在 docker 中搭建的服务要想实现 fullcone,容器的网络模式需要是 host。