HTTPDNS

HTTPDNS 通过 HTTP 接口对外提供域名解析服务,具有域名防劫持、精准调度、实时解析生效等特性。

启用 HTTPDNS

  • 全局配置/DNS页面启用 DNS:HTTPDNS - 图1 HTTPDNS - 图2

  • 全局配置/配置分区端口页面添加分区端口,类型选择httpdnsHTTPDNS - 图3

  • 应用页面添加HTTP/HTTPS应用:HTTPDNS - 图4

  • 在应用内添加上游,上游选择 node 节点的环回地址,端口输入上面步骤添加的httpdns分区端口:HTTPDNS - 图5

  • 在应用内添加页面规则:

    • 设置 HTTP 头部,使 httpdns 能正确获取客户端 IP。选择动作,添加动作设置代理头,报头填写X-Real-IP,值设置为内置变量-客户端地址HTTPDNS - 图6
    • 选择代理,上游选择上一步添加的上游:HTTPDNS - 图7

至此,HTTPDNS 配置已经完成,在DNS中添加 DNS 应用及记录,即可使用 HTTPDNS 进行查询。

HTTPDNS 查询

请求URL:http://{your app}/?host={your domain}&query=4,6&ip={client ip}

请求方法:GET

请求参数:

名称必选描述
host要解析的域名。
ip用户的来源IP,如果没指定这个参数,默认使用请求连接的源IP。
query指定解析结果IP的类型,可以选择6(IPv6)或4(IPv4)。默认为4。
type指定查询结果的格式,当前仅支持”json”。

请求返回:

名称描述
host查询的域名。
ips该域名的IPv4解析结果,是一个列表,可能包括0个、1个或多个IP地址。
ipsv6该域名的IPv6解析结果,是一个列表,可能包括0个、1个或多个IP地址。
ttl该域名解析结果的TTL缓存时间。
origin_ttl域名原始TTL,即权威NS上配置的域名TTL值。

请求错误码:

错误码HTTP状态码描述
MethodNotAllowed405不允许的HTTP 请求方法。
MissingArgument400缺少查询参数,如 host。
UnsupportedType400URL 参数 type 指定了不支持的类型。
InvalidHost400URL 参数 host 指定的域名不合法。
InvalidIP400URL 参数 ip 指定的客户 IP 不合法。
InvalidQuery400URL 参数 query 指定的ip 版本不合法。
InternalError500服务器内部错误。
QueryError500域名查询错误。

查询示例

单结果查询示例:仅指定单个 host 及单个 IP,则为单结果查询。

  • 请求示例1: http://www.test.com:80/?host=www.a.com
  • 请求示例2: http://www.test.com:80/?host=www.a.com&ip=1.2.3.4
  • 请求示例3: http://www.test.com:80/?host=www.a.com&ip=1.2.3.4&query=6
  • 请求示例4: http://www.test.com:80/?host=www.a.com&ip=1.2.3.4&query=4,6

结果示例:

  1. {
  2. "client_ip": "1.2.3.4",
  3. "ips": ["127.0.0.1"],
  4. "host": "www.a.com",
  5. "ttl": 300,
  6. "origin_ttl": 300
  7. }

多结果查询示例:指定了多个 host 或多个 ip,则为多结果查询。

  • 请求示例1: http://www.test.com:80/?host=www.a.com,www.b.com
  • 请求示例2: http://www.test.com:80/?host=www.a.com&ip=1.1.1.1,2.2.2.2&query=4,6
  • 请求示例3: http://www.test.com:80/?host=www.a.com,www.b.com&ip=1.1.1.1,2.2.2.2&query=4,6
  • 请求示例4: http://www.test.com:80/?host=www.a.com,www.b.com&ip=1.1.1.1&query=4,6

结果示例:

  1. {
  2. "dns": [{
  3. "client_ip": "1.1.1.1",
  4. "ipsv6": {},
  5. "host": "www.a.com",
  6. "ttl": 300,
  7. "ips": {}
  8. }, {
  9. "client_ip": "2.2.2.2",
  10. "ipsv6": {},
  11. "host": "www.a.com",
  12. "ttl": 300,
  13. "ips": {}
  14. }]
  15. }