IrineSistiana / mosdns

一个 DNS 转发器
GNU General Public License v3.0
2.91k stars 329 forks source link

[Bug] drop_resp 只丢弃 dns返回报文里的 ipv4结果吗?ipv6不丢弃? #836

Open muziling opened 1 month ago

muziling commented 1 month ago

在提交之前,请确认

mosdns 版本

5.3.3

操作系统

openwrt

Bug 描述和复现步骤

只配置 matches: resp_ip 127.0.0.1 0.0.0.0 , 会返回包括 ::1 的 ipv4+ipv6结果

# nslookup anitabi.cn 127.0.0.1#65353
Server:     127.0.0.1
Address:    127.0.0.1#65353

Name:      anitabi.cn
Address 1: 172.67.148.20
Address 2: 104.21.71.189
Address 3: ::1

配置 matches: resp_ip 127.0.0.1 0.0.0.0 ::1 ,会返回包括 :: 两个冒号的 ipv4+ipv6结果

# nslookup anitabi.cn 127.0.0.1#65353
Server:     127.0.0.1
Address:    127.0.0.1#65353

Name:      anitabi.cn
Address 1: 172.67.148.20
Address 2: 104.21.71.189
Address 3: ::

期望也丢弃异常的ipv6解析结果

使用的配置文件

log:
  level: warn
  file: stdout

api:
  http: "0.0.0.0:65355"

include: []

plugins:
  - tag: forward_cn_dns
    type: forward
    args:
      upstreams:
        - addr: 58.22.96.66

  - tag: forward_cn_dns2
    type: forward
    args:
      upstreams:
        - addr: 218.104.128.106

  - tag: forward_cn_dns3
    type: forward
    args:
      upstreams:
        - addr: 223.5.5.5

  - tag: cn_sequence3
    type: sequence
    args:
      - exec: $forward_cn_dns3
      - matches: resp_ip 127.0.0.1 0.0.0.0 ::1
        exec: drop_resp

  - tag: cn_sequence2
    type: sequence
    args:
      - exec: $forward_cn_dns2
      - matches: resp_ip 127.0.0.1 0.0.0.0 ::1
        exec: $forward_cn_dns3

  - tag: cn_sequence
    type: sequence
    args:
      - exec: $forward_cn_dns
      - matches: resp_ip 127.0.0.1 0.0.0.0 ::1
        exec: $cn_sequence2

  - tag: forward_foreign_dns
    type: forward
    args:
      upstreams:
        - addr: '1.1.1.1'

  - tag: foreign_sequence
    type: sequence
    args:
      - exec: $forward_foreign_dns
      - matches: resp_ip 1.1.1.1
        exec: $cn_sequence

  - tag: cn_udp_server
    type: udp_server
    args:
      entry: cn_sequence
      listen: ":65353"

  - tag: foreign_udp_server
    type: udp_server
    args:
      entry: foreign_sequence
      listen: ":65354"

mosdns 的 log 记录

No response

yyysuo commented 1 month ago

1:58.22.96.66 218.104.128.106 223.5.5.5这3个dns并发不行吗,你这样写,真遇到异常的域名,有机率要依次查3个dns,每个dns返回的结果不一样,结果很不好预测; 2:这种会污染的dns还是别用了吧,单独223就好了。 3:nslookup一个域名,v4和v6是2次查询,分别查的,没有prefer的情况下,互不影响,有prefer,一个域名可能要查4次。

muziling commented 1 month ago

并发查询没用呀,并发查询是配置在同一个sequence 里, drop_resp 后就3个DNS一起被丢弃了

yyysuo commented 1 month ago

并发查询没用呀,并发查询是配置在同一个sequence 里, drop_resp 后就3个DNS一起被丢弃了

确实。