Linux でネットワークの MTU が設定されているかどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux で様々な方法を使ってネットワークインターフェイスの最大転送単位 (Maximum Transmission Unit, MTU) を確認する方法を学びます。MTU を理解することは、ネットワークのパフォーマンスとトラブルシューティングにとって重要です。

以下の 3 つの異なるアプローチを探索します。最新の ip link show コマンドを使用する方法、従来の ifconfig ユーティリティを使用する方法、および /sys/class/net ファイルシステム内のネットワークインターフェイス情報を直接調べる方法です。この実験の終了時には、ネットワークインターフェイスの MTU 設定を特定することができるようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") subgraph Lab Skills linux/ls -.-> lab-558738{{"Linux でネットワークの MTU が設定されているかどうかを確認する方法"}} linux/cat -.-> lab-558738{{"Linux でネットワークの MTU が設定されているかどうかを確認する方法"}} linux/ifconfig -.-> lab-558738{{"Linux でネットワークの MTU が設定されているかどうかを確認する方法"}} linux/ip -.-> lab-558738{{"Linux でネットワークの MTU が設定されているかどうかを確認する方法"}} linux/apt -.-> lab-558738{{"Linux でネットワークの MTU が設定されているかどうかを確認する方法"}} end

このステップでは、ip link show コマンドを使用してネットワークインターフェイスの最大転送単位 (Maximum Transmission Unit, MTU) を確認する方法を学びます。MTU は、ネットワークインターフェイスが断片化せずに処理できる最大サイズのデータパケットです。MTU を理解することは、ネットワークのトラブルシューティングとパフォーマンスチューニングに重要です。

ip コマンドは、Linux でネットワークインターフェイス、ルーティング、トンネルを管理するための強力なツールです。link サブコマンドは、ネットワークインターフェイスを表示および変更するために使用されます。

ターミナルが開いていない場合は、開きます。デスクトップの左側にある Xfce Terminal アイコンをクリックすることで、ターミナルを開くことができます。

次に、以下のコマンドを入力して Enter キーを押します。

ip link show

このコマンドは、システム上のすべてのネットワークインターフェイスに関する情報を表示します。以下のような出力が表示されます。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

メインのネットワークインターフェイスに対応する行を探します。この環境では、通常 eth0 です。そこに mtu の値が記載されています。上記の例では、eth0 の MTU は 1500 です。

lo インターフェイスはループバックインターフェイスで、システム内での通信に使用されます。その MTU は通常、はるかに大きくなります。

出力を見て、eth0 インターフェイスの MTU を特定してみましょう。

Continue をクリックして次のステップに進みます。

ifconfig で MTU を確認する

このステップでは、ifconfig コマンドを使用してネットワークインターフェイスの MTU を確認します。ip はネットワーク設定に使用される最新のコマンドですが、ifconfig は古いが依然として一般的に使用されるユーティリティです。これはネットワークインターフェイスに関する同様の情報を提供します。

まず、ifconfig コマンドを含む net-tools をインストールしましょう。htop の場合と同じように、apt を使用します。

ターミナルが開いていない場合は、開きます。

以下のコマンドを入力して Enter キーを押し、net-tools をインストールします。

sudo apt update
sudo apt install net-tools -y

-y フラグは、インストール中のすべてのプロンプトに自動的に「yes」と回答し、インストールプロセスをスムーズにします。

インストールが完了したら、ifconfig コマンドを使用できます。以下のコマンドを入力して Enter キーを押します。

ifconfig

このコマンドは、すべてのアクティブなネットワークインターフェイスの設定情報を表示します。以下のような出力が表示されます。

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:acff:fe11:2  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ac:11:00:02  txqueuelen 1000  (Ethernet)
        RX packets 123  bytes 12345 (12.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 123  bytes 12345 (12.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 123  bytes 12345 (12.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 123  bytes 12345 (12.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

再び、eth0 に対応するセクションを探します。そこに mtu の値が記載されており、ip link show で確認した値と一致することがわかります。

ipifconfig の両方を使用することは、異なるシステムやドキュメントが一方を他方よりも優先して使用する場合があるため、役立つことがあります。

Continue をクリックして次に進みます。

/sys/class/net で MTU を調べる

このステップでは、/sys ファイルシステムを探索して MTU の値を見つけます。/sys ファイルシステムは、カーネルのデータ構造に対するインターフェイスを提供する仮想ファイルシステムです。これを使うと、カーネルパラメータやデバイス情報を調べたり、場合によっては変更したりすることができます。

MTU を含むネットワークインターフェイスの情報は、/sys/class/net ディレクトリを通じて公開されています。システム上の各ネットワークインターフェイスには、ここにサブディレクトリが存在します。

ターミナルが開いていない場合は、開きます。

まず、/sys/class/net ディレクトリの内容を一覧表示して、利用可能なネットワークインターフェイスを確認しましょう。以下のコマンドを入力して Enter キーを押します。

ls /sys/class/net/

ip link showifconfig の出力と同様に、ネットワークインターフェイスの一覧が表示されるはずです。この環境では、おそらく eth0lo が表示されます。

eth0  lo

次に、メインのインターフェイスである eth0 のディレクトリの中身を見てみましょう。以下のコマンドを入力して Enter キーを押します。

ls /sys/class/net/eth0/

これにより、eth0 インターフェイスに関する情報が含まれるファイルとディレクトリの一覧が表示されます。

addr_assign_type  broadcast    device       ifindex      mtu        phys_port_id  speed
address           carrier      dormant      iflink       napi_defer_hard_irqs  phys_port_name  statistics
addr_len          carrier_changes  duplex       link_mode    netdev_group  power         subsystem
bonding_slave     carrier_up_count  flags        lower_       operstate     proto_down_reason  tx_queue_len
bridge_slave      dev_id       gro_flush_timeout  name_assign_type  perms         qdisc         type

mtu という名前のファイルに注目してください。このファイルの内容を読み取ることで、MTU の値を取得できます。cat コマンドを使って mtu ファイルの内容を表示しましょう。以下のコマンドを入力して Enter キーを押します。

cat /sys/class/net/eth0/mtu

ターミナルに MTU の値が表示されるはずで、その値は 1500 です。

1500

/sys ファイルを読み取ることで MTU を確認するこの方法は、ネットワークインターフェイスに関するカーネルレベルの情報に直接アクセスする方法を提供します。

これで、ip link showifconfig、そして /sys ファイルシステムを調べるという 3 つの異なる方法を使って MTU を正常に確認しました。これは、Linux では同じタスクを達成するためにしばしば複数の方法があることを示しています。

Continue をクリックして、この実験を完了します。

まとめ

この実験では、Linux でネットワークインターフェイスの最大転送単位 (Maximum Transmission Unit, MTU) を 3 つの異なる方法で確認する方法を学びました。まず、最新の ip link show コマンドを使用して、すべてのネットワークインターフェイスに関する詳細情報(MTU 値を含む)を表示しました。次に、古いが依然として一般的な ifconfig コマンドを使用してこの情報を検証しました。最後に、/sys/class/net ファイルシステムから直接 MTU 値を調べる方法を探索しました。この方法は、ネットワークインターフェイスのプロパティにプログラム的にアクセスする手段を提供します。これらの方法は、MTU 設定を確認するための異なる方法を提供し、ネットワークのトラブルシューティングやパフォーマンス最適化において重要です。