ゲートウェイ

更新日:2003.12.13
作成日:2001. 5. 6

 LAN 内のクライアントC から LANの外側のネットワーク上のサーバS(メールサーバ、FTPサーバ、ネットニュースサーバ、チャットサーバ、ゲームサーバ等々種類はいろいろ)にアクセスするときに、接続を中継するホスト(ゲートウェイG)を経由した構成でアクセスすることがある。
 ┏━━━━┓        ┏━━━━┓          ┏━━━━┓
 ┃ クライアント ┣───→┫ゲートウェイ ┣────→┫ サーバ ┃
 ┃   C    ┃  受ポート┃   G    ┃      ポート┃   S    ┃
 ┗━━━━┛        ┗━━━━┛          ┗━━━━┛
                          |
                LAN内部 ←|→ 例えばインターネット上
 ゲートウェイを使う理由はいろいろあるが、例えば下図のように、ルータ機能のない ADSLモデムに HUB をつなぎ、そこに複数のパソコンを接続したようなネットワーク構成では(セキュリティ問題はさておき)、PC1からインターネット接続すると PC2-PCn は同時にアクセスすることはできない。
 ところが、例えば PC1でゲートウェイを動作させ、PC2-PCn は PC1 をゲートウェイとして設定すればこの構成でインターネット上の例えばプロバイダのメールサーバや FTPサーバなどへの同時アクセスが可能となる。
 このようにインターネットに直接接続されたホスト(PC1)をゲートウェイにすれば、直接接続されていないホスト(PC2-PCn)もインターネットアクセスができるようになる。
 ┏━━┓
 ┃PC1 ┣─┐
 ┗━━┛  │  ┏━━┓
 ┏━━┓  └→┫    ┃  ┏━━┓
 ┃PC2 ┣──→┫HUB ┣→┫ADSL┣─→インターネット
 ┗━━┛    …┃    ┃  ┃モデム┃
    …     ┌→┫    ┃  ┗━━┛
 ┏━━┓  │  ┗━━┛
 ┃PCn ┣─┘
 ┗━━┛
 下図のように、もし ADSLモデムが複数ポートを持つルータ機能付きであれば、そこに複数の PCを接続すれば特にゲートウェイがなくても同時アクセスが可能である。ではこのような構成ではゲートウェイが使われることはないかというと、使われる場合はある。
 例えば個々の PCがインターネットにアクセスしてメールを受信すると、いずれかの PCがウイルス定義ファイルの更新を怠るとそこからウイルスが入り込んでしまうことになる。そのため、メールゲートウェイを設けそこでウイルスチェックをし、ウイルスの侵入を阻止する(ウイルスウォール)目的に使用されることがある。
 また、企業などではセキュリティの観点から社内から外部に送信されるメールのログを記録するためにメールゲートウェイを通らなければメールを社外発信できないような仕組みにすることもあるかもしれない。
 ┏━━┓
 ┃PC1 ┣─┐
 ┗━━┛  │  ┏━━┓
 ┏━━┓  └→┫ルータ ┃
 ┃PC2 ┣──→┫ 付 ┣─→インターネット
 ┗━━┛    …┃ADSL┃
    …     ┌→┫モデム┃
 ┏━━┓  │  ┗━━┛
 ┃PCn ┣─┘
 ┗━━┛
 このように、クライアントPCからゲートウェイにアクセスすることによってメールサーバ、ftpサーバなど本来のサーバにアクセスできるので、ゲートウェイはクライアントからはあたかもサーバであるかのように見える。
 しかも外部のサーバからは個々のクライアントが見えているわけではなく、ゲートウェイになっているPC1 からのアクセスがあったかのように見えるのである。

 以上は一例であって、ネットワークではいろいろなところでゲートウェイが使われていて気がつかないだけなのかもしれない。

 AN HTTPD には上記のゲートウェイ以外に、LAN外部の Webサーバへのアクセスを中継するプロクシや、ゲートウェイの一種でファイアウォールをトンネルするときなどに使われる SOCKS 機能がある。プロクシと SOCKS についてはそれぞれの説明ページを参照して欲しい。

 筆者は現在までにアナログモデム、TA、ADSLモデムと使ってきたが、一度もルータを使った経験がなく、ずっと AN HTTPDのプロクシやゲートウェイのお世話になっている。ネットワーク環境は過去には下図のような構成であり、現在は ADSLモデムに変わり PC1 では NIC二枚刺しにしているが構成は全く同じままである。
 常用している PC は下図の PC2であるが、プロクシによるインターネット上の Webへのアクセス、ゲートウェイによるプロバイダのメールサーバ利用、プロバイダのホームページへの FTP転送などで不自由を感じたことは全くなく、ありがたく AN HTTPDを利用させていただいている。

 以下ではネットワーク構成は下図のような接続であるとの前提で説明するが、この構成に限定されるわけではなくゲートウェイを使うなら考え方は同じである。

  1. AN HTTPDの設定

     PC1でAN HTTPDを起動し、プロクシタブのサーバIPアドレスPC1のプライベートIPアドレス(192.168.0.2)に設定する。ゲートウェイとしてだけ使うのであればプロクシサーバ機能にチェックはしなくてもよい。

     ゲートウェイタブでは以下のように設定する。
     メールの送受信をする場合は、SMTPとPOP3にチェックし、ホスト名欄に接続するSMTPサーバ、POP3サーバのホスト名を設定する。
     受ポート、区切文字、ポート、ユーザ名はデフォルトのまま変更しなくてもよいだろう。
     簡単に説明しておくと、「受ポート」はゲートウェイの入力側のポートであり、ゲートウェイホスト内で重複しなければ何であっても構わないが、実際には接続するサーバと同じポート番号が使用できるなら同じにしておいた方が分かり易いと思う(SMTPなら 25、POP3なら 110)。それが使えないときは、8000や 10000を足したものがよく使われるようである(例えば SMTPなら 8025や 10025、POP3なら 8110や 10110など)。
     「区切文字」はクライアントソフトで「ユーザ名@サーバ名」を設定したときに「ユーザ名」と「サーバ名」を区切る文字のことである。多くの場合「@」が使われるが一部「%」を使うソフトもある。また区切り文字が一つでは足りないときには「#」も使うことがある(使用例)。
     「ポート」は接続先のサーバで決まっているポート番号であり勝手に変えることはできない(SMTPなら 25、POP3なら 110)。特殊な事情がない限り Well-known Port と呼ばれる規定の番号が使われる。
     「ユーザ名」はユーザにゲートウェイへのアクセス許可を与えるために設定する。「*」なら「ホスト名」の全ユーザにアクセスを許可する。もし特定ユーザのみ許可したいのであればユーザ名を1行に一つずつ登録する。ただし、この設定はクライアント側のソフトでアカウントに「ユーザ名」のみを書いたときには有効であるが、「ユーザ名@サーバ名」を書かれると無効になる。
     下図は@Niftyの場合の一例である。色付けした部分はメールアカウントが一つだけの場合には無視してよい。

     複数のプロバイダと契約しているなど複数のメールアカウントがある場合には、色付けした部分のように受ポート番号を 25,110 以外にして SMTP、POP3サーバを複数設定する。この例では受ポート番号を 8000や 10000を足すのではなく、25xx、110xとした。

     上でも説明したが「ホスト名」の右側の「ポート」は接続先メールサーバのポート番号なので、複数のメールアカウントを登録したとしても(普通は)全て 25/110 にする。複数アカウントの場合のメーラの設定についてはこの下で述べる。

     FTP(ポートは通常 21)、TELNET(ポートは通常 23)を使う場合は単にチェックするだけでよく、他の設定はデフォルトから変更不要である。複数のFTP/TELNET先があったとしてもここではホストを追加しなくてもアクセス可能である。

     TELNETでは TELNET(ポート 23)以外に NNTP(NetNews。ポートは通常 119)や IRC(チャット。ポートは通常 6667)、ゲーム(東風荘とパンダネットの例)のためのポートなども設定することができる。ただ、その場合には恐らく特定のサーバにアクセスすることになると思われるので、下図の例(news, irc)のようにホスト名を登録することになるだろう。



    (注) PC1でFTPサーバが動作しているときに、FTPゲートウェイの受ポートを 21 に設定すると以下のような「Winsock error 0: FTPゲートウェイスレッドをたちあげられません」というエラーが出ることがある。これはポート番号 21 が FTPサーバとゲートウェイで重複して使用されているからであり、ゲートウェイの方の受ポートを例えば 2101 などに変更するとよい。その場合には、FTPクライアントのポート番号もそれに合わせて変更が必要になる。例えば、FTPクライアントが ffftpなら「拡張」タブの中の「ポート番号」を2101に設定する。



     また、PC1でメールサーバが動作していると「Winsock error 0: SMTPゲートウェイスレッドをたちあげられません」「Winsock error 0: POP3ゲートウェイスレッドをたちあげられません」というエラーが出ることがある。この場合も同様にゲートウェイの受ポート番号を25、110以外に設定し、Outlook Expressなどのメーラの設定もそれに合わせて変更する。

     Win2000/XPでは OS自体に SMTPサービス機能があり、それが稼動しているときにも「Winsock error 0: SMTPゲートウェイスレッドをたちあげられません」と出る。もしメールサーバは立ち上げていないのにこのメッセージが出るときは「コントロールパネル -> 管理ツール -> サービス」を確認して SMTP Service が動作していて、使用していなければ停止させる。

     上記のエラーはプロクシタブの中のサーバIPアドレスに誤りがあり、ゲートウェイタブでSMTP/POP3/FTP/TELNET にチェックしたときにも出るので、もしメールサーバやFTPサーバを起動していないときには、プロクシのサーバIPアドレスが正しいかどうかを確認する。


  2. メーラの設定
     Outlook Expressを例に、PC2、PC3で動くメーラの設定を説明する。他のメーラでも同様なので、対応する項目を適当に読み替えること。

     ツール -> アカウント -> メールのプロパティ -> サーバを下図のように設定する。
    POP3、SMTP欄はどちらもゲートウェイが動いているPCのIPアドレスである 192.168.0.2 とする。

     アカウント名欄にはゲートウェイのPOP3で設定したホストを使用するのであればユーザ名だけを書けばよい(例えば Nifty のユーザIDが abc01234 であり、POP3サーバ pop.nifty.co.jp にアクセスする場合には abc01234 とだけ書く)。
     アカウント名欄には「ユーザ名」だけでなく「ユーザ名@POP3サーバ名」(abc01234@pop.nifty.co.jp)を書いてもよい。これはメールアドレス(abc01234@nifty.co.jp)とよく似ているがメールアドレスではないので注意が必要である(プロバイダによってはたまたまメールアドレスと一致する場合もあるかもしれないが @ の後ろはあくまでも POP3サーバのホスト名である)。

     「ユーザ名@POP3サーバ名」を書いたとき、ユーザ名だけとの違いは、ゲートウェイの方で設定した POP3サーバではなくアカウント名欄に書いた POP3サーバにアクセスするという点である。すなわちゲートウェイの方に何が設定されているかは関係がなくなる(ゲートウェイ のPOP3サーバのホスト名欄は空欄でもよい)。一般的には「ユーザ名」だけではなく「ユーザ名@POP3サーバ名」を書く方がユーザには自由度があり、サーバ管理も楽になるのでお勧めする(会社などでの利用では外部へのアクセスが自由にできてしまい、管理が甘くなるのでお勧めではないかもしれないが)。

     一部のメーラ(例えば Netscape Messengerなど)では区切記号が @ や # ではなく % のものがある。そのときは「ユーザ名%POP3サーバ名」のように書き、ゲートウェイの設定で区切記号を「#@%」とする。

     接続タブの設定では「LAN」にする。

     なお、SMTPサーバ名についてはクライアント側で指定することはできず、必ずゲートウェイでの設定が必要である。



     複数のメールアカウントがある場合には、そのアカウントの詳細設定タブの SMTPとPOP3のポート番号を下図のようにゲートウェイで設定したもの(2502, 1102など)に変更する。


    (追記) SMTP, POP3の設定に関するメモを作成した。
     http://homepage1.nifty.com/yito/anhttpd/faq/mail.html

  3. FTPクライアントの設定
     ffftpを例に、PC2、PC3で動くftpクライアントの設定を説明する。

     ホスト名はゲートウェイが動いている PC1 のIPアドレスである 192.168.0.2 を設定する。
    ユーザ名欄には「FTPユーザ名@FTPサーバ名」を設定する。これもメールアドレスではない(たまたま同じになることもあるかもしれないが)ので要注意。anonymous ftpするときには、ユーザ名欄は「anonymous@FTPサーバ名」とし、パスワード欄には自分のメールアドレスを入力する。anonymousにはチェックしないこと。



    (注) この上で説明した「AN HTTPDの設定」で FTP、TELNETではホスト名は設定せずに空欄でいいと書いたが、それは接続先をゲートウェイにいちいち設定するよりも、クライアント側でホスト名を指定する方が管理が容易だからである(任意のサーバにanonymous ftpすることを考えればゲートウェイに設定しない方がいい理由が理解できるであろう)。

     ただ、これが唯一の方法というわけではなく、FTPのアクセス先が特定のサーバに決まっているようなときはゲートウェイ設定でホスト名を書いてもよい。この場合にはクライアント側では @以降FTPサーバ名の指定は省略する。上の @niftyの例では、AN HTTPDのFTPゲートウェイタブでホスト名 に ftp2.nifty.com を設定し、ffftpのユーザ名では単に abcde とすれば全く同じことである。

     FTPゲートウェイにホスト名を書いたとしても、クライアントの設定で「ユーザ名」ではなく「FTPユーザ名@FTPサーバ名」を設定すればFTPゲートウェイで設定したホスト名は意味を持たなくなる。このようにいろいろな方法があることを知った上で、管理が簡単な方法を選ぶのがいいだろう。
     このあたりの事情はこの下のTELNETでも同様である。

    (追記) ffftpは 上で説明したゲートウェイ経由以外にも SOCKS経由による方法、SOCKS+SocksCap32という方法でも LAN内のクライアントがインターネットにアクセス可能である。これについては、SOCKSの説明ページを参照のこと。いずれの方法でもできることは同じなので自分の環境に応じてどれか一つが使えれば十分であろう。


  4. TELNETクライアントの設定
     Tera Term Proを例に、PC2、PC3で動くTELNETクライアントの設定を説明する。

     Tera Term Proを起動し、Host: 欄にゲートウェイが動いているPCのIPアドレスである 192.168.0.2 を指定し、OKする。



     するとゲートウェイから (host:port) と問い合わせがあるので、「host.hoge.ne.jp:23」のように接続先の「ホスト名:ポート番号」を入力する。:port はポート番号が 23 であれば省略可能である。TELNET先のマシンに接続後、ユーザ名、パスワードなどを入力する。下図はNiftyのパソコン通信にtelnet接続したときの例である。



    (追記) ゲートウェイの他の使い方をもう一つ。

     ポートフォワーディング(Port Forwarding)と呼べばいいのかどうか?
    例えば 192.168.0.2 の PCで HTTPサーバ機能を停止し、ゲートウェイで以下の設定をする。
    --------------------------------------------------
              受ポート  区切  ホスト名         ポート
    v TELNET  80              www.yahoo.co.jp  80
    --------------------------------------------------
     クライアントから http://192.168.0.2/ にアクセスするとそのリクエストは中継されて www.yahoo.co.jp に送られ、レスポンスも中継してクライアントに返す。結果としてクライアントのブラウザには Yahoo! のホームページが表示される。すなわち http://www.yahoo.co.jp/ にアクセスしたのと全く同じことになる。

     ローカルなIPアドレスでYahoo! のホームページが表示できて何がうれしいのかと思われるかもしれないが、このような使い方で、例えば LAN環境下において他部署の強力なマシンでWebサーバを実行してもらい(80以外のポートでもよいし、バーチャルホストでもよい)、自部署の非力なマシンで構わないのでゲートウェイを実行すれば自前で Webサーバを立ち上げているように見せることができる。


  5. ゲートウェイのアクセス制御
     プロクシ等のアクセス制御はプロクシ、ゲートウェイ、SOCKSに共通に働く。そのため、例えばプロクシはLAN内からのみ許可、ゲートウェイはインターネットからもアクセスを許可というように別個にアクセス制御をしたい場合には困る。全てをインターネットからアクセス可能にすれば目的は達せられるであろうが、このような使い方はセキュリティ上問題がある。そこで解決策として、複数の AN HTTPDを起動し例えばプロクシとゲートウェイのアクセス制御を個々に設定すればセキュリティ問題をクリアできる。

     AN HTTPDを二重起動させるには、httpd.exeのショートカットを作成し、そのショートカットのプロパティのリンク先で以下のように任意の設定名(この例では gateway)をつけて起動させる。
    "C:\Program Files\httpd\httpd.exe" gateway

     最初は「サーバソケットを使用できません。他の HTTPサーバが動いていないか確認してください。あるいはポート番号を変えて下さい」というメッセージが出るが、必要なゲートウェイのみを動作させるように設定変更をすればよい。

     ちなみにインターネットからもゲートウェイを使用できるようにするには、アクセス制御の設定以外にプロクシタブのサーバIPアドレスを「0.0.0.0」にする。こうしておくと便利なこともあるが、不正アクセスの危険性も増えるので不用意に設定しないことである。


  6. インターネットからLAN内部に建てたサーバへのアクセスを中継
     ゲートウェイ(2)を参照してください。


作成:いと,mailto:gfh05223@nifty.com