LinuxシステムがIPv 6を無効にして接続タイムアウトの問題を解決する方法
IPv 6とIPv 4は同じネットワークプロトコルですが、LinuxシステムではIPv 6とIPv 4が同時に存在する場合に接続タイムアウトが発生する場合があります。この場合、IPv 6を無効にするだけでこの問題を解決できます。以下では、LinuxがIPv 6を無効にする方法について説明します。
IPv 6は、既存のIPv 4アドレス空間が枯渇する問題を解決するために使用されるIPv 4、インターネット上の従来の32ビットアドレス空間の代替製品と考えられています。しかしながら、既に多くのホストやデバイスがIPv 4でインターネットに接続されているため、一夜にしてすべてIPv 6に切り替えることはほとんど不可能である。IPv 4からIPv 6への変換メカニズム(たとえば、デュアルプロトコルスタック、ネットワークトンネル、エージェント)の多くは、IPv 6の採用を促進するために提案されており、IPv 6のサポートを増やすために提唱されているように、多くのアプリケーションも書き換えられています。将来的にはIPv 4とIPv 6ポテンシャルが共存することが確実です。
理想的には、IPv 6への移行プロセスはエンドユーザーに見られるべきではありませんが、IPv 4/IPv 6ハイブリッド環境では、IPv 4とIPv 6の間の何気ない衝突に由来するさまざまな問題に遭遇することがあります。例えば、apt-getやsshがIPv 6接続に失敗したり、DNSサーバがIPv 6のAAAAレコードを誤って空にしたり、IPv 6をサポートしているデバイスがインターネットサービスプロバイダが残したIPv 4ネットワークに互換性がないなど、アプリケーションのタイムアウトの問題に遭遇します。
もちろん、LinuxマシンでIPv 6を盲目的に無効にする必要はありません。IPv 6が約束した様々なメリットに鑑みて、社会の一員として私たちは最終的にそれを十分に抱擁しなければならないが、エンドユーザーにトラブルシューティングプロセスの一部として、IPv 6が確かに元凶であれば、それを閉じてみることができます。
ここでは、Linuxの一部(たとえば、特定のネットワークインタフェースの場合)またはIPv 6をすべて無効にするためのテクニックがあります。これらの小さな投稿は、Ubuntu、Debian、Linux Mint、CentOS、Fedora、RHEEL、Arch Linuxなど、すべての主流のLinuxリリースに適用されるべきです。
IPv 6がLinuxで有効になっているかどうかを確認しますすべての現代Linuxリリースでは、IPv 6が自動的に有効になります。IPv 6がLinuxでアクティブになっているかどうかを確認するには、ifconfigまたはipコマンドを使用します。これらのコマンドを入力した後に「inet 6」の出力が表示されると、LinuxシステムがIPv 6を有効にしていることを意味します。
$ ifconfig
$ ip addr
LinuxシステムでIPv 6を一時的にオフにしたい場合は、/procファイルシステムを使用します。一時的には、IPv 6を無効にした変更は、システムが再起動した後も保存されません。IPv 6はLinuxマシンが再起動した後に再び有効になります。
特定のネットワークインタフェースをIPv 6から無効にするには、次のコマンドを使用します。
$ sudo sh -c ‘echo 1 》 /proc/sys/net/ipv6/conf/《interface-name》/disable_ipv6’
たとえば、eth 0インタフェースをIPv 6から無効にします。
$ sudo sh -c ‘echo 1 》 /proc/sys/net/ipv6/conf/eth0/disable_ipv6’
eth 0インタフェースのIPv 6を再有効にするには、次の手順に従います。
$ sudo sh -c ‘echo 0 》 /proc/sys/net/ipv6/conf/eth0/disable_ipv6’
システム全体のすべてのインタフェースにループバックインタフェースを含めてIPv 6を無効にするには、次のコマンドを使用します。
$ sudo sh -c ‘echo 1 》 /proc/sys/net/ipv6/conf/all/disable_ipv6’
IPv 6を永続的に無効にする以上の方法では、IPv 6を永続的に無効にすることはできません。システムIPv 6を再起動すると有効になります。永久に閉じたい場合は、いくつかの方法を試してみてください。
方法1第1の方法は/etc/sysctlである.confファイルは/procを永続的に変更します。
すなわち、テキストエディタで/etc/sysctlを開く.confは、次の内容を追加します。
#システム全体のすべてのインタフェースのIPv 6を無効にする
net.ipv6.conf.all.disable_ipv6 = 1
#指定したインタフェースのIPv 6を無効にする(eth 0,loなど)
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
/etc/sysctl.confはこれらの変更を有効にし、次のコマンドを実行します。
$ sudo sysctl -p /etc/sysctl.conf
または直接再起動します。
方法2IPv 6を永久的に無効にするもう1つの方法は、起動時に必要なカーネルパラメータを渡すことです。
テキストエディタで/etc/default/grubを開き、GRUCMDLINELINELUX変数に「ipv 6.disable=1」を追加します。
$ sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX=“xxxxx ipv6.disable=1”
上記の「xxxxx」は、既存のカーネルパラメータを表し、その後に「ipv 6.disable=1」を追加します。
最後に、以下の方法でGRUB/GRUB 2の変更を保存することを忘れないでください。
Debian、UbuntuまたはLinux Mintシステム:
$ sudo update-grub
Fedora、CentOS/RHELシステム:
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Linuxシステムを再起動すると、IPv 6は完全に無効になります。
IPv 6を無効にした後のその他のオプションの手順ここでは、カーネルでIPv 6を無効にすると、他のプログラムがIPv 6を使用しようとする可能性があるため、IPv 6を無効にする場合に考慮する必要があるオプションの手順があります。ほとんどの場合、アプリケーションのこのような動作はあまり影響しませんが、効率やセキュリティ上の理由でIPv 6を無効にすることができます。
/etc/hostsあなたの設定によって、/etc/hostsにはIPv 6のhostsとアドレスが1つ以上含まれます。テキストエディタで/etc/hostsを開き、IPv 6 hostsを含むスクリプト行を注記します。
$ sudo vi /etc/hosts
# comment these IPv6 hosts# ::1 ip6-localhost ip6-loopback# fe00::0 ip6-localnet# ff00::0 ip6-mcastprefix# ff02::1 ip6-allnodes# ff02::2 ip6-allrouters
Network Managerネットワーク設定をNetworkManagerで管理している場合は、NetworkManagerでIPv 6を無効にできます。NetworkManagerでwired connectionを開き、「IPv 6 Settings」オプションをクリックし、「Method」欄で「Ignore」を選択し、保存して終了します。
デフォルトでは、OpenSSHサービス(sshd)はIPv 4とIPv 6のアドレスをバンドルしようとします。
sshdにIPv 4アドレスのみをバンドルするように強制するには、テキストエディタで/etc/ssh/sshd_を開きます。configは、次の行を追加します。inetはIPv 4にのみ適用され、inet 6はIPv 6に適用されます。
$ sudo vi /etc/ssh/sshd_config
AddressFamily inet
その後、sshdサービスを再起動します。
LinuxがIPv 6を無効にする方法について説明しました。IPv 6を一時的に無効にするか、IPv 6を永久的に無効にするかを選択できます。一時的に無効にすると、システムが再起動した後もIPv 6が有効になりますが、IPv 6を永久的に無効にするとこの問題は発生しません。