Как отключить ipv6 на определенном интерфейсе в Linux?

24

Может кто-нибудь сказать мне, как отключить автоконфигурацию ipv6 на конкретном сетевом интерфейсе в CentOS?

Текущая ситуация:

ПК имеет два сетевых адаптера eth0 и eth1, которые подключаются к одной и той же локальной сети, в которой маршрутизатор IPv6 объявляет префикс IPv6 с пакетом NDRA (реклама маршрутизатора обнаружения соседей). В результате и eth0, и eth1 автоматически конфигурируют адрес IPv6 с этим префиксом.

Но я просто хочу включить ipv6 на eth1 и отключить его на eth0. Я пробовал следующие методы, но они не работают.

1. / etc / sysconfig / network

NETWORKING_IPV6=no
IPV6_AUTOCONF=no

Это отключит ipv6 на eth0 и eth1.

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

IPV6INIT=no
IPV6_AUTOCONF=no

Тогда это не работает. Я уже перезапустил сетевой сервис. Я немного запутался в этом вопросе. Заранее спасибо.

Ив Месси
источник
1
sysconfig.txt определенно подразумевает, что то, что вы сделали, должно отключить IPv6 на определенном интерфейсе. Однако, похоже, эти флаги игнорируются. Есть два сообщения об ошибках, которые также были проигнорированы. См. Bugzilla.redhat.com/show_bug.cgi?id=982740 & bugzilla.redhat.com/show_bug.cgi?id=496444
Стефан Ласевский,

Ответы:

41

Вы можете отключить его из /etc/sysctl.conf с помощью этой строки:

net.ipv6.conf.eth0.disable_ipv6 = 1

Взгляните на / proc / sys / net / ipv6 / conf / eth0. В этом каталоге вы можете установить много опций, например, оставить IPv6 включенным, но отключить autoconf и т. Д.

Сандер Штеффанн
источник
4
К вашему сведению для тех, кто хочет отключить все, а не только один интерфейс, просто замените «eth0» на «все»
Питер
1
На самом деле, вместо изменения /etc/sysctl.conf, создайте файл с /etc/sysctl.dименем, например, 00_ipv6_off.confс вышеуказанным содержимым. ifconfigзатем покажет интерфейсы, лишенные функциональности IPv6.
Дэвид Тонхофер
В одной строке:echo "net.ipv6.conf.eth0.disable_ipv6 = 1" > /etc/sysctl.d/00_ipv6_off.conf
Дэвид Тонхофер
11
$ sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=1

принижает

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

Чтобы это изменение сохранялось при перезагрузке, вам нужно добавить эту строку в ваш /etc/sysctl.confфайл:

net.ipv6.conf.eth0.disable_ipv6=1

Обратите внимание, что использование /etc/sysconfig/network-scripts/ifcfg-eth0файла непереносимо.

cjac
источник
3

Вы должны быть пользователем root, чтобы установить параметры сети ниже:

echo 1 > /proc/sys/net/ipv6/conf/wlan0/disable_ipv6
mgundes
источник
Это будет работать и в установщиках, если установщик Debian застревает при обнаружении сетевых настроек. Перейдите в консоль (alt + 2) и введите эту команду. Вернитесь к установщику. Нажмите Ctrl + C, чтобы выйти из обнаружения и повторно инициализировать обнаружение сети.
lsu_guy
1

Использование следующих переменных в ifcfg-eth0 или ifcfg-eth1:

IPV6INIT=no
IPV6_AUTOCONF=no

Должен сделать свое дело. Повторить:

/ И т.д. / sysconfig / сети

NETWORKING_IPV6=yes
IPV6_AUTOCONF=yes

/ И т.д. / sysconfig / сети-скрипты / ifcfg-eth0

IPV6INIT=no
IPV6_AUTOCONF=no

/ И т.д. / sysconfig / сети-скрипты / ifcfg-eth0

IPV6INIT=yes
IPV6_AUTOCONF=yes

Затем убедитесь, что вы перезапустите сетевой сервис:

% /etc/init.d/network restart

Если вы запускаете, ifconfigвы должны увидеть inet6 на устройстве ethernet (eth0 или eth1) с включенным 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)
ОДС
источник
Да, это немного странно. Установка "net.ipv6.conf.eth0.disable_ipv6 = 1" является хорошим решением. Спасибо за Ваш ответ.
Ив Месси
1
Хммммм, я не садился на корточки в моей системе (RH 6.5 X86_64 в виртуализированной среде.) Хотя хорошо бы знать те, для тех систем, где это работает.
luis.espinal