it-swarm.asia

Bagaimana cara menonaktifkan konfigurasi otomatis pada IPv6 di Linux?

Bagaimana saya bisa menonaktifkan konfigurasi otomatis IPv6 di Linux secara permanen? Ketika saya mencoba menghapus alamat dari antarmuka secara manual dengan:

ip -6 addr del 2001:0db8:85a3:0000:0000:8a2e:0370:7334/64 dev eth1

Ini akan muncul kembali beberapa detik kemudian, saya ingin itu hilang secara permanen, tetapi tanpa menonaktifkan IPv6 bersama-sama.

22
Grumbel

Konfigurasi otomatis dapat dinonaktifkan sementara untuk eth1 dengan:

Sudo sysctl -w net.ipv6.conf.eth1.autoconf=0
Sudo sysctl -w net.ipv6.conf.eth1.accept_ra=0

atau untuk semua antarmuka dengan:

Sudo sysctl -w net.ipv6.conf.all.autoconf=0
Sudo sysctl -w net.ipv6.conf.all.accept_ra=0

Pengaktifan kembali berfungsi dengan menggunakan 1 alih-alih 0 dalam panggilan.

Menonaktifkannya secara permanen dapat dilakukan dengan entri ke /etc/sysctl.conf. Pada Debian Etch (mungkin pada yang lebih baru juga), tanpa mengatur accept_ra, sistem akan mengonfigurasi otomatis menggunakan tautan Alamat lokal (fe80..)

Seperti yang disebutkan Gart di bawah ini, konfigurasi alamat otomatis dan penemuan router akan dinonaktifkan jika Host itu sendiri adalah router dan accept_ra bukan 2, i.e

net.ipv6.conf.<iface|all|default>.forwarding=1

dan

net.ipv6.conf.<iface|all|default>.accept_ra=0 atau net.ipv6.conf.<iface|all|default>.accept_ra=1.

di mana iface adalah antarmuka Anda

21
Grumbel

net.ipv6.conf.all.accept_ra = 0 di atas tidak boleh dilakukan, karena RA diperlukan untuk indikasi on-link dan off-link untuk awalan (sesuai RFC5942), serta konfigurasi otomatis sejumlah lainnya. parameter, seperti MTU, batas waktu Neighbor Discovery dll.

Jika Anda ingin menonaktifkan konfigurasi otomatis, matikan sysctl autoconf off seperti di atas, atau matikan A (bit konfigurasi otomatis) di Opsi Informasi Awalan (PIO) di RA.

4
Mark S

Solusi sysctl tidak bekerja untuk kami di Ubuntu 18.04 Bionic. Kami menyelesaikannya dengan:

Mengedit /etc/netplan/01-netcfg.yaml, konfigurasikan:

network:
  ...
  ethernets:
    eth0:
      ...
      dhcp6: no
      accept-ra: no

Anda mungkin perlu menggunakan nama antarmuka Anda alih-alih eth0. Setelah Anda menyimpan file, jalankan:

netplan apply atau reboot

Jika Anda telah menerima IPv6 IP dari konfigurasi otomatis dan Anda ingin menghapusnya tanpa me-reboot, Anda dapat menjalankan:

ip -6 addr del 1111:2222:1:0:aaaa:bbbb:cccc:dddd/64 dev eth0 

Tentu saja Anda perlu mengganti IP dan perangkat dalam perintah ini.

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

Ini tidak berhasil untuk saya di Debian Wheezy. Setelah memeriksa /etc/sysctl.conf saya perlu menggunakan

Sudo sysctl -w net.ipv6.conf.default.autoconf=0
3
Nick B.

Masalah dengan Ubuntu 18 dan ipv6 adalah bahwa systemd-networkd mengontrol parameter kernel, jadi meskipun seseorang mungkin menonaktifkan ipv6 dengan sysctl, networkd akan lebih dari senang untuk mengaktifkannya untuk Anda, jika konfigurasi tidak menyatakan sebaliknya.

Solusi saya untuk menonaktifkan ipv6 adalah mengkonfigurasi tautan-lokal di netplan ke skalar kosong (asalkan Anda tidak memiliki IP tautan-lokal ipv4)

network:
     version: 2
     renderer: networkd
     ethernets:
     eth0:
        ..
        link-local: [ ]

Konfigurasi akan mengkompilasi konfigurasi untuk networkd yang akan diposting di /run/systemd/network/10-netplan-eth0.network dan itu akan meyakinkan networkd untuk tidak memasang ipv6 untuk eth0

Jika Anda mungkin ingin menonaktifkan ipv6 juga di loopback, itu mudah dicapai dengan mengatur parameter kernel net.ipv6.conf.all.disable_ipv6 ke 1. networkd tampaknya tidak mengontrol loopback.

sysctl -w net.ipv6.conf.all.disable_ipv6=1
2
Daniel