LinuxVPSでIPRoute2ツールを使用してネットワーク構成を管理する方法
序章
Linuxサーバーを管理およびトラブルシューティングするときは、基本的なネットワーキングツールを理解することが不可欠です。 一部のツールは主に監視用に作成されていますが、他の低レベルのユーティリティを使用して、ネットワーク接続自体を構成し、デフォルト設定を実装します。
伝統的に、無関係なツールのグループは、 net-tools
これを行うために使用されました。 多くの場合、完全な機能をカバーするために一緒にパッケージ化されていましたが、開発と使用の戦略はツールごとに異なりました。
不整合とメンテナンスの停止のため、アンブレラモニカの下で知られているツールのコレクション iproute2
これらの個別のツールを置き換えるために使用されています。 これらは、構文を共有し、効率的に連携するために連携して開発されました。
このガイドでは、iproute2ツールを使用してネットワークに関する情報を構成、操作、および収集する方法について説明します。 デモにはUbuntu12.04VPSを使用しますが、最新のLinuxディストリビューションのほとんどは同じレベルの機能を提供するはずです。
クエリコマンドは通常、非特権ユーザーとして実行できますが、設定を変更するにはroot権限を使用する必要があります。
ネットワークインターフェイス、アドレス、およびルートを表示する方法
iproute2スイートの最も基本的な責任の1つは、実際のインターフェースを管理することです。
通常、インターフェース自体は次のような名前が付けられます eth0
, eth1
, lo
、など。 伝統的に、 ifconfig
この領域の項目を構成するためにコマンドが使用されました。 iproute2システムでは、サブコマンド ip addr
と ip 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年にすでに完全に変換されています)。 一般に、これらははるかに一貫性があり、すべてのコマンドで使用できる特定の規則を信頼できます。 これらのコマンドを使用すればするほど、それらは第二の性質になります。