Wyłączanie IPv6 na jednym interfejsie

9

Jestem nieco zaskoczony faktem, że Ubuntu nie przetworzy protokołu IPv4 DHCP, chyba że wyraźnie to powiesz, ale chętnie wezmę RA ipv6 RA, chyba że powiesz, żeby tego nie robił. Czy istnieje sposób na zmianę domyślnego zachowania na „nic nie rób, chyba że wyraźnie go włączę”?

(Uwaga dla odpowiadających: Nie chcę globalnie wyłączać ipv6 ani całkowicie wyłączać autoconf. Domyślnie chcę wyłączyć autoconf (jak w, nie chcę ipv6, chyba że powiem o tym w / etc / network / interfejsy, w ten sam sposób, w jaki nie otrzymuję adresu v4, chyba że wyraźnie włączyłem dhcp). Dzieje się tak, że dla każdego interfejsu, który działa - np. ma konfigurację ipv4 - adres v6 zwykle się zmienia również na interfejsie, mimo że nie włączyłem tego wyraźnie. Dotychczasowe rozwiązania są odpowiednie, ale jeśli wyłączę v6 lub autoconf globalnie, nie będę mógł ponownie włączyć v6 na podstawa dla interfejsu z prostym poleceniem w / etc / network / interfaces. Jestem całkiem pewien, że proszę o księżyc na patyku, pamiętajcie.)

ijw
źródło
1
Oto link, jak wyłączyć ipv6. Sam tego nie próbowałem. Daj mi znać, jeśli to działa: Jak wyłączyć IPV6 w Ubuntu
BiggJJ
3
Prawdopodobnie tak, ale nie chcę wyłączać ipv6, po prostu zapobiegaj automatycznej konfiguracji interfejsów, chyba że chciałbym, aby były one automatycznie skonfigurowane.
ijw

Odpowiedzi:

9

Autoconf w ramach podstawowej funkcjonalności IPv6. Ogłoszenia RA nie są DHCP, a serwer RA nie przypisuje adresów. RA jest znacznie bliżej automatycznej konfiguracji IPv4 wykonanej w zakresie IP 169.254.0.0/16. Jeśli prywatność jest włączona, Twój adres IPv6 zmieni się z czasem. Twój stary adres zostanie wycofany i ostatecznie usunięty.

Możesz łatwo wyłączyć autoconf ipv6 za pomocą polecenia:

sudo sysctl -w net.ipv6.conf.all.autoconf=0

Zastąp allnazwę interfejsu, aby wyłączyć jeden interfejs. Wymień autoconfsię disable_ipv6aby wyłączyć IPv6. Utwórz plik /etc/sysctl.dz przypisaniami zmiennych, których ustawienia chcesz zastosować podczas uruchamiania.

Aby znaleźć wszystkie ustawienia związane z ipv6, uruchom polecenie:

sudo sysctl -a | grep ipv6 | less
BillThor
źródło
4

Aby sprawdzić, czy protokół IPv6 jest włączony, czy wyłączony

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

0 oznacza, że ​​jest włączone, a 1 jest wyłączone.

Aby wyłączyć IPv6

$ su -
# nano /etc/sysctl.conf

i dodaj te linie do pliku sysctl.conf

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Zapisz plik sysctl.conf z nową konfiguracją, a następnie uruchom ponownie system

# reboot

Sprawdź ponownie swój system

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

Teraz powinieneś zobaczyć „1”, co oznacza, że ​​IPv6 został wyłączony w twoim systemie.

From http://namhuy.net/1419/disable-ipv6-ubuntu-linux-mint.html


źródło
Pracował dla mnie. Przynajmniej na Centos możesz uruchomić „sudo sysctl -p”, aby przeładować bez ponownego uruchamiania
Code Wiget
2

Podobnie, ale odmiennie od jednej z pozostałych odpowiedzi, próbowałem z wielką radością:

Dodaj plik sysctl do /etc/sysctl.d, aby wyłączyć ipv6 - jednak nie ogólnie, tylko jako domyślny stan interfejsu:

net.ipv6.conf.default.disable_ipv6=1

Następnie w pliku interfejsów i tylko dla interfejsów, w których chcesz mieć ipv6, dodaj:

iface eth0 inet dhcp # .. or whatever
up sysctl -w net.ipv6.conf.$IFACE.disable_ipv6=0

... dlatego interfejsy nie otrzymują adresów IPv6, kiedy się pojawiają (jak obecnie), ale można je przekonać, że mają je w określonych przypadkach. Bez wątpienia możesz wyłączyć RA przed włączeniem ipv6, jeśli tego właśnie chciałeś.

NB: Podejrzewam, że napotkasz problemy z interfejsami o nazwie VLAN (np. Eth0.100) i będziesz musiał przeliterować to w poleceniu „up” jako „eth0 / 100” zamiast $ IFACE, który będzie miał niewłaściwy format - Nie testowałem, ale wygląda na to, że sysctl postrzega świat.

ijw
źródło