Jak całkowicie, dynamicznie wyłączyć stos IPv4 w systemie Linux?

17

Jak mogę wyłączyć stos IPv4 w systemie Linux? Chcę to zrobić dynamicznie , tzn. Czasami chcę to włączyć, a czasem chcę tylko stos IPv6 . Czy jest na to jakiś przenośny sposób? Jeśli wiesz, jak to zrobić w dowolnej dystrybucji, bardzo mi to pomoże.

Aldebaran
źródło
2
@kasperd Nic się nie zmieniło od 2011 roku.
Michael Hampton

Odpowiedzi:

21

Po krótkim czacie na IRC ogólna opinia mówi, że jądro Linuksa dzieli część kodu między ipv4 i ipv6, co może całkowicie uniemożliwić wyłączenie ipv4. Możesz spróbować skompilować jądro bez części ipv4, ale ipv6 może się nie skompilować w tym przypadku (ale nic nie powstrzymuje cię przed próbą!).

Możesz usunąć adresy IPv4 z interfejsów, AFAIK, ale nie sądzę, aby w tej chwili można było całkowicie wyłączyć ipv4.

EDYCJA: Po szybkim sprawdzeniu make menuconfigjądra 2.6.36 nie mogłem znaleźć sposobu na wyłączenie ipv4 bez wyłączenia całego stosu TCP / IP (a więc ipv6).

rdzeń rdzeniowy
źródło
4

Jeśli jest to przeznaczone dla programistów, można zastosować „interpolację bibliotek”, z LD_PRELOAD jakąś dokumentowaną biblioteką z funkcjami pośredniczącymi, które po prostu zwracają błędy (lub które wywołują te rzeczywiste w zależności od dnia tygodnia lub innego zewnętrznego kryterium).

ramruma
źródło
2

Nie sądzę, że możliwe jest całkowite wyłączenie IPv4, ale w zależności od twojego celu, iptableswystarczające może być zmniejszenie całego ruchu IPv4 , prawda?

Coś takiego powinno działać. Nie testowałem tego na żadnym komputerze, ponieważ uzyskuję do nich dostęp przez IPv4.

sudo iptables -I INPUT -j DROP
sudo iptables -O OUTPUT -j DROP
Antoine Albertelli
źródło
1
Spowoduje to zablokowanie ruchu, co może być czasem przydatne. ale nie powstrzyma programów przed wiązaniem gniazda IPv4. Jest to konieczne, aby całkowicie wyłączyć IPv4.
Michael Hampton
To, co zrobiłem na komputerze, na którym musiałem uruchomić tylko IPv6, polegało na wyłączeniu klienta DHCP /etc/network/interfaces.d. Nie jest to dokładnie to samo, co wyłączenie IPv4, ponieważ systemd-resolvednadal nasłuchuje 127.0.0.53:53. Ale wystarczyło to, aby zaspokoić moje bezpośrednie potrzeby i zdecydowanie wolałem się z nimi bawić iptables.
kasperd
1

Przeważnie powinieneś rekompilować jądro bez modułów ipv4. fedora

Nie można go całkowicie wyłączyć, ponieważ system używa interfejsu sprzężenia zwrotnego 127.0.0.1.
Ale możesz wyłączyć niektóre funkcje ipv4 za pomocą polecenia if-cfg.

MealstroM
źródło