Как отключить IPv4 стек из линукса? Я хочу сделать это динамично, т.е. иногда я хочу, чтобы он был включен, а иногда я хочу только IPv6 стек. Есть ли какой-нибудь переносной способ сделать это? Если вы знаете, как это сделать в любом дистрибутиве, это тоже мне очень поможет.
После небольшого разговора по IRC общее мнение таково, что ядро linux разделяет некоторый код между ipv4 и ipv6, и это может сделать полное отключение ipv4 совершенно невозможным. Ты можешь пытаться для компиляции ядра без частей ipv4, но ipv6 может не скомпилироваться в этом случае (но ничто не мешает вам попробовать!).
Вы можете удалить адреса ipv4 из интерфейсов, AFAIK, но я не думаю, что в настоящее время возможно полностью отключить ipv4.
РЕДАКТИРОВАТЬ: После быстрой проверки make menuconfig
на ядре 2.6.36 я не мог найти способ отключить ipv4 без отключения всего стека TCP / IP (и, следовательно, ipv6).
Если это для разработчиков, то можно использовать «вставку библиотеки» с LD_PRELOAD - некоторая подделанная библиотека с функциями-заглушками, которые просто возвращают ошибки (или вызывают настоящие в зависимости от дня недели или какого-либо другого внешнего критерия).
Я не думаю, что можно полностью отключить IPv4, но в зависимости от вашей цели отбрасывание всего трафика IPv4 с помощью iptables
может быть достаточно, нет?
Примерно так должно работать. Я не тестировал его ни на одной машине, так как обращаюсь к ним через IPv4.
sudo iptables -I INPUT -j DROP
sudo iptables -O OUTPUT -j DROP
В основном вам следует перекомпилировать ядро без модулей ipv4. шляпа
Вы не можете отключить его полностью, потому что в системе используется петлевой интерфейс 127.0.0.1.
Но вы можете отключить некоторые функции ipv4 с помощью команды if-cfg.