Как полностью, динамически отключить стек IPv4 из Linux?


17

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


2
@kasperd Ничего не изменилось с 2011 года.
— Майкл Хэмптон

Ответы:


21

После небольшого разговора на IRC общее мнение таково: ядро ​​linux разделяет некоторый код между ipv4 и ipv6, и это может сделать полное отключение ipv4 совершенно невозможным. Вы можете попытаться скомпилировать ядро ​​без частей ipv4, но ipv6 может не скомпилироваться в этом случае (но ничто не мешает вам попробовать!).

Вы можете удалить адреса ipv4 из интерфейсов, AFAIK, но я не думаю, что в настоящее время возможно полностью отключить ipv4.

РЕДАКТИРОВАТЬ: После быстрой проверки на make menuconfigядре 2.6.36 я не мог найти способ отключения ipv4 без отключения всего стека TCP / IP (и так, ipv6).


4

Если это для разработчиков, то можно использовать «библиотечную вставку», с LD_PRELOAD некоторая доктрированная библиотека с функциями-заглушками, которые просто возвращают ошибки (или которые вызывают реальные, в зависимости от дня недели или какого-либо другого внешнего критерия).


2

Я не думаю, что можно полностью отключить IPv4, но в зависимости от вашей цели iptablesможет быть достаточно отбросить весь трафик IPv4 , не так ли?

Нечто подобное должно работать. Я не тестировал его ни на одной машине, так как я получаю к ним доступ через IPv4.

sudo iptables -I INPUT -j DROP
sudo iptables -O OUTPUT -j DROP

1
Это заблокирует трафик, который иногда может быть полезным. но это не остановит программы от привязки сокета IPv4. Это необходимо для полного отключения IPv4.
— Майкл Хэмптон

На компьютере, где мне нужно было использовать только IPv6, я должен был отключить DHCP-клиента /etc/network/interfaces.d. Это не совсем то же самое, что отключение IPv4, поскольку systemd-resolvedон все еще прослушивается 127.0.0.53:53. Но этого было достаточно, чтобы удовлетворить мои насущные потребности, и я предпочел возиться с ними iptables.
— Касперд

1

В основном вам следует перекомпилировать ваше ядро ​​без модулей ipv4. мягкая фетровая шляпа

Вы не можете отключить его полностью, потому что система использует интерфейс обратной связи 127.0.0.1.
Но вы можете отключить некоторые функции ipv4 с помощью команды if-cfg.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.