Linux のネットワーク設定

〜 コマンドで覚えておくと重宝しますよ〜


GUI、いやいや勇者はやっぱりコマンドライン(爆)

 Linux のネットワーク設定は、GUI で行うこともできます。しかし、ネットワーク設定の誤りから、X が起動不能に陥る場合があること、ネットワーク越しに設定変更が必要となるために X をあげられないこと、などから、CUI での設定方法を習得しておくことは重要です。特に、リモート操作のためだけに、X をあげるのは、非常にもったいないことですから、CUI での設定を覚えましょう。

 ssh や telnet といった端末からの操作を行う場合に、CUI を使えることは、大変重要です。X をリモートから使用することも十分に可能ですが、ネットワークの帯域を非常に圧迫するため、帯域を確保できない公衆回線経由の遠隔保守を行う場合などには、非常にストレスと経費がのしかかってきます。

ネットワーク設定に使用するコマンド類

 これから記載するコマンドがすべて、というわけではありませんが、これだけを覚えておくと、日常操作には困らなくなりますし、ある程度までのトラブルシューティングにも役に立ちます。

  1. ifconfig
  2. ifup,ifdown
  3. iwconfig
  4. route

ifconfig

 # ifconfig
 # ifconfig -a 
 # ifconfig デバイス名 IP アドレス up
 # ifconfig デバイス名 down

 ifconfig コマンドは、ネットワーク設定をするメインのコマンドです。NIC(LAN カードまたは内蔵 LAN)の有効化/無効化、IP アドレスの設定、など多機能にわたります。ifconfig コマンドの実行は、一般ユーザー権限でもフルパスを指定することで可能ですが、設定を変更する機能については、root 権限が必要となっています。

ifconfig , ifconfig -a

 ifconfig コマンドを引数なしで実行すると、実行した時点で有効化されているデバイス名が一覧表示されます。複数の NIC が有効化されている場合には、そのすべてがリストアップされてきます。通常は、最低でも lo はリストアップされてきます。下記の実行例は、ifconfig コマンドを引数なしで実行した場合の結果です。実 NIC のハードウェアアドレスおよび IP アドレスについては、実際のものから変更しています。

# ifconfig
eth1      リンク方法:イーサネット  ハードウェアアドレス 00:xx:xx:4B:10:48
          inetアドレス:192.168.0.20 ブロードキャスト:192.168.0.255  マスク:255.255.255.0
          inet6アドレス: fe80::212:f0ff:fe4b:1048/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RXパケット:4828 エラー:0 損失:38 オーバラン:0 フレーム:0
          TXパケット:3334 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          RX bytes:2639567 (2.5 Mb)  TX bytes:395399 (386.1 Kb)
          割り込み:11 ベースアドレス:0xc000 メモリ:c0214000-c0214fff

lo        リンク方法:ローカルループバック
          inetアドレス:127.0.0.1 マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

 実 NIC である eth1 が有効化されており、IP アドレスの割り当てもなされていることがわかります。lo は自分自身をさす特殊な NIC で、ネットワークを有効にしている場合には、必ず存在しています。

 Linux では、よくデバイス番号が0から始まります。従って、eth1 が表示されているということは、eth0 があるのではないか、と思いつくことは容易です。事実、その通りで、このマシンには別に eth0 と認識されている NIC があります。ifconfig コマンドをに -a という引数を与えると、表示が次のように変わります。

# ifconfig -a
eth0      リンク方法:イーサネット  ハードウェアアドレス 00:xx:yy:B2:96:05
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          ベースアドレス:0x8000 メモリ:c0220000-c0240000

eth1      リンク方法:イーサネット  ハードウェアアドレス 00:xx:yy:4B:10:48
          inetアドレス:192.168.0.20 ブロードキャスト:192.168.0.255  マスク:255.255.255.0
          inet6アドレス: fe80::212:f0ff:fe4b:1048/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RXパケット:5644 エラー:0 損失:38 オーバラン:0 フレーム:0
          TXパケット:3552 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
          RX bytes:2760945 (2.6 Mb)  TX bytes:403247 (393.7 Kb)
          割り込み:11 ベースアドレス:0xc000 メモリ:c0214000-c0214fff

lo        リンク方法:ローカルループバック
          inetアドレス:127.0.0.1 マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

sit0      リンク方法:IPv6-in-IPv4
          NOARP  MTU:1480  Metric:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

 先ほどの表示と比べると、eth0 および sit0 が増えています。-a という引数は、all の意味であり、認識されている NIC を、有効か無効かの区別なく、一覧表示することになります。eth0 に IP アドレスが割り当てられていないことがわかります。sit0 は特殊なインターフェイスで、IPv4 と IPv6 を接続するために用いられています。ただし、我が家の環境では IPv6 は使用していないため、sit0 も無効化されています。

ifconfig up
 # ifconfig デバイス名 (IP アドレス) up

 ifconfig コマンドに、デバイス名と up の引数を与えると、指定されたデバイス名を持つ NIC を有効化します。この際に、IP アドレスを指定しない場合には、デバイスの有効化のみ行われ、通信に必要な IP アドレスの割り当てやデフォルトゲートウェイの設定などはなされないので、注意が必要です。IP アドレスを指定した場合にもデバイスの有効化に IP アドレスの割り当てが付加されるだけです。

 NIC が複数搭載されているマシンで、使用する NIC を切り替える場合に、ifconfig up コマンドで、新たな NIC を有効化する、という使い方をします。

ifconfig down
 # ifconfig デバイス名 down

 有効化している NIC を無効にします。再度有効化するには ifconfig up とします。

ifup,ifdown

 ifup および ifdown は、シェルスクリプトとなっていて、あらかじめ用意された設定ファイルに従って、NIC を up または down させます。設定ファイルは /etc/sysconfig/network-scripts に【ifcfg-デバイス名】として保管されています。ifup スクリプトは、引数と指定されたデバイス名から、該当する設定ファイルを特定し、その内容にしたがって、ifconfig up 処理を行います。 

# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
IPADDR=192.168.0.2
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
ONBOOT=no

 ifcfg ファイルのサンプルです。BOOTPROTO は、DHCP を使用する場合は BOOTPROTO=dhcp という指定になり、固定 IP アドレスの場合には、BOOTPROTO=none となります。IPADDR は IP アドレスの指定となります。NETMASK はサブネットマスクの指定です。GATEWAY はゲートウェイの指定です。BOOTPROTO=dhcp の場合には、これらの設定は不要になります。ONBOOT は起動時に自動的に有効化するかどうか、の設定となります。ONBOOT=yes の場合は起動時に自動的に有効化され、ONBOOT=no の場合は、起動後に手動で有効にする必要があります。

 ifcfg ファイル自体は、単なるテキストファイルですので、必要となれば、ifcfg-eth0 をベースに作成することもできます。

route

 # route
 # route add default gw 192.168.0.1
 # route del default

 ルーティングテーブルを設定するコマンドです。引数なしで実行すると現在のルーティングテーブルを表示し、引数に add を指定することで、新たなルーティングテーブルを作成し、del を指定することで、作成済みのルーティングテーブルを消去します。

 インターネットの Web サイトが表示できない場合、route コマンドを使用して、デフォルトゲートウェイが正しく設定されているか、を確認します。デフォルトゲートウェイが複数存在している場合、パケットを流せなくなるため、通信が正常に行えなくなります。この場合、route del コマンドで、存在しているすべてのデフォルトゲートウェイを削除し、改めて正しいデフォルトゲートウェイを追加することになります。VPN を使っている場合などに、通信がおかしくなった場合には、デフォルトゲートウェイの書き換えが発生している可能性がありますので、route コマンドで経路を確認しましょう。

/etc/resolv.conf

# cat resolv.conf 
 nameserver=202.248.37.74
 nameserver=202.248.20.133

 コマンドではありませんが、DNS の設定を記録するファイルです。基本的には、プロバイダの DNS を指定することになりますが、LAN 上に DNS が存在している場合には、そちらを指定することも可能です。サンプルには、@nifty の DNS アドレスを示しています。

 この設定が正しくないと、名前解決ができなくなるため、Web サイトにアクセスできなくなります。ダイアルアップ接続などを使用した場合に、書き換えられることがありますので、Web ブラウザ上で、DNS のエラーが発生した場合には、まずこの内容を確認してください。その上でだめだとすると、route コマンドの結果を確認しましょう。私が遭遇した局面としては、デフォルトゲートウェイが複数存在している(route コマンドの出力に default が複数存在している)状態となり、どちらにもパケットを投げることができなくなる、というものでした。VPN による赤そう回線は、実回線ではない訳ですから、デフォルトゲートウェイとしては単一でなければなりません。この時は、route del default にて、存在しているすべてのデフォルトゲートウェイを削除し、改めて、route add defalut gw により、デフォルトゲートウェイを設定することで、解決することができました。


Last Update is 2007/04/30. CopyRights Tazoe Kazuya 2007.