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であり、小規模ネットワークを管理していて時間に制限がある人には利点がありません。これは、攻撃と潜在的な設定ミスのもう1つの手段であり、無効にするのが賢明です。おそらく、IETFエンジニアが聞きたいことではないかもしれませんが、それは私ではなく彼らの問題です。正当な理由がある場合は有効にします。それまでは、管理しなければならない攻撃ベクトルが1つだけです。
ジョナサンS.フィッシャー

8
IPv6を無効にしても、IPv6攻撃の影響を受けません。それを有効にし、対処し、そこから学ぶのがはるかに良いです。それがあなたの環境を少し安全にする唯一の方法です。代わりに、「IPv4を永続的に無効にする方法」を学ぶ方が良いでしょう。IPv6はIPv4よりもはるかに簡単です。そもそもNATはありません。したがって、管理することは1つ少なくなります... IPv4を使用すると、実際のインターネットから離れることになります。どうぞ!IPをアップグレード!! 変更は良いことです。
ThiagoCMC 14

7
@ JonathanS.Fisherなど-これらのコメントは役に立ちません。IPv6を無効にする理由に気付いていないからといって、IPv6が存在しないわけではありません。1つの主要なケースは、IPv6をサポートしないVPNサービスです。無効にしないと、IPv6アドレスが漏洩します。
スコーン

回答:


75

次の行を入力して、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

VMwareのUubuntuはpingを実行できません。Ubuntuのipv6を閉じます。今は大丈夫です。
Honghe.Wu

12
これらの行をsysctl.confに追加したら、実行sudo sysctl -pまたは再起動して変更を有効にします。
ラジャトグプタ

4
バグの回避策としてワイヤレスでのみこれを行う必要があるため、再度接続できます。ここでは、1つのアダプタのみのためにそれを行う方法は次のとおりです。net.ipv6.conf.wlan0.disable_ipv6 = 1
CMC

1
これはUbuntu 17.10では機能しません。grubの修正については、以下のNullNonameコメントを参照してください。
ルーク

1
Ubuntu 16.04でも動作しません。GRUBメソッドが機能します。
eng河G

54

お使いのPCがブート時に/etc/sysctl.confをロードしない場合(これは私の場合です)、grubからIPv6を無効にする必要があります。Linuxカーネルには、IPv6の起動を無効にする「ipv6.disable = 1」という名前のブートオプションがあります。

ブートオプションを編集するには、rootユーザーとしてテキストエディターで「/ etc / default / grub」を編集します。

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インタフェースに結合することが。同様に、純粋なIPv6 VMでIPv4をこの方法で取り除くことができることに注意してください。ありがとう。
ティノ

7

走らsudo sysctl -Pなければならないというコメントを含むCarvalhoの答えは、私を最も助けてくれました。

ただし、少なくとも私の場合は:

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

2行目が必要だったようです。

たぶんこれは、私がTP-Link Archer T2Uを使用しているという事実に関係しているのでしょう。TP-LinkArcher T2Uでは、ソースからカスタムでドライバーをビルドする必要がありました。
私の仮定では、結果として、<mydevice>all」の1つとしてカウントされません。
したがって、簡単に言うと、カスタム(カスタム)ネットワークドライバーを追加した場合、net.ipv6.conf.all.disable_ipv6 = 1IPv6ネットワークを無効にするには不十分な場合があります。

しかし、私はラインを試していないことを認めなければなりません
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 Gușă

@Costin私は投票しませんでしたが、これは常に機能しません。特定のデバイス名を入力する必要がある場合があります(カスタムドライバーをインストールする場合など)。私の答えについては、アルフォンソ・ニシカワのコメントをご覧ください。
Polynomial_donut

リモートサーバー(IPv6が必要)での接続が失われたため、このアプローチに従ったことに感謝しています。また、サイト上のアシスタントに1つのファイルを削除して再起動するよう指示するのは非常に簡単でした。
ロジャーデュック

service procps restart代わりにubuntu 18.04
iPherian
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.