Jak wyłączyć ipv6 na określonym interfejsie w systemie Linux?

24

Czy ktoś mógłby mi powiedzieć, jak wyłączyć automatyczną konfigurację ipv6 w określonym interfejsie sieciowym w CentOS?

Obecna sytuacja to:

Komputer ma dwie karty sieciowe eth0 i eth1, które łączą się z tą samą siecią LAN, w której router IPv6 reklamuje prefiks IPv6 z pakietem NDRA (reklamy sąsiadujących routerów odnajdujących). W rezultacie zarówno eth0, jak i eth1 automatycznie konfigurują adres IPv6 z tym prefiksem.

Chcę tylko włączyć ipv6 na eth1 i wyłączyć na eth0. Próbowałem następujących metod, ale one nie działają.

1. / etc / sysconfig / network

NETWORKING_IPV6=no
IPV6_AUTOCONF=no

Spowoduje to wyłączenie ipv6 zarówno na eth0, jak i eth1.

2. / etc / sysconfig / network-scripts / ifcfg-eth0

IPV6INIT=no
IPV6_AUTOCONF=no

To nie działa. Zrestartowałem już usługę sieciową. Jestem trochę zdezorientowany w tej kwestii. Z góry dziękuję.

Yves Messi
źródło
1
sysconfig.txt zdecydowanie sugeruje, że to, co zrobiłeś, powinno wyłączyć IPv6 na określonym interfejsie. Wygląda jednak na to, że te flagi są ignorowane. Istnieją dwa raporty o błędach, które również zostały zignorowane. Zobacz bugzilla.redhat.com/show_bug.cgi?id=982740 i bugzilla.redhat.com/show_bug.cgi?id=496444
Stefan Lasiewski

Odpowiedzi:

41

Możesz wyłączyć go z /etc/sysctl.conf za pomocą tego wiersza:

net.ipv6.conf.eth0.disable_ipv6 = 1

Spójrz na / proc / sys / net / ipv6 / conf / eth0. Istnieje wiele opcji, które można ustawić w tym katalogu, na przykład pozostawienie włączonego IPv6, ale wyłączenie autoconf itp.

Sander Steffann
źródło
4
Dla tych, którzy chcą wyłączyć wszystkie, a nie tylko jeden interfejs, po prostu zamień „eth0” na „all”
Peter
1
W rzeczywistości zamiast modyfikować /etc/sysctl.conf, utwórz plik o /etc/sysctl.dnazwie na przykład 00_ipv6_off.confz powyższą zawartością. ifconfigpokaże wtedy interfejsy pozbawione funkcjonalności IPv6.
David Tonhofer,
W jednej linii:echo "net.ipv6.conf.eth0.disable_ipv6 = 1" > /etc/sysctl.d/00_ipv6_off.conf
David Tonhofer
11
$ sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=1

przestarzałe

# echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6

Aby upewnić się, że ta zmiana będzie się powtarzać podczas ponownego uruchamiania, dodaj tę linię do swojego /etc/sysctl.confpliku:

net.ipv6.conf.eth0.disable_ipv6=1

Pamiętaj, że korzystanie z /etc/sysconfig/network-scripts/ifcfg-eth0pliku jest nieprzenośne.

cjac
źródło
3

Powinieneś być rootem, aby ustawić parametr sieci poniżej:

echo 1 > /proc/sys/net/ipv6/conf/wlan0/disable_ipv6
mgundes
źródło
Będzie to działać również w instalatorach, jeśli instalator Debiana utknie w wykrywaniu ustawień sieciowych. Przejdź do konsoli (alt + 2) i wpisz to polecenie. Wróć do instalatora. Naciśnij Ctrl + C, aby wyjść z wykrywania i ponownie zainicjować wykrywanie sieci.
lsu_guy
1

Zastosowanie następujących zmiennych w ifcfg-eth0 lub ifcfg-eth1:

IPV6INIT=no
IPV6_AUTOCONF=no

Powinien załatwić sprawę. Powtarzać:

/ etc / sysconfig / network

NETWORKING_IPV6=yes
IPV6_AUTOCONF=yes

/ etc / sysconfig / network-scripts / ifcfg-eth0

IPV6INIT=no
IPV6_AUTOCONF=no

/ etc / sysconfig / network-scripts / ifcfg-eth0

IPV6INIT=yes
IPV6_AUTOCONF=yes

Następnie ponownie uruchom usługę sieciową:

% /etc/init.d/network restart

Po uruchomieniu ifconfigpowinieneś zobaczyć inet6 na urządzeniu ethernetowym (eth0 lub eth1), które ma włączony ipv6.

% ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 01:26:BD:85:CA:30  
          inet addr:192.168.1.20  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::226:c7ff:fe85:a720/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2497072 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2253781 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2004576667 (1.8 GiB)  TX bytes:1296051472 (1.2 GiB)
slm
źródło
Tak, to trochę dziwne. Ustawienie „net.ipv6.conf.eth0.disable_ipv6 = 1” jest dobrym rozwiązaniem. Dzięki za odpowiedź.
Yves Messi
1
Hmmmm, nie przykucnąłem w moim systemie (RH 6.5 X86_64 w środowisku zwirtualizowanym). Dobrze jest znać te dla tych systemów, w których działa.
luis.espinal