ゲートウェイマシンを構築するときなど、複数のネットワークカードをOSに認識させなければいけません。 そのために必要な設定を解説します。
まず、そのLANカードのドライバがカーネルに組み込まれている必要があります。 もし、ドライバがない場合は、それを組み込んでやる必要があるため、カーネルを再構築する必要があります。
そのカードのドライバが組み込まれている状態であれば、カーネル再構築は必要ありません。liloの設定をしましょう。
/usr/src/linux
に、カーネルのソースがあります。ここで、
Linux# make menuconfig |
を使ってドライバを組み込む設定にし、
Linux# make dep; make clean; make |
としてmakeします。
その後、
Linux# make zlilo |
を実行して、/vmlinuzを更新します。
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 |
カードに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アドレスは、マシンに割り当てられているようにおもいがちですが、 実際には、マシンのネットワークインターフェイス(わかりやすく言えばLANカードとか) に対して割り当てられています。 つまり、マシンに2枚のLANカードが刺さっていれば、 そのマシンには2つのIPアドレスを割り当てることができるわけです。
通常、インストール時やnetconfig使用時などには、 rc.inet1に、eth0についてのifconfigやrouteは自動的に設定されます。
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は、相手ホストと接続を確認するために用いられるコマンドです。 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通りがありますが、 後者のほうが確実でしょう。