Bagaimana cara menonaktifkan IPv6 secara permanen?

54

Bagaimana kita bisa menonaktifkan lebar sistem IPv6 melalui perintah terminal?

Saya telah membaca pengeditan /etc/modprobe.d/aliases dan mengganti:

alias net-pf-10 ipv6

dengan:

alias net-pf-10 off
alias ipv6 off

Apakah ini aman untuk diterapkan dan apakah secara permanen menonaktifkan ipv6 di seluruh reboot?

Kertas timah
sumber
5
Mengapa Anda ingin menonaktifkan IPv6 secara permanen?
Anderson Green
2
Ada absolutly (well, saya benar-benar dapat menemukan satu, di MS Windows) tidak ada alasan untuk mematikan IPv6. Mengapa Anda ingin melakukan itu?
Anders
17
Sama sekali tidak ada alasan, untuk mengaktifkan ipv6 sebenarnya. Semuanya masih ipv4 dan tidak menawarkan keuntungan bagi seseorang yang mengelola jaringan kecil dan yang memiliki waktu terbatas. Ini satu lagi vektor untuk serangan dan kemungkinan kesalahan konfigurasi dan lebih bijaksana untuk menonaktifkannya. Mungkin bukan apa yang ingin didengar insinyur IETF, tapi itu masalah mereka bukan milikku. Saya akan mengaktifkannya ketika saya memiliki alasan yang bagus, sampai saat itu, hanya vektor serangan lain yang harus saya kelola.
Jonathan S. Fisher
8
Menonaktifkan IPv6 tidak membuat Anda kebal terhadap serangan IPv6. Jauh lebih baik mengaktifkannya, menghadapinya, dan belajar darinya, itulah satu-satunya cara membuat lingkungan Anda sedikit lebih aman. Lebih baik bagi semua orang untuk belajar "Cara menonaktifkan IPv4 secara permanen", sebagai gantinya. IPv6 jauh lebih mudah daripada IPv4, untuk mulai dengan, tidak ada NAT lagi, jadi, satu hal yang kurang untuk dikelola ... Internet tumbuh sangat cepat, dalam beberapa tahun, jaringan IPv6 akan lebih besar dari IPv4, jadi, dengan IPv4, Anda akan keluar dari Internet yang sebenarnya. Silakan! Tingkatkan IP Anda !! Perubahan adalah hal yang baik.
ThiagoCMC
7
@ JonathanS.Fisher dan lainnya - Komentar ini tidak membantu. Hanya karena Anda mungkin tidak mengetahui alasan untuk menonaktifkan IPv6, tidak berarti tidak ada. Satu kasus utama adalah untuk layanan VPN yang tidak mendukung IPv6. Jika Anda tidak menonaktifkannya, Anda akan membocorkan alamat IPv6 Anda.
Scone

Jawaban:

75

Saya berhasil menonaktifkan IPv6 setelah memasukkan baris berikut /etc/sysctl.conf:

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

juga jalankan perintah ini untuk memuat perubahan

sudo sysctl -p
Eric Carvalho
sumber
Uubuntu di VMware tidak bisa ping, dan saya menutup ipv6 di Ubuntu, tidak apa-apa sekarang.
Honghe.Wu
12
Setelah menambahkan baris-baris ini ke sysctl.conf, jalankan sudo sysctl -patau reboot untuk membiarkan perubahan diterapkan.
Rajat Gupta
4
Saya perlu melakukan ini hanya pada nirkabel sebagai solusi bug sehingga saya dapat terhubung lagi. Berikut cara melakukannya hanya untuk satu adaptor:net.ipv6.conf.wlan0.disable_ipv6 = 1
cmc
1
Ini tidak berfungsi di Ubuntu 17.10. Lihat NullNoname komentar di bawah ini untuk perbaikan grub.
Luke
1
Tidak bekerja di Ubuntu 16.04 juga. Metode Grub berfungsi.
Penghe Geng
54

Jika PC Anda tidak memuat /etc/sysctl.conf saat boot (yang merupakan kasus bagi saya), penonaktifan IPv6 dari grub diperlukan. Kernel Linux memiliki opsi boot bernama "ipv6.disable = 1" yang menonaktifkan IPv6 dari startup.

Untuk mengedit opsi boot, edit "/ etc / default / grub" dengan editor teks apa pun sebagai pengguna root:

sudo nano /etc/default/grub

Temukan baris yang berisi "GRUB_CMDLINE_LINUX_DEFAULT":

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Tambahkan "ipv6.disable = 1" ke opsi boot, kemudian simpan file grub Anda:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

Akhirnya, perbarui grub:

sudo update-grub
NullNoname
sumber
6
+1 ini berfungsi dan sepenuhnya menonaktifkan IPv6, sehingga tidak ada jejak /proc/sys/net/ipv6/kiri yang dapat menghasilkan masalah seperti X11 forwarding request failedkarena sshdmencoba untuk mengikat ke antarmuka IPv6 yang tidak dikonfigurasi. Perhatikan bahwa Anda juga dapat menyingkirkan IPv4 dengan cara ini di VM IPv6 murni. Terima kasih.
Tino
7

Jawaban Carvalho termasuk komentar tentang harus lari sudo sysctl -Ppaling membantu saya.

Namun, setidaknya dalam kasus saya:

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

dan sepertinya baris kedua diperlukan.

Mungkin ini ada hubungannya dengan fakta bahwa saya menggunakan TP-Link Archer T2U, yang mana saya harus membuat driver dari sumber secara khusus.
Asumsi saya adalah bahwa sebagai hasilnya, <mydevice>tidak dihitung sebagai salah satu dari " all".
Jadi, singkatnya, jika Anda secara kustom menambahkan driver jaringan (custom), net.ipv6.conf.all.disable_ipv6 = 1mungkin tidak cukup untuk menonaktifkan jaringan IPv6.

Namun harus saya akui, bahwa saya tidak mencoba garis itu
net.ipv6.conf.default.disable_ipv6 = 1

polynomial_donut
sumber
1
Suara buruk untuk menyebutkan bahwa menonaktifkan perangkat yang berbeda kadang-kadang diperlukan.
Scone
Kurangnya defaultgaris mungkin masalah di sini. Jika driver Anda tidak dimuat belum pada titik dalam proses boot ketika sysctl itu dieksekusi, maka itu tidak termasuk dalam all- tapi pengaturan default akan berarti itu akan mendapatkan pengaturan kemudian, ketika itu dimuat.
Charles Duffy
1
Saya punya defaultentri dan saya harus mengkonfigurasi perangkat tertentu untuk berhasil menonaktifkannya.
Alfonso Nishikawa
7

Berikut cara memeriksa untuk melihat apakah ipv6 diaktifkan di komputer Anda

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

Jika kamu melihat

Running kernel is IPv6 ready

itu diaktifkan.

Jika Anda tidak melihat keluaran, maka tidak.

Untuk menonaktifkan ipv6 jika jawaban lain pada halaman ini tidak berfungsi untuk Anda, masukkan daftar hitam ipv6 secara bersamaan. Untuk melakukan ini, gunakan perintah berikut:

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

Juga, ini mungkin membantu juga:

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

Mulai ulang agar perubahan diterapkan. Untuk memeriksa apakah itu diaktifkan setelah startup jalankan perintah ini lagi:

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

Seharusnya tidak ada output.

Klik di sini untuk info tentang cara menonaktifkan IPV6 saat boot.

mchid
sumber
Jawaban ini mengasumsikan bahwa ipv6fitur kernel adalah modul kernel (digunakan blacklist.localuntuk mencegah pemuatannya). Ada kasus dimana ipv6 dikompilasi ke dalam kernel (bukan modul) dalam hal ini perlu untuk mem-boot kernel dengan ipv6.disable=1boot paremeter (untuk melakukannya orang akan: (1) sudo gedit /etc/default/grub(2) mencari baris GRUB_CMDLINE_LINUX_DEFAULT=<args>dan (3) tambahkan ipv6.disable=1ke parameter boot)
humanityANDpeace
@humanityANDpeace Anda mungkin tertarik dengan jawaban yang lebih komprehensif ini: unix.stackexchange.com/a/190189
mchid
6

Jika Anda menggunakan versi modern (saya menggunakan 16,04 LTS) dari Ubuntu maka Anda dapat menggunakan solusi rapi ini:

Buat /etc/sysctl.d/60-ipv6-disable.confmengandung teks berikut:

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

Lari service procps start

pengguna10550
sumber
2
ini adalah cara terbersih untuk melakukannya - tidak mengerti mengapa diturunkan. ini juga berfungsi pada fedora / centos / redhat. itu memiliki keuntungan bahwa itu tidak mengubah file sistem default (seperti langsung sysctl.conf seperti yang disarankan dalam jawaban paling populer)
Costin Gușă
@ Costin saya tidak mengundurkan diri, tetapi ini tidak akan selalu berhasil. Kadang-kadang Anda harus memasukkan nama perangkat tertentu (misalnya dalam hal instalasi driver khusus). Lihat Alfonso Nishikawas mengomentari jawaban saya.
polynomial_donut
Saya bersyukur saya mengikuti pendekatan ini, karena saya akhirnya kehilangan koneksi saya di server jauh ( perlu IPv6), dan sangat mudah untuk mengarahkan asisten saya di situs untuk menghapus satu file dan reboot.
Roger Dueck
saya harus menjalankan service procps restartsebagai gantinya di ubuntu 18.04
iPherian