Як відключити IPv6 назавжди?


54

Як ми можемо відключити систему IPv6 широко за допомогою термінальних команд?

Я прочитав редагування /etc/modprobe.d/aliases та заміну:

alias net-pf-10 ipv6

з:

alias net-pf-10 off
alias ipv6 off

Чи безпечно це застосувати і чи назавжди він відключає ipv6 через перезавантаження?


5
Чому ви хочете назавжди відключити IPv6?
Андерсон Грін,

2
Існують абсолютно (ну, я фактично можу знайти їх у MS Windows), немає причин вимикати IPv6. Чому б ти хотів це зробити?
Андерс

17
Немає абсолютно ніяких причин, щоб ввімкнути ipv6 насправді. Все ще є ipv4, і він не дає переваг тому, хто керує невеликою мережею і кому обмежений час. Це ще один вектор для атаки та можливих неправильних налаштувань, і доцільно його відключити. Напевно, не те, що хоче почути будь-який інженер IETF, але це їхня проблема не моя. Я ввімкну це, коли у мене є вагомі причини, до цього часу я просто ще один вектор атаки, яким я повинен керувати.
Джонатан С. Фішер

8
Відключення IPv6 не захищає вас від атак IPv6. Набагато краще, щоб це було ввімкнено, мати справу з ним і вчитися на цьому, це єдиний спосіб зробити своє оточення трохи безпечнішим. Всім краще навчитися навчитися "Як відключити IPv4 назавжди". IPv6 набагато простіше, ніж IPv4, для початку, вже немає NAT, так що одна річ менше керувати ... Інтернет росте дуже швидко, через кілька років мережа IPv6 стане більшою, ніж IPv4, так що з IPv4 ви не будете реально користуватися Інтернетом. Іди, чоловіче! Оновіть свій IP !! Зміни - це гарна річ.
ThiagoCMC

7
@ JonathanS.Fisher та інші - ці коментарі не корисні. Тільки тому, що ви, можливо, не знаєте про причину відключення IPv6, не означає, що його немає. Один з головних випадків стосується служб VPN, які не підтримують IPv6. Якщо ви не відключите його, ви пройдете свою IPv6 адресу.
Сконе

Відповіді:


74

Я успішно відключив IPv6, розмістивши наступні рядки /etc/sysctl.conf:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

також запустіть цю команду для завантаження змін

sudo sysctl -p

Uubuntu на VMware не може пінг, і я закриваю ipv6 на Ubuntu, зараз це нормально.
Honghe.Wu

12
Після додавання рядків до sysctl.conf запустіть sudo sysctl -pабо перезавантажте, щоб зміни набрали чинності.
Раджат Гупта

4
Мені потрібно це робити лише в бездротовому режимі, як проблема помилки, щоб я могла знову підключитися. Ось як це зробити лише для одного адаптера:net.ipv6.conf.wlan0.disable_ipv6 = 1
cmc

1
Це не працює на Ubuntu 17.10. Дивіться коментар NullNoname нижче для виправлення грубу.
Лука

1
Не працює і на Ubuntu 16.04. Метод Груба працює.
Penghe Geng

53

Якщо ваш ПК не завантажує /etc/sysctl.conf під час завантаження (це стосується мене), потрібно відключити IPv6 від grub. Ядро Linux має опцію завантаження під назвою "ipv6.disable = 1", яка відключає IPv6 від запуску.

Щоб відредагувати параметри завантаження, відредагуйте "/ etc / default / grub" з будь-яким текстовим редактором як користувач root:

sudo nano /etc/default/grub

Знайдіть рядок, що містить "GRUB_CMDLINE_LINUX_DEFAULT":

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Додайте "ipv6.disable = 1" до параметра завантаження, а потім збережіть файл grub:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

Нарешті, оновіть grub:

sudo update-grub

6
+1 це працює і вимикає IPv6 повністю, тому немає слідів, /proc/sys/net/ipv6/які можуть спричинити проблеми, X11 forwarding request failedтому що sshdнамагається приєднатись до неконфігурованого інтерфейсу IPv6. Зауважте, що подібним чином ви можете позбутися IPv4 таким чином і в чистих віртуальних машинах IPv6. Дякую.
Тіно

7

Відповідь Карвальо, включаючи коментар про те, що потрібно бігати sudo sysctl -P, мені найбільше допомогла.

Однак у моєму випадку принаймні:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.<mydevice>.disable_ipv6 = 1

і, здається, другий рядок був необхідним.

Можливо, це пов'язане з тим, що я використовую TP-Link Archer T2U, для якого мені довелося звичайно скласти драйвер з джерела.
Моє припущення полягає в тому, що в результаті <mydevice>"" не вважається одним із " all".
Отже, у двох словах, якщо ви звичайно додали драйвер (користувальницький) мереж, це net.ipv6.conf.all.disable_ipv6 = 1може бути недостатньо для відключення мережі IPv6.

Слід визнати, що я не пробував цю лінію
net.ipv6.conf.default.disable_ipv6 = 1


1
Заява про те, що іноді потрібно вимкнути різні пристрої.
Сконе

Тут, defaultмабуть, відсутність лінії. Якщо ваш драйвер ще не був завантажений у точці процесу завантаження при виконанні sysctl, він не включався all- але встановлення за замовчуванням означало б, що воно отримало б пізніше, коли воно було завантажено.
Чарльз Даффі

1
У мене був defaultзапис, і мені довелося налаштувати конкретний пристрій, щоб успішно його відключити.
Альфонсо Нішікава

7

Ось як перевірити, чи ipv6 увімкнено на вашому комп’ютері

test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"

Якщо бачите

Running kernel is IPv6 ready

це ввімкнено.

Якщо ви не бачите жодного результату, це не так.

Щоб відключити ipv6, якщо інші відповіді на цій сторінці не працюють для вас, чорний список ipv6 разом. Для цього використовуйте таку команду:

echo 'blacklist ipv6' | sudo tee -a '/etc/modprobe.d/blacklist.local' >/dev/null 

Також це може допомогти також:

echo 'install ipv6 /bin/true' | sudo tee -a '/etc/modprobe.d/blacklist.local' >/dev/null

Перезавантажте, щоб зміни вступили в силу. Щоб перевірити, чи він включений після запуску, запустіть цю команду ще раз:

test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"

Виходу не повинно бути.

Клацніть тут, щоб отримати інформацію про те, як відключити IPV6 під час завантаження.


Ця відповідь передбачає, що ipv6функцією ядра є модуль ядра (використовується blacklist.localдля запобігання його завантаження). Існує випадок, що ipv6 компілюється в ядро ​​(а не модуль), і в цьому випадку потрібно завантажувати ядро ​​з ipv6.disable=1завантажувальним параметром (для цього слід: (1) sudo gedit /etc/default/grub(2) шукати рядок GRUB_CMDLINE_LINUX_DEFAULT=<args>і (3) додати ipv6.disable=1до параметрів завантаження)
humanityANDpeace

@humanityANDpeace Можливо, вас зацікавить ця більш вичерпна відповідь: unix.stackexchange.com/a/190189
mchid

6

Якщо ви використовуєте сучасну версію Ubuntu (я вже 16.04 LTS), ви можете використовувати це акуратне рішення:

Створити, /etc/sysctl.d/60-ipv6-disable.confщо містить наступний текст:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Біжи service procps start


2
це найчистіший спосіб зробити це - не розумію, чому це було прийнято. він також працює на fedora / centos / redhat. вона має перевагу в тому, що він не змінює файли за замовчуванням у системі (як-от безпосередньо sysctl.conf, як це пропонується у найбільш популярній відповіді)
Костін Гуша

@Costin Я не подав заявки, але це не завжди спрацює. Іноді доводиться вводити конкретне ім’я пристрою (наприклад, у випадку встановлення спеціальних драйверів). Дивіться Альфонсо Нішікава, коментуючи мою відповідь.
polynomial_donut

Я вдячний, що дотримувався такого підходу, оскільки в кінцевому підсумку втратив зв’язок на віддаленому сервері (йому потрібен IPv6), і було дуже просто направити мого помічника на сайт, щоб видалити один файл і перезавантажити.
Роджер Дуек

мені довелося бігти service procps restartзамість Ubuntu 18.04
iPherian
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.