Welcome! Log In Create A New Profile

Advanced

Re: resolver: A vs AAAA

December 15, 2016 01:18AM
On Wed, Dec 14, 2016 at 09:38:41PM +0300, Dmitry Sivachenko wrote:
>
> > On 14 Dec 2016, at 20:50, Maxim Dounin <mdounin@mdounin.ru> wrote:
> >
> > Hello!
> >
> > On Wed, Dec 14, 2016 at 08:06:31PM +0300, Dmitry Sivachenko wrote:
> >
> >>> On 14 Dec 2016, at 19:59, Maxim Dounin <mdounin@mdounin.ru> wrote:
> >>>
> >>> Если в конфиге действительно proxy_pass на имя - то при чём тут
> >>> resolver? Первыми будет использоваться IPv4-адреса из-за порядка
> >>> сохранения записей, который случается в ngx_inet_resolve_host().
> >>>
> >>> Однако как и в случае resolver'а - порядок ни на что не влияет,
> >>> кроме, может быть, отдельных краевых эффектов, т.к. все полученные
> >>> адреса будут использоватся и запросы между ними будут
> >>> балансироваться по round-robin.
> >>
> >> Допустим, что nginx работает на ipv6-only сервере, а some.ip (аргумент proxy_pass) -- имеет и A, и AAAA.
> >> Я не хочу чтобы nginx вообще пытался устанавливать соединение к ipv4-адресу.
> >
> > Если у вас ipv6-only сервер - так и будет, т.к. nginx использует
> > getaddrinfo() с флагом AI_ADDRCONFIG, и неподдерживаемые адреса
> > система просто не вернёт nginx'у.
>
>
> В моем случае на машине настроены ipv4-over-ipv6 туннели, так что реально ipv4-адреса на интерфейсе есть, но роутинг работает только для ipv6.
>
> Раз используется getaddrinfo(), то эта функция как раз возвращает адреса в нужном порядке (учитывает ip6addrctl_policy).
>
> Так что кажется что проблема лишь в
> ----------
> Первыми будет использоваться IPv4-адреса из-за порядка
> сохранения записей, который случается в ngx_inet_resolve_host().
> ----------
>
> Если сохранять порядок, возвращаемый getaddrinfo(), то будет то поведение, которое нужно.

Как уже написал Максим ранее, эти адреса используются в режиме
round-robin, поэтому все они рано или поздно будут попробованы.
Вот зеркальная ситуация с unroutable IPv6:

1-й запрос:
2016/12/15 09:10:07 [error] 35029#0: *1 kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://88.198.44.17:12345/", host: "127.1:8000"
2016/12/15 09:10:07 [error] 35029#0: *1 connect() to [2a01:4f8:a0:1064::2]:12345 failed (65: No route to host) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://[2a01:4f8:a0:1064::2]:12345/", host: "127.1:8000"
[...]

2-й запрос:
2016/12/15 09:10:21 [error] 35029#0: *4 connect() to [2a01:4f8:a0:1064::2]:12345 failed (65: No route to host) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://[2a01:4f8:a0:1064::2]:12345/", host: "127.1:8000"
2016/12/15 09:10:23 [error] 35029#0: *4 kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://88.198.44.17:12345/", host: "127.1:8000"
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

resolver: A vs AAAA

Dmitry Sivachenko December 14, 2016 10:08AM

Re: resolver: A vs AAAA

ru@nginx.com December 14, 2016 11:26AM

Re: resolver: A vs AAAA

Maxim Dounin December 14, 2016 12:00PM

Re: resolver: A vs AAAA

Dmitry Sivachenko December 14, 2016 12:08PM

Re: resolver: A vs AAAA

Maxim Dounin December 14, 2016 12:52PM

Re: resolver: A vs AAAA

Dmitry Sivachenko December 14, 2016 01:40PM

Re: resolver: A vs AAAA

ru@nginx.com December 15, 2016 01:18AM

Re: resolver: A vs AAAA

Dmitry Sivachenko December 15, 2016 03:50AM

Re: resolver: A vs AAAA

Dmitry Morozovsky December 15, 2016 04:14AM

Re: resolver: A vs AAAA

Dmitry Morozovsky December 15, 2016 04:14AM

Re: resolver: A vs AAAA

Andrey Kopeyko December 15, 2016 05:28AM

Re: resolver: A vs AAAA

Dmitry Sivachenko December 14, 2016 01:50PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 78
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready