Отключение IPv6 на одном интерфейсе

7

Я немного странно из-за того, что Ubuntu не будет обрабатывать ipv4 DHCP, если вы явно не расскажете об этом, но с радостью возьмете ipv6 RA, если вы не скажете ему об этом. Есть ли способ изменить поведение по умолчанию, чтобы «ничего не делать, если я явно не включил его»?

(Обратите внимание на ответчиков: Я не хочу отключать глобальный ipv6 или полностью отключать autoconf. Я ищу отключить autoconf по умолчанию (как в, я не хочу, чтобы ipv6 если я не скажу об этом в / etc / network / interfaces, так же, как я не просто получаю адрес v4, если я явно не включил dhcp). Что происходит, так это то, что для любого интерфейса, который есть, например, ipv4 config - адрес v6 имеет тенденцию просто появляться на интерфейсе, несмотря на то, что я не включил его явно. Решения на сегодняшний день в порядке, насколько это возможно, но если я отключу v6 или autoconf во всем мире, Я не могу повторно включить v6 для каждого интерфейса с помощью простой команды в / etc / network / interfaces. Я уверен, что я прошу за луну на палочке, заметьте.)

    
задан ijw 04.07.2013 в 23:04
источник

3 ответа

1

Подобно, но отличному от одного из других ответов, я пробовал это с большой радостью:

Добавьте файл sysctl в /etc/sysctl.d, чтобы отключить ipv6 - не универсально, хотя, как и состояние по умолчанию для интерфейса:

net.ipv6.conf.default.disable_ipv6=1

Затем в файле интерфейсов и только для интерфейсов, на которые вы хотите включить ipv6, добавьте:

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

... Таким образом, интерфейсы не получают адреса IPv6, когда они появляются (как в настоящее время), но могут быть убеждены иметь их в определенных случаях. Вы, несомненно, могли бы отключить RA, прежде чем включить ipv6, если вы тоже этого хотели.

NB: Я подозреваю, что вы столкнетесь с проблемами с интерфейсами VLAN с именем (например, eth0.100), и вам придется указать это в команде «вверх» как «eth0 / 100», а не $ IFACE, которая будет иметь неправильный формат - я не тестировал, но похоже, что sysctl рассматривает мир.

    
ответ дан ijw 01.06.2014 в 15:40
источник
6

Autoconf в части базовой функциональности IPv6. Объявления RA не являются DHCP, а сервер RA не назначает адреса. RA намного ближе к автоматической настройке IPv4, выполненной в диапазоне 169.254.0.0/16 IP. Если конфиденциальность включена, ваш IPv6-адрес будет меняться со временем. Ваш старый адрес будет удален и в конечном итоге удален.

Вы можете легко отключить ipv6 autoconf с помощью команды:

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

Замените all с именем интерфейса, чтобы отключить один интерфейс. Замените autoconf на disable_ipv6 , чтобы отключить IPv6. Создайте файл в /etc/sysctl.d с назначением переменных, которое вы хотите использовать при запуске.

Чтобы найти все связанные с ipv6 настройки, выполните команду:

sudo sysctl -a | grep ipv6 | less
    
ответ дан BillThor 04.07.2013 в 23:32
2

Чтобы проверить, включен ли IPv6 или отключен

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

0 означает, что он включен и 1 отключен.

Чтобы отключить IPv6

$ su -
# nano /etc/sysctl.conf

и добавьте эти строки в файл 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

Сохраните файл sysctl.conf с новой конфигурацией, затем перезагрузите систему

# reboot

Проверьте свою систему еще раз

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

Теперь вы должны увидеть, что «1» означает, что IPv6 отключен в вашей системе.

От Ссылка

    
ответ дан user223973 23.12.2013 в 04:24