logo7

 Allergy Design Office > LinuxとWindowsによるネットワークの構築

LinuxとWindowsによるネットワークの構築

 予想以上に利用されているこのページ。LinuxとWindowsによるネットワークの構築について紹介します。また、デバッグ環境として使用する場合に重要な、telnetおよびftpの設定についてもここで書きます。
  1. Windowsマシンをダイヤルアップルータに
  2. Windowsマシンをダイヤルアップルータに(Win2K編)
  3. Linuxマシンにtelnetする
  4. Linuxマシンにftpする
  5. samba
  6. apache

ibm.com スペシャル・キャンペーン情報

●Windowsマシンをダイヤルアップルータに

 我家にはいくつかマシンがありますが、通常使用するのはメインのWindowsマシンです。他にちょっと作ってみたLinuxマシン等があります。仕事ではUNIXに携わることが多いため、Linuxマシンはどうしても必要です。当然、この2台はネットワークで相互に接続する必要があります。そこで、Linuxマシンの稼動を機に、ネットワークも導入しました。実はWindows95が出た頃にもネットワークを組んだことがあるのですが、一人でネットワークを組んでもむなしいものがあったので、自宅ではしばらくスタンドアロンで使用していました。しかしながら、今後の仕事の方向性をネットワークを中心に考えることになり、再び自宅でもネットワークを組みたくなりました。そうなると必然的に2台のマシンから同時にインターネット等をしたくなります。そこでWindowsマシンをダイヤルアップルータにしようという訳です。

 本来ならばLinuxをダイヤルアップルータにしたほうが本格的なものができますが、印刷やTA(何れもUSB接続)のことを考えると今後もWindowsマシンがメインとなりますので、これを中心に考えざるを得ません。そこで、Windowsの「インターネット接続の共有」(以下ICS)を利用することにしました。(最初に試したときはメインマシンのOSはWindows98SEだったのですが、諸般の事情により現在はWindows2000に変わっています。)ところが、ICSに関して、設定方法などのドキュメントがインターネットを使ってもぜんぜん見つかりません。ICSで作成するクライアントの設定用フロッピーを使用した方法は見つかりましたが、当然これはLinuxマシンには使えません。

 仕方がないのでとりあえずチャレンジすることにしました(?)。問題となるのはLinux側の設定ですが、やることはデフォルトゲートウェイとDNSの設定ぐらいで、理屈が分かっていればそれほど難しくありません。デフォルトゲートウェイは192.168.0.1(WindowsマシンのIPアドレス)に設定します。DNSはインターネット側のIPアドレスを設定します。(Win2K編もご参照ください。)こうすることにより、インターネット宛てのパケットが、Windowsマシンを通してインターネット側に流ようとし、Windowsマシンが回線を接続します。



 まず両方のマシンにネットワークカードをセットアップし、お互いにping等で接続を確認しておきます。私は今回はハブを使用せずに、ケーブルはストレートで、クロス接続用のアダプタを使用しました。しかし、新しく用意する場合は、クロス接続用のケープルを買ったほうが安価です。もちろんハブを用いても問題ありません。IPアドレスはWindowsマシンが192.168.0.1、Linuxマシンが192.168.0.2で静的に設定します。ICSはDHCPを使用が前提となっていますが、ここでは、静的に設定してます。Windows98SEのICSは、レジストリを変更することでDHCP機能を無効にすることが可能です。このあたりはマイクロソフトのサポート技術情報J050580あたりに詳しい情報が載っています。

 次にLinuxマシンのデフォルトゲートウェイを192.168.0.1(Windowsマシン)に設定します。DNSはインターネット側(プロバイダから連絡されたDNS)のIPアドレスを設定します。ブラウザは直接接続する(プロキシを使用しない)設定にします。turbonetcfgを使用すると良いでしょう。デフォルトゲートウェイの設定はrouteコマンドで確認できます。

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

 デフォルト(0.0.0.0)の送信先が192.168.0.1であることが分かります。ブラウザを開いて適当なサイト(例えばwww.yahoo.co.jpとか)にアクセスしてください。パケットがゲートウェイであるWindowsマシンに流れ、Windowsマシンではインターネット側のアドレス宛てパケットなので、回線を接続します。ウチのTAでは接続に行くと液晶ディスプレイ部が光り、接続したことが分かります。指定したサイトが表示されれば成功です。尚、切断は自動では行われないので、Windowsマシン側で予め切断タイマを設定しておくか、手動で行います。これは本物のダイヤルアップルータでも同じで、ルータ側では切断するタイミングを拾うことができないためです。

 これで複数マシンによる同時インターネット接続環境が構築できました。もちろん、DHCPを使用するネットワークも構築できます。その場合はWindows側の設定は変更せずに、Linux側でDHCPを使用する設定にすれば良い訳です。それにしてもネットワーク用の機器は安くなりましたね。私が95年頃、最初にネットワークを導入したときは当然10BaseTの機器ばかりで結構な値段がしたものです。その当時、家庭でネットワークを組んでいると言ったら、ほとんど変人扱いされました。それがいまや100BaseTのネットワークカードもハブも数千円で手に入ります。良い時代になりました。

●Windowsマシンをダイヤルアップルータに(Win2K編)

 Windows2000にもICSがあります。使い方は98SEと同じですが、Windows2000のほうはDHCP機能を無効にする方法を見つけることができませんでした。また、DHCPで割り当てるアドレスの範囲指定もできないようです。ですので、LinuxマシンのほうはIPアドレスを192.168.0.2から、DHCPで取得する設定に変更する必要があります。

 また、現在はLinuxマシンのDNS設定を192.168.0.1にしています。これはICSがDNS機能も持っているためです。つまり、Windows1がDNSの役割を果たしており、名前解決できなければ、自動的により上位のDNSに問い合わせるため、プロバイダのDNSは特に意識する必要がありません。これはおそらく98SEにも当てはまるはずですが、もはやW98SEのマシンがなく、試すことができません。

 turbonetcfgでeth0の設定をUse DHCPに変更します。

 変更を有効にするため、マシンをリブートするか、eth0を一度downしてupします。

●Linuxマシンにtelnetする

 仕事で使うとなるとやはりtelnetは外せないでしょう。ところがTurbo Linux6.0に変えてからなぜかtelnetできません。pingは問題ないのに何の反応もしてくれないのです。4.0の時は何の問題もなくtelnetできました。これを最初にやろうとしたときは多忙で結局断念してしまいましたが、その後の調査で6.0からはセキュリティーの強化のため、デフォルトではtelnetできない設定になっているとのこと。

 具体的にはTurbo Linuxではtelnet等のサービスを提供するためにinetdというスーパーデーモンを使用していて、こいつの設定ファイルであるinetd.confでtelnetがコメントアウトされていること。そしてさらにinetdとtelnetデーモンの間にTCP Wrapperというものがいて、その設定ファイルであるhosts.allowとhosts.denyでローカル(127.0.0.1)以外のアドレスは拒否になっていること。の2点が分かりました。

 まず/etc/inetd.confを開いて「telnet」で検索し、コメントアウトを外します。

telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd -h

次に/etc/hosts.allowにtelnetしたい端末のIPアドレスを記述します。

ALL : 127.0.0.1
ALL : 192.168.0.1

こうすることで/etc/hosts/denyですべて拒否になっている設定に/etc/hosts.allowで穴をあけることができます 。ほかにもネットワークアドレスで許可できたり、

ALL : 192.168.0.

すべてのIPアドレスからの要求を許可できたりします。

ALL : ALL

修正が完了したらデーモンを再起動する必要があります。コマンドラインかturboserviceでinetdを停止して起動するか、設定ファイルの読み直しを指示します。

 これでできるだろうと思いましたがまだできません。なんとrootではtelnetできないようです。rootになる場合は一般ユーザで入ってsuしましょう。直接rootで入ることも設定次第でできるようです。一般ユーザのアカウントを作成し、ようやくtelnetすることができました。

 ちなみにtelnetクライアントはteratermを使用しています。やっぱりこれが定番でしょうな。ま、不満は多少ありますが。

●Linuxマシンにftpする

 telnetと同じく/etc/inetd.confを修正し、ftpを有効にします。
ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  in.ftpd -l -a

それだけで良いと思いましたがまたまたftpできません。(この時点でかなりLinuxが嫌いになっていました。)anonymousではftp可能なのですが、Linuxで新たに作成したアカウントではなぜかftpできないのです。試行錯誤した挙句、入れなかったアカウントをftpグループに含めたらうまくいきました。そういうものなのでしょうか?とりあえずこれでうまくいったので深追いはしていません。

 ちなみにftpクライアントはffftpを使用しています。私が最初にWindows2000で使用し始めたころは、複数ファイルを指定して転送するとプログラムが落ちていましたが、バージョンアップしてこれも解消されたようです。(作者の方が認識されているかどうかは分かりません)いまではすっかりお気に入りで、自宅と会社で活用しています。

●samba

 Sambaは非常に簡単です。/etc/smb.confを少しいじってsmbdを立ち上げるだけです。私はinetdから起動する設定にしました。以下の例ではADOというワークグループ内で、publicというフォルダを公開します。
[global]
    workgroup = ADO
[public]
        comment = Public Space
        path = /home/samba
        guest ok = yes
        writable = ok
        force group = public
        force create mode = 0664
        force directory mode = 0775

 次にinetd経由で起動させるために/etc/inetd.confを開いて、以下の2行を追加します。

netbios-ssn     stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/smbd
netbios-ns      dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/nmbd

 設定が済んだら、以下のコマンドを入力するか、turboserviceでinetdを停止して起動してください。

/usr/sbin/inetd restart

●apache

 Apacheも非常に簡単です。単に立ち上げるだけならば、turboserviceでhttpdを起動するかまたは以下のコマンドを入力します。
/etc/rc.d/init.d/httpd start

更にLinux起動時に自動的にhttpdを立ち上げたい場合、以下のコマンドを入力します。

/sbin/chkconfig --add httpd

 これで/home/httpd/htmlのindex.htmlが公開されます。デフォルトでは各国語版のindex.htmlが用意されています。で、終わるはずだったのですが、実は最初は立ち上がってくれませんでした。そのまま3日ぐらい悩みましたが、エラーログを見たら一発で分かりました。エラーログは/etc/httpd/logs/error_logです。どうやら自分のホスト名が解決できずにhttpdが起動しなかったようです。/etc/hostsファイルに自分のホスト名を記述したら起動してくれました。実はGNOMEを立ち上げたときにも同じようなことを言ってきていましたが、ずっと無視していました。「警告はちゃんと調べましょう」という教訓でした。


Copyright(C) 2001-2003 Allergy Design Office All rights reserved.

[Home]