Як повністю, динамічно відключити стек IPv4 з Linux?


17

Як я можу відключити стек IPv4 з Linux? Я хочу це робити динамічно , тобто іноді я хочу, щоб це було ввімкнено, а іноді я хочу лише стек IPv6 . Чи є якийсь портативний спосіб зробити це? Якщо ви знаєте, як це зробити в будь-якому розповсюдженні, це також мені дуже допоможе.


2
@kasperd З 2011 року нічого не змінилося
Майкл Хемптон

Відповіді:


21

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

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

EDIT: Після швидкої перевірки 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.
kasperd

1

Переважно вам слід перекомпілювати своє ядро ​​без ipv4 модулів. Федора

Ви не можете його повністю відключити, оскільки система використовує 127.0.0.1 інтерфейс зворотного зв'язку.
Але ви можете відключити деякі функції ipv4 за допомогою команди if-cfg.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.