はじめに
この実験では、Linux システムで IPv6 が有効化され、設定されているかどうかを確認する方法を学びます。IPv6 の状態と設定を検証するさまざまな方法を探索します。
具体的には、ip addr コマンドを使用して設定された IPv6 アドレスを調べ、/proc/sys/net/ipv6 ディレクトリを調べてカーネルの IPv6 状態を確認し、sysctl コマンドを利用して詳細な IPv6 ネットワークパラメータを表示します。これらの手順により、システムの IPv6 設定について包括的な理解が得られます。
ip addr で IPv6 アドレスを確認する
このステップでは、ip addr コマンドを使用してシステムに設定された IPv6 アドレスを確認する方法を学びます。IPv6 は、IPv4 を置き換えるために設計された最新のインターネットプロトコルです。その他の改善点とともに、はるかに大きなアドレス空間を提供します。
ip コマンドは、Linux でネットワークインターフェイス、ルーティング、トンネルを管理するための強力なツールです。addr サブコマンドは、ネットワークアドレスを表示および操作するために使用されます。
まだ開いていない場合は、ターミナルを開きます。デスクトップの左側にある Xfce Terminal アイコンをクリックすることで、これを行うことができます。
次に、以下のコマンドを入力して Enter キーを押します。
ip addr
このコマンドは、システム上のすべてのネットワークインターフェイスに関する詳細情報を表示します。これには、IPv4 アドレスと IPv6 アドレスの両方が含まれます。
数字とコロン、そしてインターフェイス名で始まるセクション(例:1: lo: または 2: eth0:)を探します。各セクション内で、inet6 で始まる行を探します。これらの行は、そのインターフェイスに割り当てられた IPv6 アドレスを示しています。
たとえば、次のような出力が表示される場合があります(出力はシステム構成によって異なります)。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:2/64 scope link
valid_lft forever preferred_lft forever
この例では:
loはループバックインターフェイスで、通常は同じマシン内での通信に使用されます。これには IPv6 アドレス::1/128が割り当てられています。eth0は標準的なイーサネットインターフェイスです。これには IPv6 アドレスfe80::42:acff:fe11:2/64が割り当てられています。
/128 と /64 の部分は、IPv4 のサブネットマスクに似たネットワークプレフィックス長を示しています。
ip addr を使用することで、どのインターフェイスに IPv6 アドレスが設定されているか、およびそれらのアドレスが何であるかをすぐに確認できます。
Continue をクリックして次のステップに進みます。
/proc/sys/net/ipv6 で IPv6 の状態を確認する
このステップでは、/proc ファイルシステムを探索して、システムの IPv6 の状態を確認します。/proc ファイルシステムは、プロセスに関する情報やその他のシステム情報を提供する仮想ファイルシステムです。実行中の Linux カーネルに関する詳細を見つけるのに最適な場所です。
具体的には、/proc/sys/net/ipv6/ ディレクトリ内のファイルを見ていきます。これらのファイルには、IPv6 プロトコルスタックの動作を制御するパラメータが含まれています。
/proc/sys/net/ipv6/ ディレクトリの内容を表示するには、ls コマンドを使用できます。
ls /proc/sys/net/ipv6/
ファイルとディレクトリのリストが表示されます。各ファイルは、特定の IPv6 カーネルパラメータを表しています。
anycast_src_interval bindv6only conf flowlabel_reflect flowlabel_state icmp ip6frag_high_thresh ip6frag_low_thresh ip6frag_secret_interval ip6frag_time neigh route tcp_metrics_hash_size tcp_metrics_info tcp_metrics_purge_interval tcp_metrics_reg_interval tcp_metrics_req_interval tcp_metrics_slack tcp_metrics_sync_interval tcp_metrics_timeout udp_metrics_hash_size udp_metrics_info udp_metrics_purge_interval udp_metrics_reg_interval udp_metrics_req_interval udp_metrics_slack udp_metrics_sync_interval udp_metrics_timeout
重要なファイルの 1 つが disable です。このファイルは、システム全体で IPv6 が無効化されている(1)か、有効化されている(0)かを示します。
disable ファイルの内容を表示するには、cat コマンドを使用できます。
cat /proc/sys/net/ipv6/disable
出力は 0 または 1 になります。
0
- 出力が
0の場合、IPv6 は有効化されています。 - 出力が
1の場合、IPv6 は無効化されています。
もう 1 つの有用なファイルは conf です。これは、各ネットワークインターフェイスの設定ファイルと、デフォルト設定の default ディレクトリを含むディレクトリです。
conf ディレクトリの内容を見てみましょう。
ls /proc/sys/net/ipv6/conf/
各インターフェイスのディレクトリ(all、default、eth0、lo など)が表示されます。
all default eth0 lo
次に、特定のインターフェイス(例:eth0)の IPv6 の状態を、そのディレクトリ内の disable_ipv6 ファイルを見ることで確認できます。
cat /proc/sys/net/ipv6/conf/eth0/disable_ipv6
このファイルにも、その特定のインターフェイスについて 0(有効)または 1(無効)が含まれています。
0
/proc/sys/net/ipv6/ 内のファイルを探索することで、システムの IPv6 設定の低レベルの情報が得られます。
Continue をクリックして次のステップに進みます。
sysctl net.ipv6 で IPv6 設定を確認する
このステップでは、sysctl コマンドを使用して IPv6 カーネルパラメータを調べます。sysctl コマンドは、実行時にカーネルパラメータを変更するために使用されます。前のステップで探索した /proc/sys/ ファイルシステムにある同じパラメータを、より使いやすい方法で表示および変更することができます。
すべての IPv6 関連のカーネルパラメータを表示するには、net.ipv6 接頭辞を付けて sysctl を使用できます。
ターミナルに以下のコマンドを入力し、Enter キーを押します。
sysctl net.ipv6
このコマンドは、パラメータとその現在の値の長いリストを出力します。これらのパラメータは、アドレス構成、ルーティング、セキュリティなど、IPv6 ネットワーキング動作のさまざまな側面を制御します。
net.ipv6.conf.all.accept_dad = 1
net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.autoconf = 1
net.ipv6.conf.all.dad_transmits = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.force_tmo = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.hop_limit = 64
net.ipv6.conf.all.keep_addr_on_down = 0
net.ipv6.conf.all.max_desync_factor = 600
net.ipv6.conf.all.mc_forwarding = 0
net.ipv6.conf.all.mtu = 1280
net.ipv6.conf.all.proxy_ndp = 0
net.ipv6.conf.all.regen_max_retry_delay = 1
net.ipv6.conf.all.regen_retry_delay = 1
net.ipv6.conf.all.router_solicit_delay = 1
net.ipv6.conf.all.router_solicit_interval = 600
net.ipv6.conf.all.router_solicit_max_interval = 1200
net.ipv6.conf.all.router_solicits = -1
net.ipv6.conf.all.rtr_probe_interval = 600
net.ipv6.conf.all.suppress_frag_ndisc = 1
net.ipv6.conf.all.temp_prefer_mpatemp = 1
net.ipv6.conf.all.temp_valid_lifetime = 86400
net.ipv6.conf.all.temp_preferred_lifetime = 14400
net.ipv6.conf.all.use_deprecated = 0
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.all.optimistic_dad = 0
net.ipv6.conf.all.accept_ra_defrtr = 1
net.ipv6.conf.all.accept_ra_pinfo = 1
net.ipv6.conf.all.accept_ra_rtr_pref = 1
net.ipv6.conf.all.accept_ra_mtu = 1
net.ipv6.conf.all.ignore_routes_with_linkdown = 0
net.ipv6.conf.all.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.all.drop_multicast_in_l2_multicast = 0
net.ipv6.conf.all.keep_addr_on_down = 0
net.ipv6.conf.default.accept_dad = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.default.accept_redirects = 1
net.ipv6.conf.default.autoconf = 1
net.ipv6.conf.default.dad_transmits = 1
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.default.force_tmo = 0
net.ipv6.conf.default.forwarding = 0
net.ipv6.conf.default.hop_limit = 64
net.ipv6.conf.default.keep_addr_on_down = 0
net.ipv6.conf.default.max_desync_factor = 600
net.ipv6.conf.default.mc_forwarding = 0
net.ipv6.conf.default.mtu = 1280
net.ipv6.conf.default.proxy_ndp = 0
net.ipv6.conf.default.regen_max_retry_delay = 1
net.ipv6.conf.default.regen_retry_delay = 1
net.ipv6.conf.default.router_solicit_delay = 1
net.ipv6.conf.default.router_solicit_interval = 600
net.ipv6.conf.default.router_solicit_max_interval = 1200
net.ipv6.conf.default.router_solicits = -1
net.ipv6.conf.default.rtr_probe_interval = 600
net.ipv6.conf.default.suppress_frag_ndisc = 1
net.ipv6.conf.default.temp_prefer_mpatemp = 1
net.ipv6.conf.default.temp_valid_lifetime = 86400
net.ipv6.conf.default.temp_preferred_lifetime = 14400
net.ipv6.conf.default.use_deprecated = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.default.optimistic_dad = 0
net.ipv6.conf.default.accept_ra_defrtr = 1
net.ipv6.conf.default.accept_ra_pinfo = 1
net.ipv6.conf.default.accept_ra_rtr_pref = 1
net.ipv6.conf.default.accept_ra_mtu = 1
net.ipv6.conf.default.ignore_routes_with_linkdown = 0
net.ipv6.conf.default.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.default.drop_multicast_in_l2_multicast = 0
net.ipv6.conf.default.keep_addr_on_down = 0
net.ipv6.conf.eth0.accept_dad = 1
net.ipv6.conf.eth0.accept_ra = 1
net.ipv6.conf.eth0.accept_redirects = 1
net.ipv6.conf.eth0.autoconf = 1
net.ipv6.conf.eth0.dad_transmits = 1
net.ipv6.conf.eth0.disable_ipv6 = 0
net.ipv6.conf.eth0.force_tmo = 0
net.ipv6.conf.eth0.forwarding = 0
net.ipv6.conf.eth0.hop_limit = 64
net.ipv6.conf.eth0.keep_addr_on_down = 0
net.ipv6.conf.eth0.max_desync_factor = 600
net.ipv6.conf.eth0.mc_forwarding = 0
net.ipv6.conf.eth0.mtu = 1280
net.ipv6.conf.eth0.proxy_ndp = 0
net.ipv6.conf.eth0.regen_max_retry_delay = 1
net.ipv6.conf.eth0.regen_retry_delay = 1
net.ipv6.conf.eth0.router_solicit_delay = 1
net.ipv6.conf.eth0.router_solicit_interval = 600
net.ipv6.conf.eth0.router_solicit_max_interval = 1200
net.ipv6.conf.eth0.router_solicits = -1
net.ipv6.conf.eth0.rtr_probe_interval = 600
net.ipv6.conf.eth0.suppress_frag_ndisc = 1
net.ipv6.conf.eth0.temp_prefer_mpatemp = 1
net.ipv6.conf.eth0.temp_valid_lifetime = 86400
net.ipv6.conf.eth0.temp_preferred_lifetime = 14400
net.ipv6.conf.eth0.use_deprecated = 0
net.ipv6.conf.eth0.use_tempaddr = 0
net.ipv6.conf.eth0.optimistic_dad = 0
net.ipv6.conf.eth0.accept_ra_defrtr = 1
net.ipv6.conf.eth0.accept_ra_pinfo = 1
net.ipv6.conf.eth0.accept_ra_rtr_pref = 1
net.ipv6.conf.eth0.accept_ra_mtu = 1
net.ipv6.conf.eth0.ignore_routes_with_linkdown = 0
net.ipv6.conf.eth0.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.eth0.drop_multicast_in_l2_multicast = 0
net.ipv6.conf.eth0.keep_addr_on_down = 0
net.ipv6.conf.lo.accept_dad = 1
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.lo.accept_redirects = 1
net.ipv6.conf.lo.autoconf = 1
net.ipv6.conf.lo.dad_transmits = 1
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.lo.force_tmo = 0
net.ipv6.conf.lo.forwarding = 0
net.ipv6.conf.lo.hop_limit = 64
net.ipv6.conf.lo.keep_addr_on_down = 0
net.ipv6.conf.lo.max_desync_factor = 600
net.ipv6.conf.lo.mc_forwarding = 0
net.ipv6.conf.lo.mtu = 65536
net.ipv6.conf.lo.proxy_ndp = 0
net.ipv6.conf.lo.regen_max_retry_delay = 1
net.ipv6.conf.lo.regen_retry_delay = 1
net.ipv6.conf.lo.router_solicit_delay = 1
net.ipv6.conf.lo.router_solicit_interval = 600
net.ipv6.conf.lo.router_solicit_max_interval = 1200
net.ipv6.conf.lo.router_solicits = -1
net.ipv6.conf.lo.rtr_probe_interval = 600
net.ipv6.conf.lo.suppress_frag_ndisc = 1
net.ipv6.conf.lo.temp_prefer_mpatemp = 1
net.ipv6.conf.lo.temp_valid_lifetime = 86400
net.ipv6.conf.lo.temp_preferred_lifetime = 14400
net.ipv6.conf.lo.use_deprecated = 0
net.ipv6.conf.lo.use_tempaddr = 0
net.ipv6.conf.lo.optimistic_dad = 0
net.ipv6.conf.lo.accept_ra_defrtr = 1
net.ipv6.conf.lo.accept_ra_pinfo = 1
net.ipv6.conf.lo.accept_ra_rtr_pref = 1
net.ipv6.conf.lo.accept_ra_mtu = 1
net.ipv6.conf.lo.ignore_routes_with_linkdown = 0
net.ipv6.conf.lo.drop_unicast_in_l2_multicast = 0
net.ipv6.conf.lo.drop_multicast_in_l2_multicast = 0
net.ipv6.conf.lo.keep_addr_on_down = 0
net.ipv6.flowlabel_reflect = 0
net.ipv6.flowlabel_state = 0
net.ipv6.ip6frag_high_thresh = 4194304
net.ipv6.ip6frag_low_thresh = 3145728
net.ipv6.ip6frag_secret_interval = 0
net.ipv6.ip6frag_time = 60
net.ipv6.tcp_metrics_hash_size = 512
net.ipv6.tcp_metrics_info = 1
net.ipv6.tcp_metrics_purge_interval = 600
net.ipv6.tcp_metrics_reg_interval = 1800
net.ipv6.tcp_metrics_req_interval = 300
net.ipv6.tcp_metrics_slack = 10
net.ipv6.tcp_metrics_sync_interval = 300
net.ipv6.tcp_metrics_timeout = 1800
net.ipv6.udp_metrics_hash_size = 512
net.ipv6.udp_metrics_info = 1
net.ipv6.udp_metrics_purge_interval = 600
net.ipv6.udp_metrics_reg_interval = 1800
net.ipv6.udp_metrics_req_interval = 300
net.ipv6.udp_metrics_slack = 10
net.ipv6.udp_metrics_sync_interval = 300
net.ipv6.udp_metrics_timeout = 1800
特定のパラメータを調べることもできます。たとえば、sysctl を使用してシステム全体の IPv6 無効化状態を確認するには、次のようにします。
sysctl net.ipv6.conf.all.disable_ipv6
出力には、パラメータ名とその値が表示されます。
net.ipv6.conf.all.disable_ipv6 = 0
これは、システム全体で IPv6 が有効になっていることを確認しており、/proc ファイルシステムで見た結果と一致します。
sysctl コマンドは、/proc/sys/ 内のファイルと直接やり取りすることなく、カーネルパラメータを表示および変更する便利な方法です。
Continue をクリックして、この実験を完了します。
まとめ
この実験では、ネットワーク設定を調べることで、Linux システムで IPv6 が有効になっているかどうかを確認する方法を学びました。まず、ip addr コマンドを使用してネットワークインターフェイスの詳細を表示し、割り当てられた IPv6 アドレスを特定しました。このコマンドは、システムのネットワークインターフェイスに構成された IPv4 アドレスと IPv6 アドレスの両方を包括的に表示します。
その後、/proc/sys/net/ipv6 ディレクトリを探索し、この仮想ファイルシステム内の特定のファイルを調べることで、カーネルの IPv6 の状態を確認しました。最後に、sysctl net.ipv6 コマンドを使用して、IPv6 に関連するさまざまなカーネルパラメータを調べ、システムの IPv6 設定と構成についてより深い洞察を得ました。



