前言
最近 docker 被上头 gank 了,打开 docs.docker.com 发现打不开,用的 openclash(+meta 核) 的 redir-host 一开始还以为是 dns 污染,后面才发现是走了 ipv6。
然后修改了 windows 的 ipv4 优先,发现效果没啥用,后面想着直接在 dns 只返回 ipv4 得了。
配置 IPV4 优先
目前只靠 openclash 是无法实现 dns 优先返回 ipv4 的,这时候就需要国外分流到 mosdns 进行解析了。
方法一 openclashs 国内 + mosdns 国外配置
openclash 的 dns 服务器代理国内流量
dns:
enable: true
listen: :1053
ipv6: true
enhanced-mode: redir-host
fake-ip-filter:
- "*"
- "+.lan"
- "+.local"
default-nameserver:
- 223.5.5.5
- 119.29.29.29
proxy-server-nameserver:
- https://223.5.5.5/dns-query
nameserver:
- https://223.5.5.5/dns-query
- https://1.12.12.12/dns-query
nameserver-policy:
"geosite:cn":
- 223.5.5.5
- 119.29.29.29
"geosite:geolocation-!cn":
- "udp://127.0.0.1:5335"
# "+.ipleak.net":
# - "udp://127.0.0.1:5335"
mosdns v5
使用自定义配置,全走远程服务器的 DNS,DNS 转发
取消勾选。
log:
level: info
file: "/var/log/mosdns.log"
# API 入口设置
api:
http: "0.0.0.0:9091"
include: []
plugins:
# 缓存
- tag: lazy_cache
type: cache
args:
size: 20000
lazy_cache_ttl: 86400
dump_file: "/etc/mosdns/cache.dump"
dump_interval: 600
# 转发至远程服务器
- tag: forward_remote
type: forward
args:
upstreams:
- addr: tls://8.8.8.8
bootstrap: 223.5.5.5
enable_pipeline: false
- addr: tls://1.0.0.1
bootstrap: 223.5.5.5
enable_pipeline: false
- addr: tls://9.9.9.9
bootstrap: 223.5.5.5
enable_pipeline: false
# 国外解析
- tag: remote_sequence
type: sequence
args:
- exec: prefer_ipv4
- exec: $forward_remote
# 有响应终止返回
# - tag: has_resp_sequence
# type: sequence
# args:
# - matches: has_resp
# exec: accept
# fallback 用远程服务器 sequence
- tag: fallback
type: fallback
args:
primary: remote_sequence
secondary: remote_sequence
threshold: 500
always_standby: true
# 主要的运行逻辑插件
# sequence 插件中调用的插件 tag 必须在 sequence 前定义,
# 否则 sequence 找不到对应插件。
- tag: main_sequence
type: sequence
args:
- exec: $lazy_cache
- exec: $fallback
# 启动 udp 服务器。
- tag: udp_server
type: udp_server
args:
entry: main_sequence
listen: ":5335"
# 启动 tcp 服务器。
# - tag: tcp_server
# type: tcp_server
# args:
# entry: main_sequence
# listen: ":5335"
方法二 mosdns 接手全部 DNS 解析
openclash 的 dns 走本地的 mosdns,记得把 openclash 覆写设置的 追加上游 DNS
关掉,
然后 mosdns 用内置预设就足够用了,高级设置内把远程 DNS 首选 IPv4
和防止 dns 泄漏
的选项打开即可。
dns:
enable: true
listen: :1053
ipv6: true
enhanced-mode: redir-host
fake-ip-filter:
- "*"
- "+.lan"
- "+.local"
default-nameserver:
- 223.5.5.5
- 119.29.29.29
proxy-server-nameserver:
- https://223.5.5.5/dns-query
nameserver:
- udp://127.0.0.1:5335
测试 DNS 泄漏
https://ipleak.net/ (opens in a new tab)
PS: geosite:geolocation-!cn 内不含 ipleak.net,需要自己添加 "+.ipleak.net" 规则