LinuxでIPv6の自動構成を永続的に無効にするにはどうすればよいですか?インターフェースからアドレスを手動で削除しようとすると:
ip -6 addr del 2001:0db8:85a3:0000:0000:8a2e:0370:7334/64 dev eth1
それは数秒後に再表示されます。IPv6をすべて無効にすることなく、永続的に削除したいです。
自動設定は、eth1に対して一時的に無効にできます。
Sudo sysctl -w net.ipv6.conf.eth1.autoconf=0
Sudo sysctl -w net.ipv6.conf.eth1.accept_ra=0
またはすべてのインターフェースで:
Sudo sysctl -w net.ipv6.conf.all.autoconf=0
Sudo sysctl -w net.ipv6.conf.all.accept_ra=0
再度有効にするには、呼び出しで0ではなく1を使用します。
永続的に無効にするには、/etc/sysctl.conf
を入力します。 Debian Etch(おそらく新しいバージョンでも)では、accept_ra
を設定しないと、システムはリンクローカルアドレス(fe80..
)を使用して自動構成します
Gartが後述するように、ホスト自体がルーターであり、accept_ra
が2
ではない場合、つまり自動アドレス構成とルーター検出は無効になります。
net.ipv6.conf.<iface|all|default>.forwarding=1
そして
net.ipv6.conf.<iface|all|default>.accept_ra=0
またはnet.ipv6.conf.<iface|all|default>.accept_ra=1
。
ここで、iface
はインターフェースです
sysctl
ソリューションは、Ubuntu 18.04 Bionicでは機能しませんでした。私たちはそれを解決しました:
/etc/netplan/01-netcfg.yaml
の編集、構成:
network:
...
ethernets:
eth0:
...
dhcp6: no
accept-ra: no
eth0
の代わりにインターフェース名を使用する必要がある場合があります。ファイルを保存したら、次を実行します。
netplan apply
またはreboot
自動構成からすでにIPv6 IPを受け取っていて、再起動せずにそれを削除したい場合は、次のコマンドを実行できます。
ip -6 addr del 1111:2222:1:0:aaaa:bbbb:cccc:dddd/64 dev eth0
もちろん、このコマンドでIPとデバイスを置き換える必要があります。
上記のnet.ipv6.conf.all.accept_ra = 0は実行しないでください。RAは、プレフィックスのオンリンクとオフリンクの表示(RFC5942に基づく)、および他の多くの自動構成に必要なためです。 MTU、近隣探索タイムアウトなどのパラメータ.
自動構成を無効にする場合は、上記のようにautoconf sysctlをオフに設定するか、RAのプレフィックス情報オプション(PIO)のA(自動構成ビット)をオフに切り替えます。
Sudo sysctl -w net.ipv6.conf.all.autoconf=0
これは、Debian Wheezyでは動作しませんでした。 /etc/sysctl.confを調べた後、使用する必要がありました
Sudo sysctl -w net.ipv6.conf.default.autoconf=0
Ubuntu 18とipv6の問題は、systemd-networkdがカーネルパラメーターを制御することです。そのため、sysctlでipv6を無効にすることもできますが、設定で特に明記されていない場合、networkdはそれらのスイッチを入れても問題ありません。
Ipv6を無効にする私の解決策は、ネットプランのリンクローカルを空のスカラーに構成することです(リンクローカルipv4 IPがない場合)。
network:
version: 2
renderer: networkd
ethernets:
eth0:
..
link-local: [ ]
構成は、/ run/systemd/network/10-netplan-eth0.networkに投稿され、networkdがeth0にipv6を設定しないように説得するnetworkdの構成をコンパイルします
ループバックでもipv6を無効にしたい場合は、カーネルパラメーターnet.ipv6.conf.all.disable_ipv6を1に設定することで簡単に実現できます。networkdはループバックを制御していないようです。
sysctl -w net.ipv6.conf.all.disable_ipv6=1