Проблема и цель
Мы не получаем IPv6 от нашего провайдера, поэтому у меня есть туннель IPv6, который работает нормально, но, конечно, не очень быстро. И не очень надежный. Мне нравится, чтобы IPv6 был доступен «на всякий случай», но я хочу, чтобы определенные хосты (домены) были связаны только с IPv4.
Протокол по умолчанию
Мне кажется, что все приложения сначала пробуют IPv6; это, вероятно, настройка glibc. Я был бы хорошо, если бы это значение по умолчанию было обращено (для всех приложений).
Netfilter
Было бы возможно заблокировать адреса / сети IPv6 с Netfilter, но есть две проблемы:
- Вызовет ли это задержку, поскольку приложение ожидает истечения времени ожидания IPv6, прежде чем оно попробует IPv4?
- Некоторые домены кажутся смешанными, что выглядит как хаос. Разделение google.com и youtube.com кажется чем-то, что вы не хотите делать, если можете избежать этого.
Я просто отмечаю, что страница руководства для ip route
говорит о типе маршрутизации unreachable
:
Локальные отправители получают ошибку EHOSTUNREACH.
Происходит ли то же самое с Netfilter DROPs или REJECT? Такая ошибка не должна вызывать соответствующую задержку.
DNS фильтрация
Другое решение (довольно простое, если это возможно) будет фильтровать записи AAAA для определенных доменов. Если это (легко) невозможно: возможно ли подключить DNS-сервер и Netfilter, чтобы я знал, что «IP-адрес X принадлежит домену Y», чтобы я мог добавить его в Netfilter? Что-нибудь более изящное чем регистрация всего и просмотр журнала?
Путь?
Какие (другие) возможности есть и какие самые простые?
Ответы:
Вы можете контролировать выбор адреса с помощью
/etc/gai.conf
. Файл конфигурации хорошо документирован и уже содержит значения по умолчанию, так что вы можете просто начать настройку.Интересные значения по умолчанию:
Последняя строка дает наименьшее предпочтение всем адресам IPv4.
Если вы хотите дать более высокий приоритет всем IPv4, вы можете изменить его на:
Если вы только хотите отдать предпочтение конкретным адресам или блокам IPv4, вы также можете указать их. Помните, что вы должны использовать IPv4-сопоставленный IPv6 в шестнадцатеричном формате.
Итак, чтобы отдать предпочтение 203.0.113.0/24 по всем IPv6, вы должны добавить:
Перезапустите запущенные приложения, чтобы они воспринимали внесенные вами изменения.
На производных системах Debian
/etc/gai.conf
уже присутствует. В системах, производных от Red Hat, он отсутствует, но образец файла находится по адресу/usr/share/doc/glibc-common-*/gai.conf
; просто скопируйте его в/etc
.источник
Хорошо, вот совершенно другой ответ.
Поместите нарушающие узлы с дрянной связью IPv6
/etc/hosts
с их соответствующим адресом IPv4.Например:
Не забудьте удалить их, когда улучшится их (в данном случае) или подключение к IPv6.
источник
/etc/hosts
. Если никто не придумает: «Программное обеспечение DNS-сервера XY может фильтровать таким образом !!» Я, вероятно, в конечном итоге с этим.