此外配置文件中默认的 DNS 是 1.1.1.1,由于是 IPv4 地址,故查询请求会经由 WARP 节点发出。由于它将替换掉系统中的 DNS 设置 (/etc/resolv.conf),为了防止当节点发生故障时 DNS 请求无法发出,建议替换为 IPv6 地址的 DNS 优先,或者直接删除 DNS 这行。以下配置供参考:
DNS = 2001:4860:4860::8888,2001:4860:4860::8844,8.8.8.8,8.8.4.4
[Interface]
...
PostUp = ip -4 rule add from <替换IPv4地址> lookup main
PostDown = ip -4 rule delete from <替换IPv4地址> lookup main
PostUp = ip -6 rule add from <替换IPv6地址> lookup main
PostDown = ip -6 rule delete from <替换IPv6地址> lookup main
[Peer]
...
TIPS: 包含<>(尖括号)的部分一起替换掉,这只是为了看起来明显。
替换配置中的 IP 地址部分为 VPS 的公网 IP 地址,如果 IDC 提供的是 VPC 内网方案则需要替换为内网 IP 。像 AWS 、Azure 、Google Cloud 、Oracle Cloud 等大厂都是 VPC 内网方案,内网地址一般会在网页面板有提供。如果不确定是哪种网络方案,输入 ip a | grep <公网IP地址> 看是否有显示,没有那么就说明是 VPC 内网方案。
# IPv4 优先
grep -qE '^[ ]*precedence[ ]*::ffff:0:0/96[ ]*100' /etc/gai.conf || echo 'precedence ::ffff:0:0/96 100' | sudo tee -a /etc/gai.conf
设置 IPv6 优先
编辑 /etc/gai.conf 文件,在末尾添加下面这行配置:
label 2002::/16 2
一键添加命令如下:
# IPv6 优先
grep -qE '^[ ]*label[ ]*2002::/16[ ]*2' /etc/gai.conf || echo 'label 2002::/16 2' | sudo tee -a /etc/gai.conf
优先级设置在特殊场景中的局限性
在 VPS 上使用某科学的上网工具时出站的 IPv4/IPv6 优先级还取决于科学工具的 DNS 策略和分流路由策略。
比如某些路由器上的某科学的上网工具客户端不会发送域名给服务端做 DNS 解析,而是在本地直接将域名解析为 IP 并通过服务端直接向已解析的 IP 发起连接,那么可能因为路由器 DNS 屏蔽了 AAAA 记录就只会去访问 IPv4 网络。解决方法是开启某科学的上网工具服务端的流量探测 (sniffing) 功能,并添加相关路由规则进行分流处理,服务端会从请求数据中嗅探出域名并进行二次 DNS 解析后对网络流量进行重定向,就比如可以将本身发往网站 IPv4 服务器的流量重定向到 IPv6 服务器(前提是这个网站使用了 IPv6 地址)。
科学上网代理工具 IPv4/IPv6 分流方法
有关某科学的上网工具的 DNS 和路由分流设置有很多资料,小伙伴们可自行咕鸽搜索。每个人的需求不一样,不可能以偏概全,最好是看相关工具的文档,所以博主在这里就不多赘述了。