Проблема и цель
Мы не получаем 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? Что-нибудь более изящное чем регистрация всего и просмотр журнала?
Путь?
Какие (другие) возможности есть и какие самые простые?