. Я хотел бы заблокировать исходящие соединения IPv6 для определенных пользователей на машине с Linux. Я не хочу отключать IPv6 для всей системы. Как мне это сделать? Я могу сделать это, используя ip6tables и отклоняя ВЫХОДНЫЕ соединения с icmp6-adm-prohibited или icmp6-no-route или icmp6-addr-unreachable, но по какой-то причине это вызывает задержки около 1 с. при каждом установленном соединении (IPv4 пробуется только после ожидания 1 с). Если установлено несколько подключений, эта задержка действительно суммируется.
Я не думаю, что это легко достижимо.
Любой клиент, который устанавливает сетевое подключение, сначала отправляет запрос DNS для получения адресов целевого сервера.
Большинство приложений используют системную libc
библиотеку для установления соединения.Когда библиотека видит, что в системе настроены адреса IPv4 и IPv6, она запрашивает записи A и AAAA для имени домена.
Если целевой домен имеет адрес IPv6, приложение сначала пытается подключиться с использованием IPv6, а затем возвращается к IPv4 в случае сбоя IPv6.
Вы заметили эту резервную задержку.
Вам потребуется пользовательский libc
, который разрешал бы только записи A для определенных пользователей и записи A+AAAA для других пользователей.