Назад | Перейти на главную страницу

Службы Ubuntu 12.04 с использованием ipv6

В настоящее время я управляю двумя серверами на Linode. Первый «server-a» работает под управлением 12.04, второй «server-b» - это свежая установка 14.04.

Некоторое время назад у меня возникли проблемы с записями spf на server-a, и я понял, что мне нужно явно добавить (или создать запись A) для адреса ipv6, поскольку служба postfix использовала ipv6 для подключения к gmail. Это было для меня неожиданностью, так как я просто предполагал, что по умолчанию будет использоваться ipv4. После небольшого повторения я обнаружил, что почти все службы использовали ipv6 в некоторых случаях, но не в других.

Например, если postfix доставляет почту, или если я telnet или ssh на другой хост на Linode, мой адрес ipv6 отображается в журнале. С другой стороны, если я подключаюсь к своему локальному серверу здесь, дома, или к серверу в сети Digital Ocean, используется ipv4.

Может ли кто-нибудь объяснить, когда и как определяется, что при установлении соединения следует использовать ipv4 или ipv6? Отличается ли он от услуги к услуге или это часть центральной конфигурации?

Доступ к службам обычно осуществляется с помощью имени хоста, что обычно означает, что DNS используется для поиска IP-адресов, связанных с этим именем хоста. Для IPv4 будут записи A, а для IPv6 будут записи AAAA. Предполагается, что все эти адреса предлагают одну и ту же услугу, независимо от используемого протокола.

Поэтому, если вы отправляете электронное письмо в Gmail, ваш почтовый сервер будет искать записи MX (почтовый обмен) для gmail.com. На мой взгляд, это:

gmail.com.  MX  5   gmail-smtp-in.l.google.com.
gmail.com.  MX  10  alt1.gmail-smtp-in.l.google.com.
gmail.com.  MX  20  alt2.gmail-smtp-in.l.google.com.
gmail.com.  MX  30  alt3.gmail-smtp-in.l.google.com.
gmail.com.  MX  40  alt4.gmail-smtp-in.l.google.com.

MX с наивысшим приоритетом gmail-smtp-in.l.google.com, поэтому давайте посмотрим на его адреса:

gmail-smtp-in.l.google.com.  A     74.125.136.26
gmail-smtp-in.l.google.com.  A     74.125.136.27
gmail-smtp-in.l.google.com.  AAAA  2a00:1450:4013:c01::1b

Итак, теперь у вашего почтового сервера есть три адреса, которые он может использовать. DNS не сообщает вам, какой из них предпочтительнее. Этот выбор остается за вашим местным программным обеспечением. Существует целый RFC об используемом алгоритме (RFC 6724), но обычно это сводится к следующему: использовать IPv6, если он доступен, в противном случае - IPv4.

Postfix (≥ 2.9) будет, если явно не настроено иное, использовать как IPv4, так и IPv6, если они доступны. Сначала он попробует IPv6, а если не сможет подключиться с помощью IPv6, он подключится с помощью IPv4.

В наши дни веб-браузеры работают по-другому с момента изобретения Happy Eyeballs / RFC 6555. Поскольку проблемы с подключением на IPv6 могут вызвать раздражающие или даже неработающие тайм-ауты, браузер попытается использовать IPv6, но если он ничего не услышит через ± 200 мс, он попытается подключиться с использованием IPv4 параллельно. Будет использовано первое успешное соединение.

И, конечно же: если служба, которую вы используете, не рекламирует какие-либо адреса IPv6 в DNS, будет использоваться только IPv4. И наоборот.