DNS解析

GOST在2.6版本中可以自定义DNS解析。DNS解析应用于服务节点。

每当节点收到请求时,会使用此节点上指定的DNS解析器对此请求的目标地址进行解析。

使用说明

gost -L=http://:8080?dns=8.8.8.8,1.1.1.1:53/tcp,1.1.1.1:853/tls,https://1.0.0.1/dns-query

参数项

dns - 指定DNS服务列表(以逗号分割),每个DNS服务的格式为:ip[:port][/protocol],其中port默认为53,protocol可选值有:udpudp-chaintcptcp-chaintlstls-chainhttpshttps-chain。默认值为udp

代理链(2.10.0+)

如果需要通过代理链来连接DNS服务器,则可以使用以下protocols:

udp-chain, tcp-chain, tls-chain, https-chain

gost -L=http://:8080?dns=8.8.8.8/udp-chain,1.1.1.1:853/tls-chain,https-chain://dns.google/dns-query -F=socks://:1080
如果要转发udp-chain,代理链的末端(最后一个-F参数)必须是GOST socks5ssu类型代理。

配置文件

也可以使用外部文件来指定DNS服务列表:

gost -L=:8080?dns=dns.txt

配置文件的格式为(按行分割的地址列表):

# options
timeout     5s
# ttl       60s
reload      10s

# prefer    ipv6

# ip        1.2.3.4

# ip[:port] [protocol] [hostname]
8.8.8.8
8.8.8.8     tcp
1.1.1.1     udp
1.1.1.1:53  tcp-chain
1.1.1.1:853 tls     cloudflare-dns.com
https://1.0.0.1/dns-query   https-chain

timeout - DNS请求超时时间,默认5秒。

ttl - DNS缓存有效期,默认使用DNS查询返回结果中的TTL。当设置为负值,则不使用缓存。

reload - 此配置文件支持热更新。此选项用来指定文件检查周期,默认关闭热更新。

prefer - (2.8.2+) AAAA(IPv6)优先于A(IPv4)。

ip - 2.10.1+,客户端IP,设置后会开启ECS(EDNS Client Subnet)扩展功能。

DNS服务项分为三列:

第一列为DNS服务器地址,格式为ip[:port],port默认为53.

第二列为协议类型,可选值有:udpudp-chaintcptcp-chaintlstls-chainhttpshttps-chain。 默认为udp

第三列为DNS服务域名,当协议类型为tlstls-chainhttpshttps-chain时有效,用于TLS证书校验。

自定义域名解析

除了可以自定义DNS服务用来解析域名外,还可以手动指定域名-IP映射关系,类似于Linux下的/etc/hosts文件功能。

gost -L=:8080?hosts=hosts.txt

配置文件的格式:

# options
reload  10s

# IP_address    canonical_hostname     [aliases...]
127.0.0.1       localhost
192.168.1.10    foo.mydomain.org       foo
192.168.1.13    bar.mydomain.org       bar baz

reload - 此配置文件支持热更新。此选项用来指定文件检查周期,默认关闭热更新。

映射表项分为三列:

第一列为IP地址。

第二列为主机名或域名。

第三列为别名,可以有多个。