Windows から Linux へのロードマップ: 第 7 回 ネットワーキング

Linux のネットワーキング早わかり

IBM e ビジネス・アーキテクトである Chris Walden が、9 回の developerWorks シリーズで読者の運用スキルを Windows 環境から Linux 環境へ移行する道案内をしていきます。今回は Linux が最高に力を発揮する部分である、ネットワーク関連の機能に関して説明します。

Chris Walden, e-business Architect, IBM

Chris Walden は IBM Developer Relations Technical Consulting (dragonslayers としても知られています) の e ビジネス・アーキテクトです。テキサス州オースチン在住で教育、設置使用指導、IBM ビジネス・パートナーへのコンサルティングにあたっています。自他共に認める半 Linux 狂発症途中で、聞く耳持つ人がいれば誰にでも良い知らせを広めています。e ビジネス・アーキテクトとしての仕事以外に彼の地域にある、すべて Linux による基幹サーバーを管理しており、そこでは多種多様なユーザー環境でのファイル、印刷その他のアプリケーション・サービスを扱っています。コンピューター業界でフィールド・サポートから Web アプリケーション開発やコンサルティングまで 10年の経験があります。



2003年 11月 11日

この時代では、ネットワークに接続せずにコンピューターを動かすことはほとんど考えられません。電子メールや Web のブラウジング、ファイル共有等はどれも、印刷したり画面上で情報を見るのと同じくらい当然のことと考えられています。

幸い、Linux は最初からネットワーク向けに作られました。実際、ネットワーク関連の機能は Linux が最も力を発揮できる部分です。Linux はネットワーク・プロトコルとして普及している TCP/IP や SMB (NetBIOS) をサポートしており、ネットワークのトラフィックを監視、フィルタリングする高度なツールも備えています。FTP や Windows のファイル・印刷共有、Web サーバーといったサービスもできます。さらに集中型ディレクトリ・サービス、VPN (仮想専用ネットワーク)、リモート・プロシージャー・コールのための機構も備えています。

ネットワーク・ハードウェア

どんなハードウェアでも、ドライバがありさえすれば Linux で動作します。Linux のドライバーはカーネルに一体化してコンパイルすることも、ローダブル・モジュールとしてコンパイルすることもできます。普及しているネットワーク・カードであれば Linux カーネルがデフォルトでサポートしています。ネットワーク用のハードウェアを選ぶ際には互換性リスト「Hardware Compatibility List」 (リンクは 参考文献 にあります) に載っているものを使うのが賢明です。使用する Linux ディストリビューションの最新版に合ったものを使ってください。

互換性のあるネットワーク・ハードウェアを使っていれば、普通はインストールした時に自動認識されます。システムにインストールされているネットワーク・ハードウェアをチェックするには ifconfig コマンドを使います。デフォルトで、ifconfig はアクティブなネットワーク・デバイスを表示します。すべてのネットワーク・デバイスを見るには -a スイッチを付けます。

リスト 1. ifconfig を使う
refname: ifconfig-a

[root@cmw-t30 root]#  ifconfig -a 
eth0      Link encap:Ethernet  HWaddr 00:09:6B:60:8B:1E
          inet addr:9.41.209.160  Bcast:9.41.209.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:47255 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32949 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:22140365 (21.1 Mb)  TX bytes:13519623 (12.8 Mb)
          Interrupt:11 Base address:0xf000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1308081 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1308081 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:183376967 (174.8 Mb)  TX bytes:183376967 (174.8 Mb)

上のリストでは、システム中にネットワーク・カードは一枚しかなく、eth0 として認識されています。lo アダプターはループバックで、Linux が自分自身と通信するのに使っています。ifconfig コマンドについては後でまた詳しく説明します。

ネットワークデバイス名

Linux のネットワーク・デバイスは設定されるとエイリアス (別名) が付けられます。エイリアスは省略形で表したデバイスの形式と数字の組み合わせです。ある形式の最初のデバイスは 0、次のデバイスには 1、2、3 のように数字が付けられます。名前付けの規則を次に示します。これは Linux Network Administrator's Guide からとりました (この記事の終わりの参考文献にリンクがあります)。

  • eth0, eth1 ...
    これらはイーサネット・カードです。多くのパラレルポート・イーサネット・カードを含め、ほとんどのイーサネット・カードに使われます。
  • tr0, tr1 ...
    これらはトークン・リング・カードです。非 IBM 製を含め、ほとんどのトークンリング・カードに使われます。
  • s10, s11 ...
    これらは SLIP インターフェースです。SLIP インターフェースはシリアル・ラインと関連付けられますが、その順番はシリアル・ラインが SLIP に割り当てられている順です。
  • ppp0, ppp1 ...
    これらは PPP インターフェースです。SLIP インターフェースと同じように、PPP インターフェースも一旦 PPP モードに変換されるとシリアル・ラインと関連付けられます。
  • plip0. plip1 ...
    これらは PLIP インターフェースです。PLIP はパラレルライン上で IP データグラムを運びます。PLIP インターフェースは PLIP ドライバーによってシステム起動時に割り当てられ、パラレル・ポートにマッピングされます。2.0.x カーネルではデバイス名とパラレル・ポートの I/O ポートに直接の関係がありますが、その後のカーネルでは SLIP や PPP デバイスと同じように、デバイス名は順番に割り付けられるようになっています。
  • ax0, ax1 ...
    これらは AX.25 インターフェースです。AX.25 はアマチュア無線愛好者がよく使うプロトコルです。AX.25 は SLIP デバイスと似た方法で割り付けとマッピングが行われます。

他にもまだたくさんのインターフェースが、たくさんのネットワーク・デバイス用に用意されています。ここで挙げたのはごく一部だけです。

イーサネットが一番普通の設定なので、ここではイーサネットをとりあげます。他の接続方法に関してはこの記事の終わりにある参考文献を見てください。


ネットワーク設定

Linux のディストリビューションをインストールした時にネットワークは設定されています。この最初の設定で、アクティブな eth0 が既にインストールされているはずです。この設定で当面の使用には問題ありませんが、後で変更する必要が出てくるかもしれません。IP ネットワーキングに関連した他の設定項目や、その設定のためのファイルやツールに関しては後で説明します。

Webmin

Webmin では Networking の Network Configuration に、良くできたネットワーク設定ツールがあります。これで個別のインターフェースを設定したり、現在の設定や保存されている設定を調整することができます。またルーティングやゲートウェイ、DNS クライアント、ローカルホスト・アドレス等も設定できます。すべての設定の編集がすんだら Apply Configuration をクリックすると、そこまでの変更が設定に反映されます。システムの再起動は必要ありません。

Localhost

ローカルホスト・アドレスは /etc/hosts にあります。このファイルは C:\winnt\system32\drivers\etc\hosts ファイルに相当します。ここでのエントリーは IP アドレスのエイリアスを表し、DNS によらずに名前を割り付けるのに使われます。

127.0.0.1 localhost.localdomain localhost
10.10.10.10 cmw-t30

ディストリビューション・ツール

各ディストリビューションには独自のネットワーク設定ツールがあります。自分が使うディストリビューションの資料で、どんなツールを使うのかよく見てください。どのツールにも基本的には Webmin ツールと同じ設定オプションがありますし、ディストリビューション固有のオプションがある場合もあります。

図 1. Red Hat 8.x と 9.x で使っている redhat-config-network ツール
Red Hat 8.x と 9.x で使っている redhat-config-network ツール
図 2. SuSE と United Linux で使っている YAST ツール
SuSE と United Linux で使っている YAST ツール

手動設定もできますが、これは非常に内容の深い話題です。お使いのディストリビューションの資料や、この記事の終わりにある参考文献に手動ネットワーク設定についての情報がありますので、参考にしてください。


解析と監視のためのツール

Linux にはネットワーク関係の動作を監視するツールがたくさんあります。

ifconfig
先に ifconfig コマンドを使ってイーサネット・カードの状態を見ましたが、ifconfig はデバイスの状態をレポートするだけでなく、デバイスを設定することもできるのです。例えばテスト用に一時的なネットワーク設定をしたいとしましょう。ディストリビューションのツールを使って設定を変更することもできますが、後で元に戻そうと思うと、変更の一つ一つをメモしておく必要があるでしょう。ところが ifconfig を使うと、保存されている設定をいじることなくカードを設定することができるのです。

ifconfig eth0 192.168.13.13 netmask 255.255.255.0 up

上のコマンドは eth0 の IP アドレス 192.168.13.13 (クラス C) を設定し、かつ確実に動作状態になるようにします。

ifconfig eth0 down

上のコマンドは eth0 デバイスを停止させます。ifconfig の使い方の詳細については info ifconfig ページを見てください。

ifup/ifdown
保存された設定を使ってネットワーク・デバイスをアクティブにしたり非アクティブにするには、それぞれ ifupifdown を使います。

# Bring up eth0 using the saved configuration
ifup eth0
# Shut down eth0
ifdown eth0

netstat
ネットワーク接続、ルーティング・テーブル、インターフェース統計、マスカレード接続、マルチキャスト・メンバーシップなどを表示するには netstat コンソール・コマンドを使います。netstat にはその機能を制御するコマンドラインのスイッチがいくつかあります。よく使われるのは次のようなものです。

ネットワーク状態の表示
netstat -pPID と、各ソケットが属するプログラム名を示す。
netstat -aリスニング・ソケットと非リスニング・ソケット両方を示す。
netstat -tTCP コネクションを示す。
netstat -uUDP コネクションを示す。
netstat -e付加情報を表示する。最も詳細に表示するには、このコマンドを 2 回使います。

netstat -tp の例を次に示します。

リスト 2. netstat を使う
[root@cmw-t30 root]# netstat -tp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
PID/Program name
tcp        0      0 localhost.localdo:29000 *:*                     LISTEN
2389/attvpnctl
tcp        0      0 *:10000                 *:*                     LISTEN
5945/perl
tcp        0      0 *:x11                   *:*                     LISTEN
1120/X
tcp        0      0 *:ftp                   *:*                     LISTEN
724/xinetd
tcp        0      0 *:ssh                   *:*                     LISTEN
710/sshd
tcp        0      0 *:ipp                   *:*                     LISTEN
797/cupsd
tcp        0      0 *:505                   *:*                     LISTEN
1043/rcd
tcp        0      0 localhost.localdoma:ipp localhost.localdo:32772 ESTABLISHED
797/cupsd
tcp        0      0 sig-9-65-39-140.m:44916 sdoprods2.austin.i:1352 TIME_WAIT
-
tcp        0      0 10.100.100.101:33020    64.12.29.100:5190       ESTABLISHED
1433/gaim
tcp        0      0 localhost.localdo:44954 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44955 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44897 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44902 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44903 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44900 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44901 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 10.100.100.101:44888    cs9336-61.austin.r:pop3 TIME_WAIT
-
tcp        0      0 localhost.localdo:32772 localhost.localdoma:ipp ESTABLISHED
1246/gnome-cups-man
tcp        1      0 localhost.localdo:32774 localhost.localdoma:ipp CLOSE_WAIT
1246/gnome-cups-man
tcp        0      0 10.100.100.101:33019    cs46.msg.sc5.yahoo:5050 ESTABLISHED
1433/gaim
tcp        0      0 sig-9-65-39-140.m:35061 d03nm119.boulder.i:1352 CLOSE_WAIT
1720/wineserver
tcp        0      0 10.100.100.101:33021    64.12.30.4:5190         ESTABLISHED
1433/gaim

私は LISTEN 状態または ESTABLISHED 状態にあるコネクションを見るのに netstat を一番頻繁に使います。LISTEN は、他のマシンからのコネクションを受け付けているシステムにおけるサービスです。ESTABLISHED は自分のマシンと他のマシンとのアクティブ・コネクションです。よく分からない何かが見えるとしたらセキュリティに関するものかもしれません。netstat にはオプションがたくさんありますので、詳細についてはコマンドラインで info netstat をタイプしてみてください。

route
route コンソール・コマンドで IP ルーティング・テーブルの表示と操作ができます。

リスト 3. route を使う
[root@cmw-t30 plugins]# route|grep -v ipsec
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
204.146.24.42   10.100.100.1    255.255.255.255 UGH   0      0        0 eth1
10.100.100.0    *               255.255.255.0   U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         10.100.100.1    0.0.0.0         UG    0      0        0 eth1

スイッチを付けずに route を使うと現在のルーティング・テーブル表示されます。route を使うと非常に高度な変更を行うこともできます。

route add default gw 10.10.10.1

上のコマンドはデフォルトの経路を追加します (他の経路が合致しなければデフォルト経路が使われます)。この経路を使うすべてのパケットは「10.10.10.1」のゲートウェイを通ります。実際にどのデバイスがその経路に使われるかは、どのように「10.10.10.1」に到達するかによります・・「10.10.10.1」への静的経路がその前に確立されている必要があります。

route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0

上のコマンドは「eth0」を経由してネットワーク 192.56.76.x に接続する経路を追加します。192.* はクラス C の IP アドレスなので、クラス C のネットマスク装飾子はここでは実際には必要ありません。「dev」もここでは省略可能です。

ルーティングは非常に内容の深い話題です。route のオプションについての全情報は info route にありますので読んでみてください。


まとめ

Linux は初めからネットワークとの接続を前提として作られています。かつてはハイエンドの企業向けにしか提供されていなかったような高度な機能を内蔵しているにもかかわらず、Linux の設定は Windows の場合と同じ程度に簡単です。Webmin や redhat-config-network、それに YAST などを使って設定をグラフィカルに行うこともできます。ifconfigroute といったコンソール・ツールを使えばコンソールから、またはスクリプトでネットワーク・パラメーターを見たり変更したりすることができます。netstat のようなツールを使えば各ネットワークの接続状態を見ることができ、またネットワーク接続と実行中のプロセスとの関係を見ることもできるのです。

参考文献

  • Windows から Linux へのロードマップシリーズの他の記事も参考にしてください。 (developerWorks, 2003年 11月)
  • オンラインの Linux Network Administrator's Guide, Second Edition Linux 環境でのネットワーク管理に関する情報源で、様々な情報がこの一カ所で得られます。Linux ネットワーク設定を操作する上で必要になる、重要な管理業務ほとんどすべてに関する情報が網羅されており、初心者にも上級者にも役に立ちます。
  • Linux Ethernet HOWTO にはどのイーサネット・デバイスが Linux で使えるか、どのように設定するかについての情報が (ハードウェアと下位レベルのドライバーに主に焦点を当てて) 掲示されています。
  • Linux Documentation Project の list of HOWTOs by category を見てもネットワーク関連のドキュメントが簡単に見つけられるでしょう。
  • Hardware Control Lists には Red Hat Hardware search page や SuSE Linux Component DataBase、それに UnitedLinux Certified and Compatible Hardware が含まれています。
  • システム・セキュリティは膨大で複雑な話題ですが、すべてが相互接続されている世界では誰にでも関係します。幸いなことにセキュリティを学ぶには、今が早すぎるわけでも遅すぎるわけでもありません。資料 Adding Security to Common Linux Distributions と Strategies for Keeping a Secure Server (先に参考文献に挙げた Linux Administration Made Easy の 12 章目です) はセキュリティを学ぶのに必ず役に立つでしょう。
  • IBM developerWorks の記事「Linux ハードウェア安定化ガイド」では潜在的なハードウェア・トラブルの診断や修理に関して説明しています。
  • IBM developerWorks の記事「Linux (または異種混合) ネットワークでのコンピューターの共用」と「ローカル・エリア・ネットワークのセットアップ」でネットワークについてさらに学んでください。
  • より良いセキュリティを使うには・・IBM developerWorks の記事「SSH での安全な接続」ではその方法を説明しています。
  • developerWorks の Linux ゾーンには、Linux 開発に関する情報が豊富にあります。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=230978
ArticleTitle=Windows から Linux へのロードマップ: 第 7 回 ネットワーキング
publish-date=11112003