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


9

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

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


1
Вот ссылка на то, как отключить ipv6. Я сам не пробовал. Дайте мне знать, если это работает: как отключить IPV6 в Ubuntu
BiggJJ

3
Возможно, это так, но я не хочу отключать ipv6, просто запрещаю автоконфигурацию на интерфейсах, если я не хочу, чтобы они были автоматически настроены.
ijw

Ответы:


9

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

4

Чтобы проверить, включен ли 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 был отключен в вашей системе.

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


Работал на меня. По крайней мере, в Centos вы можете запустить «sudo sysctl -p» для перезагрузки без перезагрузки
Code Wiget

2

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

Добавьте файл 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), и вам придется прописать это в команде 'up' как 'eth0 / 100', а не как $ IFACE, который будет иметь неправильный формат - Я не проверял, но, похоже, sysctl смотрит на мир.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.