#902 closed defect (invalid)
сервер игнорирует AAAA ответы от DNS сервера
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-core | Version: | 1.8.x |
Keywords: | resolver | Cc: | gcc, version, 4.8.5, 20150623, (Red, Hat, 4.8.5-4), (GCC) |
uname -a: | Linux build.rcsnet.ru 3.10.0-327.4.4.el7.x86_64 #1 SMP Tue Jan 5 16:07:00 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux | ||
nginx -V: |
nginx version: nginx/1.8.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) built with OpenSSL 1.0.2d-fips 9 Jul 2015 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_spdy_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-pcre --with-pcre-jit --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E' |
Description
Не могу проксировать страницу на сервер у которого отсутствует IPv4 адрес.
Для воспроизведения проблемы необходимо:
- создать AAAA запись и не создавать A на DNS сервере;
- сконфигурировать виртуальный сервер как в примере ниже;
- проверить что не работает конфигурация.
Пример конфигурации виртуального сервера
server { listen 5984 default_server; server_name db.xcommnetwork.com; root /usr/share/nginx/vhost/db.xcommnetwork.com; resolver 127.0.0.1 valid=5 ipv6=on; set $backend "virtual-db.app.xcommnetwork.com"; location / { proxy_pass http://$backend; } }
Пример вывода в логе NGINX
2016/02/16 12:50:57 [error] 34002#0: *41 virtual-db.app.xcommnetwork.com could not be resolved (3: Host not found), client: 127.0.0.1, server: db.xcommnetwork.com, request: "GET / HTTP/1.1", host: "127.0.0.1:5984" 2016/02/16 12:50:57 [error] 34002#0: *42 virtual-db.app.xcommnetwork.com could not be resolved (3: Host not found), client: 127.0.0.1, server: db.xcommnetwork.com, request: "GET / HTTP/1.1", host: "127.0.0.1:5984" 2016/02/16 12:50:58 [error] 34002#0: *43 virtual-db.app.xcommnetwork.com could not be resolved (3: Host not found), client: 127.0.0.1, server: db.xcommnetwork.com, request: "GET / HTTP/1.1", host: "127.0.0.1:5984" 2016/02/16 12:50:58 [error] 34002#0: *44 virtual-db.app.xcommnetwork.com could not be resolved (3: Host not found), client: 127.0.0.1, server: db.xcommnetwork.com, request: "GET / HTTP/1.1", host: "127.0.0.1:5984"
Пример вывода команды nslookup
[root@node2.app:1 ~]# nslookup -type=aaaa virtual-db.app.xcommnetwork.com Server: 127.0.0.1 Address: 127.0.0.1#53 virtual-db.app.xcommnetwork.com has AAAA address 2a03:5180:5:4::2 [root@node2.app:1 ~]# nslookup -type=a virtual-db.app.xcommnetwork.com Server: 127.0.0.1 Address: 127.0.0.1#53 !** server can't find virtual-db.app.xcommnetwork.com: NXDOMAIN
Note:
See TracTickets
for help on using tickets.
Это следствие неверной конфигурации на стороне DNS-сервера.
В данном случае, поскольку такое имя существует (имеется RR AAAA), то на запрос A следует отвечать с нулевым rcode и нулевым количеством RR. Отвечать на такой запрос NXDOMAIN - признак неправильной конфигурации.
nginx при получении NXDOMAIN от любого из типов запроса (A или AAAA) трактует такой ответ как ошибку.
Ссылки для ознакомления:
https://www.ietf.org/rfc/rfc4074.txt