序章

Linuxサーバーを管理およびトラブルシューティングするときは、基本的なネットワーキングツールを理解することが不可欠です。 一部のツールは主に監視用に作成されていますが、他の低レベルのユーティリティを使用して、ネットワーク接続自体を構成し、デフォルト設定を実装します。

伝統的に、無関係なツールのグループは、 net-tools これを行うために使用されました。 多くの場合、完全な機能をカバーするために一緒にパッケージ化されていましたが、開発と使用の戦略はツールごとに異なりました。

不整合とメンテナンスの停止のため、アンブレラモニカの下で知られているツールのコレクション iproute2 これらの個別のツールを置き換えるために使用されています。 これらは、構文を共有し、効率的に連携するために連携して開発されました。

このガイドでは、iproute2ツールを使用してネットワークに関する情報を構成、操作、および収集する方法について説明します。 デモにはUbuntu12.04VPSを使用しますが、最新のLinuxディストリビューションのほとんどは同じレベルの機能を提供するはずです。

クエリコマンドは通常、非特権ユーザーとして実行できますが、設定を変更するにはroot権限を使用する必要があります。

ネットワークインターフェイス、アドレス、およびルートを表示する方法

iproute2スイートの最も基本的な責任の1つは、実際のインターフェースを管理することです。

通常、インターフェース自体は次のような名前が付けられます eth0, eth1, lo、など。 伝統的に、 ifconfig この領域の項目を構成するためにコマンドが使用されました。 iproute2システムでは、サブコマンド ip addrip link これらの手順に注意してください。

ifconfigを使用すると、引数なしでコマンドを入力することにより、ネットワークインターフェイスの現在の状態に関する情報を収集できます。

ifconfig

eth0      Link encap:Ethernet  HWaddr 54:be:f7:08:c2:1b  
          inet addr:192.168.56.126  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::56be:f7ff:fe08:c21b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:114273 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58866 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:73490903 (73.4 MB)  TX bytes:14294252 (14.2 MB)
          Interrupt:20 Memory:f7f00000-f7f20000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:3942 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3942 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:668121 (668.1 KB)  TX bytes:668121 (668.1 KB)

単一のインターフェースに関する情報を取得するには、いつでもそれを引数として指定できます。

 ifconfig eth0
  eth0リンクencap:Ethernet HWaddr 54:be:f7:08:c2:1b
inet addr:192.168.56.126 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr:fe80 :: 56be:f7ff:fe08:c21b / 64スコープ:リンクアップブロードキャスト実行マルチキャストMTU:1500メトリック:1 RXパケット:114829エラー: 0ドロップ:0オーバーラン:0フレーム:0TXパケット:59007エラー:0ドロップ:0オーバーラン:0キャリア:0コリジョン:0txqueuelen:1000 RXバイト:73598364(73.5 MB)TXバイト:14325245(14.3 MB)割り込み: 20メモリ:f7f00000-f7f20000

この機能は、iproute2スイートのサブコマンドを使用して複製できます。

各インターフェースに接続されているアドレスの概要を取得するには、次のように入力します ip addr 引数なしで:

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    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 pfifo_fast state UP qlen 1000
    link/ether 54:be:f7:08:c2:1b brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.126/24 brd 192.168.56.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::56be:f7ff:fe08:c21b/64 scope link 
       valid_lft forever preferred_lft forever

特定のインターフェースを取得するには、次の構文を使用できます。

 ip addr show eth0
  2:eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000 link / ether 54:be:f7:08:c2:1b brd ff:ff:ff:ff:ff:ff inet 192.168.56.126/24 brd 192.168.56.255 scope global eth0 valid_lft forever Preferred_lft forever inet6 fe80 :: 56be:f7ff:fe08:c21b/64スコープリンクvalid_lftforeverPreferred_lft forever

実際、 ip addr コマンドは単なるエイリアスです ip addr show 指図。

アドレスではなくインターフェース自体のみに関心がある場合は、 ip link 代わりにコマンド:

ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    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 pfifo_fast state UP qlen 1000
    link/ether 04:01:13:8a:a2:01 brd ff:ff:ff:ff:ff:ff

特定のインターフェースに関する情報を取得するには、キーワードを追加する必要があります show インターフェース名が続きます:

ip link show eth0

インターフェイスがどのように通信しているかに関する統計を取得するには、 -s linkサブコマンドのオプション:

ip -s link show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 04:01:13:8a:a2:01 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    853144     14672    0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    91257      537      0       0       0       0

では、ルーティングテーブルをどのように見つけるのでしょうか。 ルーティングテーブルには、他のネットワークロケーションへのパスに関するカーネル情報が含まれています。 次のように入力すると、現在のルーティングテーブルを印刷できます。

ip route show

default via 107.170.58.1 dev eth0  metric 100
107.170.58.0/24 dev eth0  proto kernel  scope link  src 107.170.58.162 

これは、より優れたインターネットへのデフォルトルートが eth0 インターフェイスとアドレス107.170.58.1。 このサーバーには、そのインターフェイスを介してアクセスできます。ここで、独自のインターフェイスアドレスは107.170.58.162です。

ネットワークインターフェイスとアドレスを構成する方法

インターフェイスとそれらに関連付けられたアドレスに関する情報を取得する方法を理解したので、次のステップは、それらの状態を変更する方法を見つけることです。

最初のステップは、インターフェース自体を構成することです。 あなたはこれを行うことができます ip link 再びサブコマンド。 今回は、しかし、あなたはアクションを渡します set 値を変更するためにshowの代わりに。

たとえば、次のコマンドを発行することで、ネットワークインターフェイスを上下させることができます。

ip link set eth1 up ip link set eth1 down

:サーバーに接続しているインターフェースを誤ってダウンさせないように注意してください。

また、使用することができます ip link インターフェイスに関する属性を設定するサブコマンド。 たとえば、インターフェイスのマルチキャストフラグをオンまたはオフに変更する場合は、次のように入力できます。

ip link set eth1 multicast on ip link set eth1 multicast off

mtuとパッケージキューの長さは次のように調整できます。

ip link set eth1 mtu 1500 ip link set eth1 txqueuelen 1000

設定しているインターフェイスがダウンしている場合は、デバイスに関連付けられているインターフェイス名とarpフラグを調整できます。

ip link set eth1 name eth10 ip link set eth1 arp on

インターフェイスに関連付けられているアドレスを調整するには、ここでも ip addr サブコマンド。

次のように入力して、デバイスにアドレスを追加できます。

ip addr add ip_address / net_prefix brd + dev interface

The brd + コマンドの一部は、ブロードキャストアドレスを自動的に設定します。 各インターフェースに複数のアドレスを問題なく追加できます。

逆の操作でアドレスを取り除くことができます。 インターフェイスに関連付けられている特定のアドレスを削除するには、次のように使用できます。

ip addr del ip_address / net_prefix dev interface

オプションで、アドレスを省略できます。その場合、そのインターフェイスに関連付けられている最初にリストされているアドレスが削除されます。

を使用して、サーバーのルーティングを調整することもできます。 ip route [add | change | replace | delete ] 構文ですが、ほとんどの人が定期的にこれを調整しないため、ここではこれについては説明しません。

IPRoute2の追加機能

IPRoute2には、このガイドでは詳しく説明できない追加機能がいくつかあります。 代わりに、これらが何であるか、およびそれらが役立つと思われる状況について説明します。

IPルーティングルールの概念は、状況に大きく依存するため、説明するのは困難です。 基本的に、ターゲットアドレス、送信元アドレス、ルーティングプロトコル、パケットサイズなど、さまざまなフィールドに基づいてトラフィックのルーティング方法を決定できます。

この機能にアクセスするには、 ip rule サブコマンド。 基本的なクエリは、他のサブコマンドの一般的なパターンに従います。

ip rule show

0:	from all lookup local 
32766:	from all lookup main 
32767:	from all lookup default

これらの3つのルーティングルールは、カーネルによって構成されたデフォルトのルールです。 最初の行はすべてのトラフィックと一致し、優先度の高いトラフィックをルーティングするために使用されます。 2行目は、通常のルーティングを処理するメインルールです。 最後のルールは、上記のルールがパケットと一致しなかった場合に後処理に使用される空のルールです。

IPRoute2ソフトウェアによって設定されたルーティングルールは、ルーティングポリシーデータベースに保存されます。このデータベースでは、ルールのセットと照合することによってポリシーが選択されます。 適切なアクションを使用して、ルールを追加または削除できます。 ただし、何をしているのかを知らずにこれを行うべきではありません。 マニュアルページを見て、検索します ip rule 詳細については。

man ip         # search for "ip rule"

簡単に説明するもう1つのことは、これらのツールを使用したarp情報の処理です。 この情報を処理するサブコマンドは、 ip neigh.

ip neigh

107.170.58.1 dev eth0 lladdr 00:00:5e:00:01:68 DELAY

デフォルトでは、これは少なくともゲートウェイをリストする必要があります。 Arpは、ローカルネットワークを介してアクセス可能な物理デバイスに関する情報を収集するために使用されるプロトコルです。

基本的に、arp要求は、IPアドレスに到達する必要があるときはいつでも、ローカルネットワークを介してブロードキャストされます。 一致するIPアドレスが応答すると、ローカルコンピューターはそのIPアドレスに情報を送信する場所を認識します。 この情報は、フォローアップ通信中にクエリを実行する必要がないように、しばらくの間(通常は約15分)ローカルシステムにキャッシュされます。

結論

これで、iproute2スイートに含まれているツールの使用方法についてかなり良いアイデアが得られたはずです。 多くのガイドやチュートリアルはまだ古いユーティリティを参照していますが、知識のあるシステム管理者は古いツールを使用して育ったことが多いため、このガイドで説明するコマンドは今後数年間で引き継がれます。

これらのコマンドに切り替えたシステムで問題のトラブルシューティングを行う前に、これらのコマンドに精通することが重要です(Arch Linuxは2011年にすでに完全に変換されています)。 一般に、これらははるかに一貫性があり、すべてのコマンドで使用できる特定の規則を信頼できます。 これらのコマンドを使用すればするほど、それらは第二の性質になります。

ジャスティン・エリングウッド