ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

LinuxでLANカードを2枚使う

ゲートウェイマシンを構築するときなど、複数のネットワークカードをOSに認識させなければいけません。 そのために必要な設定を解説します。

まず、そのLANカードのドライバがカーネルに組み込まれている必要があります。 もし、ドライバがない場合は、それを組み込んでやる必要があるため、カーネルを再構築する必要があります。

そのカードのドライバが組み込まれている状態であれば、カーネル再構築は必要ありません。liloの設定をしましょう。

カーネルの再構築

/usr/src/linux
に、カーネルのソースがあります。ここで、

Linux# make menuconfig

を使ってドライバを組み込む設定にし、

Linux# make dep; make clean; make

としてmakeします。

その後、

Linux# make zlilo

を実行して、/vmlinuzを更新します。

liloの設定(デバイスの認識)

lilo(linux loader)の設定ファイル(/etc/lilo.conf)に、次の行を追加します。

append = "ether=0,0,eth1"

はじめの0はネットワークカードのIRQ、次の0はIOポートです。(双方とも0で自動認識)

PCIバスのカードの場合は、この設定でほとんど問題はないと思われますが、ISAバスのカードの場合、カードのIRQやIOを設定し、append行もそれに合わせて書き換える必要があります。

append = "ether=9,0x300,eth1"
(IRQが9、IOポートが0x300〜の場合)

大体の場合、ISAのカードの設定ツールはDOSかWIN版ですので、そのマシンをDOSのフロッピーなどから起動するか、 WINDOWSが動作するマシンにLANカードを刺して設定するのがいいでしょう。
設定ツールによっては、英語版DOSでないと動作しないものもあります。(海外製のカードに多い) この場合、英語版のDOS起動フロッピーを作成しておくか、USコマンドによって英語モードにしてから、起動する必要があります。

また、BIOSレベルでISAバスに割り当てるIRQを指定する場合もあります。BIOS設定画面はひととおりチェックしておくべきでしょう。

プラグ&プレイ機能が正しく動作しない場合もありますので、自動認識に失敗したら、マニュアル設定にしてみるのもいいでしょう。

その後、liloコマンドで設定を有効にします。
Linux# lilo

ここで、OSを再起動します。

Linux# shutdown -r 0

起動メッセージでLANカードを認識したかどうかをチェックします。 dmesgコマンドを使えば、後からゆっくり確認することもできます。

Linux# dmesg | less

rc.inet1の更新(IPアドレスの割り当て)

カードにIPを割り当てる場合には、ifconfigコマンドとrouteコマンドを使用します。 これらの設定は、スーパユーザ(root)で実行します。 起動時に設定を反映させるため、/etc/rc.d/rc.inet1に、 ifconfigコマンドとrouteコマンドを追記します。

割り当てるIPアドレスを10.0.1.254、ネットマスクを255.255.255.0、とした場合、 コマンドは以下のようになります。

/sbin/ifconfig eth1 10.0.1.254 broadcast 10.0.1.255 netmask 255.255.255.0
/sbin/route add -net 10.0.1.0 netmask 255.255.255.0 eth1

この2行を、/etc/rc.d/rc.inet1の最後に追加して再起動すれば、 2枚目のLANカードを10.0.1.254として認識します。

/sbin/ifconfig eth1 10.0.1.254 broadcast 10.0.1.255 netmask 255.255.255.0
は、そのカード(eth1として認識されている)を10.0.1.254に割り当てる。 つまり、そのカードから来た10.0.1.254宛てのデータを自分が受け取るための設定です。

また、
/sbin/route add -net 10.0.1.0 netmask 255.255.255.0 eth1
は、10.0.1.0というネットワークに対するデータは、eth1に出力する、という意味です。

netconfigコマンドを使用すると2枚目のLANカードの設定が消えてしまうことが ありますので注意が必要です。

IPアドレスのこと(概念の補足)

IPアドレスは、マシンに割り当てられているようにおもいがちですが、 実際には、マシンのネットワークインターフェイス(わかりやすく言えばLANカードとか) に対して割り当てられています。 つまり、マシンに2枚のLANカードが刺さっていれば、 そのマシンには2つのIPアドレスを割り当てることができるわけです。

通常、インストール時やnetconfig使用時などには、 rc.inet1に、eth0についてのifconfigやrouteは自動的に設定されます。

確認方法

ifconfigを使った確認方法

ifconfigコマンドをオプションなしで実行すると、現在のネットワークインターフェイスの状態を表示します。

Linux# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:216 errors:0 dropped:0 overruns:0 frame:0
          TX packets:216 errors:0 dropped:0 overruns:0 carrier:0
          Collisions:0

eth0      Link encap:Ethernet  HWaddr 00:40:33:56:7D:D4
          inet addr:210.154.87.18  Bcast:210.154.87.31  Mask:255.255.255.240
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9398 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          Collisions:0
          Interrupt:12 Base address:0xd400

eth1      Link encap:Ethernet  HWaddr 00:40:33:A0:E4:95
          inet addr:10.0.1.254  Bcast:10.0.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:13859 errors:0 dropped:0 overruns:0 frame:50
          TX packets:4845 errors:0 dropped:0 overruns:0 carrier:0
          Collisions:1
          Interrupt:10 Base address:0xd000

ここで、eth1が存在し、割り当てたIPが表示されていることを確認します。

pingを使った確認

pingは、相手ホストと接続を確認するために用いられるコマンドです。 LANケーブルを接続した状態で、目標ホストとのコネクションを確認します。

Linux# ping 10.0.1.20
PING 10.0.1.20 (10.0.1.20): 56 data bytes
64 bytes from 10.0.1.20: icmp_seq=0 ttl=32 time=1.3 ms
64 bytes from 10.0.1.20: icmp_seq=1 ttl=32 time=1.1 ms
64 bytes from 10.0.1.20: icmp_seq=2 ttl=32 time=1.1 ms
64 bytes from 10.0.1.20: icmp_seq=3 ttl=32 time=1.1 ms
64 bytes from 10.0.1.20: icmp_seq=4 ttl=32 time=1.1 ms
64 bytes from 10.0.1.20: icmp_seq=5 ttl=32 time=1.1 ms

--- 10.0.1.20 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max = 1.1/1.1/1.3 ms

これは、10.0.1.20というIPのホストに対してpingを試しているところです。 動作確認をしたいホストから、他のホストへpingを試すことと、 別のホストから試験をしているホスト(のIP)に対してpingを試すことの2通りがありますが、 後者のほうが確実でしょう。



Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp