Como desativar o ipv6 em uma interface específica no linux?

24

Alguém poderia me dizer como desativar a configuração automática do ipv6 em uma interface de rede específica no CentOS?

A situação atual é:

Um PC possui dois adaptadores de rede eth0 e eth1 que estão se conectando à mesma LAN, na qual o roteador IPv6 está anunciando um prefixo IPv6 com o pacote NDRA (Neighbours Discovery Router Advertisements). Como resultado, eth0 e eth1 estão configurando o endereço IPv6 com esse prefixo automaticamente.

Mas eu só quero habilitar o ipv6 no eth1 e desabilitá-lo no eth0. Eu tentei os seguintes métodos, mas eles não funcionam.

1. / etc / sysconfig / network

NETWORKING_IPV6=no
IPV6_AUTOCONF=no

Isso desativará o ipv6 em eth0 e eth1.

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

IPV6INIT=no
IPV6_AUTOCONF=no

Então, não funciona. Eu já reiniciei o serviço de rede. Estou um pouco confuso sobre esse problema. Obrigado antecipadamente.

Yves Messi
fonte
1
O sysconfig.txt definitivamente implica que o que você fez desabilite o IPv6 em uma interface específica. No entanto, parece que essas bandeiras são ignoradas. Existem dois relatórios de erros sobre isso, que também foram ignorados. Veja bugzilla.redhat.com/show_bug.cgi?id=982740 & bugzilla.redhat.com/show_bug.cgi?id=496444
Stefan Lasiewski

Respostas:

41

Você pode desativá-lo no /etc/sysctl.conf com esta linha:

net.ipv6.conf.eth0.disable_ipv6 = 1

Dê uma olhada em / proc / sys / net / ipv6 / conf / eth0. Há muitas opções que você pode definir nesse diretório, como deixar o IPv6 ativado, mas desativar o autoconf etc.

Sander Steffann
fonte
4
FYI para aqueles que procuram para desativar todos, não apenas uma interface, basta substituir "eth0" com "todos"
Peter
1
Na verdade, em vez de modificar /etc/sysctl.conf, crie um arquivo /etc/sysctl.dnomeado, por exemplo, 00_ipv6_off.confcom o conteúdo acima. ifconfigmostrará interfaces desprovidas da funcionalidade IPv6.
David Tonhofer
Em uma linha: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

preterido

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

Para garantir que essa alteração persista nas reinicializações, adicione esta linha ao seu /etc/sysctl.confarquivo:

net.ipv6.conf.eth0.disable_ipv6=1

Observe que o uso do /etc/sysconfig/network-scripts/ifcfg-eth0arquivo não é portátil.

cjac
fonte
3

Você deve ser root para definir o parâmetro de rede abaixo:

echo 1 > /proc/sys/net/ipv6/conf/wlan0/disable_ipv6
mgundes
fonte
Isso funcionará também nos instaladores, se um instalador debian estiver travando na detecção das configurações de rede. Vá para o console (alt + 2) e digite este comando. Volte para o instalador. Pressione Ctrl + C para sair da detecção e reinicialize a detecção da rede.
lsu_guy
1

O uso das seguintes variáveis ​​em ifcfg-eth0 ou ifcfg-eth1:

IPV6INIT=no
IPV6_AUTOCONF=no

Deve fazer o truque. Reiterar:

/ etc / sysconfig / network

NETWORKING_IPV6=yes
IPV6_AUTOCONF=yes

/ etc / sysconfig / scripts de rede / ifcfg-eth0

IPV6INIT=no
IPV6_AUTOCONF=no

/ etc / sysconfig / scripts de rede / ifcfg-eth0

IPV6INIT=yes
IPV6_AUTOCONF=yes

Depois, reinicie o serviço de rede:

% /etc/init.d/network restart

Se você executar, ifconfigdeverá ver o inet6 no dispositivo ethernet (eth0 ou eth1) que possui o ipv6 ativado.

% 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
fonte
Sim, é um pouco estranho. Definir "net.ipv6.conf.eth0.disable_ipv6 = 1" é uma boa solução. Obrigado pela sua resposta.
Y13 Messi
1
Hmmmm, não agachei no meu sistema (RH 6.5 X86_64 em um ambiente virtualizado). É bom conhecer aqueles para os sistemas em que ele funciona.
Luis.espinal 17/09/14