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.
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.
Odpowiedzi:
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 menuconfig
ją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).
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).
Nie sądzę, że możliwe jest całkowite wyłączenie IPv4, ale w zależności od twojego celu, iptables
wystarczają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
/etc/network/interfaces.d
. Nie jest to dokładnie to samo, co wyłączenie IPv4, ponieważ systemd-resolved
nadal 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
.