LinuxでIPv6の自動構成を無効にする方法は?


22

LinuxでIPv6の自動構成を永続的に無効にするにはどうすればよいですか?インターフェースからアドレスを手動で削除しようとすると:

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

数秒後に再び表示されます。IPv6をすべて無効にすることなく、永久に削除したいです。

回答:


21

自動構成は、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に、システムはLinkローカルアドレス(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インターフェースはどこですか


3
また、ホスト自体がルーターである場合、つまりnet.ipv6.conf.all.forwarding=1設定されている場合、自動アドレス構成とルーター検出は無効になります。
ガート

4

上記のnet.ipv6.conf.all.accept_ra = 0は、プレフィックスのオンリンクおよびオフリンク(RFC5942による)の表示、およびその他の多くの自動構成にRAが必要であるため、実行しないでください。 MTU、近隣探索タイムアウトなどのパラメータ

自動構成を無効にする場合は、上記のようにautoconf sysctlをオフに設定するか、RAのPrefix Information Option(PIO)でA(自動構成ビット)をオフにします。


3
sudo sysctl -w net.ipv6.conf.all.autoconf=0

これはDebian Wheezyではうまくいきませんでした。/etc/sysctl.confを調べた後、使用する必要がありました

sudo sysctl -w net.ipv6.conf.default.autoconf=0

3

この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とデバイスを交換する必要があります。


これは私の一日が数ヶ月間これに
頭を悩ませるようになったばかり

2
私は通常、Googleを見つけるまで探します。
イェルーンバーミューレン- MageHost

1
これは私が試したときに機能しましたが、Mark Sが述べたように、accept-raをオフにする問題は非常に危険です-動作するようですが、後でフラグメンテーションポイントまたはフェイルオーバールーターにヒットするため、パケットが欠落していることがわかります使用されている。また、pingを中断します。私がこれをやろうとした理由は、送信メールのSPFレコードを確実に一致させるためでしたが、IPv6ではアドレスの範囲は事実上単一のアドレスではなくマシンに属しているため、代わりにレコードでネットマスクを使用する必要があることに気付きました。
フィルマッケラチャー

2

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

私はあなたのとてもきれいな解決策が本当に好きです。空のスカラーを追加するリンクローカルアドレスを使用しないため、完璧なソリューションです。この後、ネットプランの適用により、両方のイーサネットインターフェースで既に割り当てられたIPv6アドレスが維持されるため、サーバーを再起動する必要がありました。しかし、再起動後は、あなたが言ったようにすべてが機能します。ループバックインターフェイスでIPv6を無効にすることに煩わされる理由はないと思うので、sysctlの部分をスキップしました。ありがとう!
ゾルタン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.