Как работает выбор адреса источника IPv6 в Linux?

Как Linux выбирает, какой из многих возможных исходных адресов IPv6 использовать при подключении к другому сайту? Я открываю соединения с сайтами 6to4 и не-6to4 с хоста, настроенного с адресом 6to4 и не-6to4.

В моем Linux был настроен IPv6-адрес 6to4 и не-6to4, и он действительно выбирал адрес источника 6to4 при подключении к другому хосту 6to4 и адрес не-6to4 при подключении к хосту не-6to4. Это было быстрее, потому что оба направления канала 6to4 смогли обойти туннельный сервер. Я не был уверен, что мне просто повезло или это было ожидаемое поведение.

IPad с такой же рекламой IPv6-маршрутов решил использовать IPv4 даже при подключении к таким сайтам, как ipv6.he.net, поэтому я больше не рекламирую маршрут 6to4. Локальный маршрутизатор все еще имеет свой собственный шлюз 6to4 для обхода туннеля для исходящего 6to4.

3 ответа

Решение

Лучший документ об этом от Ульриха Дреппера, он описывает gai.confсвязь с RFC 3484, соединение glibc getaddrinfo (3) и выбор адреса ядра.

http://www.akkadia.org/drepper/linux-rfc3484.html

Кстати: iproute2 поддерживает в более поздних версиях gai.conf файл, использовать ip addrlabel show команда. Вы можете найти некоторые образцы в этой статье:

Привет
Бернд

Таблица маршрутизации, кроме того, идентификатор области используется для локальных адресов области ссылки.

http://en.wikipedia.org/wiki/Routing_table

http://en.wikipedia.org/wiki/IPv6_address

edit: Как интересное дополнение, я недавно обнаружил, что стек TCP имеет более строгие требования, чем UDP или датаграммы. С UDP вы можете довольно часто избегать идентификатора области, если адрес очевиден на хосте, однако TCP вообще не дает вам этой свободы, идентификатор всегда должен быть указан.

Лучший документ, который мне удалось найти - это RFC 3484 Выбор адреса по умолчанию для IPv6 и его черновая версия http://tools.ietf.org/html/draft-ietf-6man-rfc3484-revise-03

Другие вопросы по тегам