このページでは自宅サーバー構築に必要な知識であるパケットフィルタリングポートフォワーディングについて初心者向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
通信とネットワークの基礎知識

通信とネットワーク

TCP/IPとは

TCPとUDP

上位プロトコルとポート番号

IPアドレスとは〜その1

IPアドレスとは〜その2

IPアドレスとは〜その3

回線の種類について

ISPの選択

ネットワークの構築

ルーターの設定〜その1

ルーターの設定〜その2

ドメイン名について

名前解決とネームサーバー

ダイナミックDNS


5.NAT+IPマスカレードの設定

NAT IPマスカレード の仕組みについては、 NAT+IPマスカレードの説明 で詳しく説明していますのでそちらを参考にしてください。

一般向けルーターは、初期設定でNAT+IPマスカレード機能が有効になっているのがあたりまえですから、実際には何も設定を行う必要はありません。

ただ、NAT+IPマスカレードは以下のパートで説明する パケットフィルタリング や、 公開サーバー の運用のキーとなる ポートフォワーディング の仕組みと密接に関係していますから、 NAT+IPマスカレードの説明 の説明をよくご覧になり、理解を深めておくことをオススメします。

6.パケットフィルタリングの設定

ルーター 配下の サブネット に接続している ホスト は通常、 NAT + IPマスカレード によってすべてがインターネット空間に接続可能な状態になっています。

NAT+IPマスカレードでのサブネットの動作
NAT+IPマスカレードでのサブネットの動作

図の説明のとおり、NAT+IPマスカレードで構成されたサブネットでは、 WAN 側から LAN 側へ直接 パケット が入ってくることはありません。LAN側からWAN側への要求に対する返答パケットのみ、WAN側からLAN側へ通過します。

つまり、こちらから何かを要求しない限り、WAN側から勝手にパケットが入ってくることはできないというのがNAT+IPマスカレードの特徴です。インターネットの接続にルーターを入れると安全、といわれるのは、実はこういう仕組みによるものです。

しかし、ここには大きな落とし穴があります。

例えば クライアント で使用する OS や、 アプリケーション の中には、ユーザーが操作しなくても勝手に通信を行うものがあります。

例えばOSがLAN上でファイル共有をするための確認パケットを発信したり、アプリケーションが自分自身を アップデート するためにメーカーの サーバー ログイン したり、という具合です。

この中で特に危険なのは、 WindowsOS がファイル共有のために使用するパケットです。

これに使用されるのは、 NetBIOS over TCP/IP 略称 NBT と呼ばれる プロトコル です。

NBTは、WindowsOSが動作しているパソコン同士が、コンピューター名( NetBIOS 名)と IPアドレス の情報を交換し、お互いの存在を確認しあうためのプロトコルです。

WindowsOSのファイル共有機能は、お互いを ファイルサーバー にしたり、クライアントにしたりということがとても簡単にできるように設計されています。そのため、 セキュリティ は極めて低くなっているという欠点がありますが、もともとは、 LAN内のパソコンはすべて信頼できる という前提で生まれた仕組みであるため、世の中にインターネットが普及するまでは特に問題視はされていませんでした。

ところがLANをNAT+IPマスカレードでインターネット空間に接続してしまうと、NetBIOS名とIPアドレスの情報が ゲートウェイアドレス 、つまりルーターからWAN側に流出してしまう危険性が出てきました。

WAN空間が今よりずっと平和だった頃には、これらのプロトコルはWindowsOSユーザーへのサービスとしてWAN空間を飛び交っていました。しかしこれらのプロトコルにセキュリティ上の問題が次々と見つかるようになり、悪意のある攻撃者にとっては恰好の「侵入経路」になってしまいました。結局これらのサービスがその危険さゆえ個人で使われることはほとんどなくなり、これらのプロトコルをルーターで遮断する設定は、「ルーター設定の常識」となってしまいました。

更に、 Windows2000 XP Vista 7 の場合には、NetBIOSを使わずにIPアドレスのみでファイル共有を行う「ダイレクトホスティングSMBサービス」という機能があり、これも不用意にWAN空間へ流すと危険です。

また、ファイル共有とは関係ありませんが、パソコンのリモート操作に利用される「リモートプロシージャコール(RPC)」と呼ばれるプロトコルも、同様にWAN空間への流出は好ましくありません。

このようなプロトコルのパケットは、パソコンを使っている人が意識しなくとも発信されてしまうことがあるため、なんらかの方法でLAN側からWAN側へ通さないようにする必要がありますが、一番簡単で確実なのがルーターを関所にして遮断してしまう方法です。

これがルーターによる パケットフィルタリング です。

今のところ、パケットフィルタリングで遮断しなければならないプロトコルは、上で説明したWindowsOS関連のものだけと考えて構いません、以下に一覧を示します。

プロトコル ポート番号 サービス名 コメント
TCP,UDP 135 epmap RPCに使用
TCP,UDP 137 netbios-ns コンピュータ名の名前解決に使用
TCP,UDP 138 netbios-dgm コンピュータの一覧表示に使用
TCP 139 netbios-ssn ファイル、プリンタ共有に使用
TCP,UDP 445 microsoft-ds ダイレクトホスティングSMBサービス

LAN→WANで必ず遮断しなければならないパケット一覧

ルーターの種類によっては、最初からこれらのパケットフィルタリングが設定されているものもありますし、細かいプロトコルや ポート番号 の説明が省略されて「Windows関連のパケットを遮断」のような名目で丸ごと設定できるようになっているものもあります。

実は、このパケットフィルタリングの設定は、公開サーバーの設置とは直接関係はありません。しかし、自宅のサブネットにWindowsOSのクライアント機を接続する場合は必須の設定になりますから、是非覚えておきましょう。

このページの先頭へ↑

7.ポートフォワーディングの設定

ポートフォワーディング は、 NAT + IPマスカレード で構築された LAN の内部に 公開サーバー を設置する場合、一番重要となる設定です。

WAN側からのパケット遮断のイメージ の説明のとおり、NAT+IPマスカレード環境下のLAN側に接続された ホスト機 には、 WAN 側から直接アクセスを行うことはできません。しかし、公開サーバーというからには、世界中の クライアント から直接アクセスされなければ意味がありません。つまり、ルーターのLAN側のホスト機が、直接アクセスされる環境になければならない、ということです。

DMZ :"DeMilitarized Zone"日本語で「非武装地帯」。うまい表現ですね。これは具体的な技術や設定方法を指す言葉ではなくて、多分にイメージ的なものです。色々なケースで使われるあいまいな表現なので注意してください。

これを可能にする一番簡単な方法は、通称 DMZ と呼ばれている設定です。

これは、NAT+IPマスカレードですべて遮断していたWAN側からのアクセスを、LAN側に接続した特定のホストに限って、集中して着信させる手段です。

インターネット空間からのアクセスは、ルーターのWAN側の グローバルIPアドレス 宛てでやってきますから、ルーターはそれをLAN側のプライベートIPアドレスに変換してDMZのホスト機に着信させます。つまりDMZでもきっちりNATだけは行うことになります。もちろん、外部からDMZのホスト機のプライベートIPアドレスを知ることはできません。

具体的にいうと、DMZの対象としたいホスト機に固定の プライベートIPアドレス を割り当てておき、WAN側からのすべての ポート番号 についてのアクセスを、そのプライベートIPアドレス宛てに通過させるという設定を行うことになります。

WAN側からの直接のアクセスをLAN側に受け入れるということは、悪意のある攻撃者やコンピュータウィルスの攻撃に晒されることを意味します。DMZの考え方は、攻撃に晒されるホスト機をただ一台に限定してしまい、その他のホスト機への攻撃を回避する、というものです。

ただ、「DMZ機能あり」と記載のあるルーターでも、本当の意味での「DMZによる安全確保」ができないものがほとんどです。

例えば、ローカル側が

192.168.0.0/24

で構築された サブネット の中で、

192.168.100.1:ルーター

192.168.100.102〜105:クライアント機

192.168.100.2:公開サーバー機(DMZ)

という構成になっているとします。

つまり、クライアント機は外部からの直接アクセスを受けず、サーバー機のみが外部からの直接アクセスを受けるという構成です。

この場合、外部から 直接 攻撃に晒されるのは公開サーバー機だけですから、 クライアント機 は一見安全のように思えます。しかし、もしも公開サーバー機とクライアント機が同じ種類の OS で動作していたとすると、例えば公開サーバー機がコンピュータウイルスに感染してしまった場合、同じサブネットの中にあるクライアント機は皮肉なことにその 公開サーバー機からの攻撃に晒されることなります

つまり本来ならば、クライアント機と公開サーバー機は別々のサブネットに設置しなければ、本当の意味でのDMZは構成できないことになります。

しかし実際に複数のLAN側サブネットを構築できる一般向けのルーターは稀であって、 「形だけのDMZ機能しかもたないルーター」 が多いのが実状です。

では、一般向けのルーターでは、一つのサブネットの中で、クライアント機と公開サーバー機を安全に併用する方法はないのでしょうか。

まず考えられるのが、クライアント機に WindowsOS 、サーバー機に LinuxOS という具合に、それぞれのOSの種類を変える方法です。異なるOSで共通に影響を及ぼすコンピュータウィルスはまず存在しませんから、これも良い手段のひとつです。

DMZと同様に、ポートフォワーディングでもルーターでNAT+IPマスカレードは行われます。つまりポートフォワーディングによる公開サーバー アプリケーション の設定は、そのほとんどが外部のWAN空間を対象としていながら、実際にはプライベートIPアドレスでほとんどの設定を行うことになります。不思議な話ですが。

もうひとつの方法が、DMZのように「全ての種類のパケットを一つのホスト機に着信させる」のではなく、 「必要な種類のパケットだけ特定のホスト機に着信させる」 という手段です。

これを ポートフォワーディング と呼びます。

アプリケーションが使用するポート番号 の説明のとおり、サーバー アプリケーション は特定の ポート番号 を利用しますから、公開サーバーは、DMZのように全てのプロトコルをサーバーに着信させる必要はなく、サービスに利用するのプロトコルだけを着信させるだけでよいことになります。そしてそのほうがDMZよりもずっと安全に運用できることがお分かりと思います。

例えば、 Webサーバー として運用させるだけならば HTTP でポート番号80番にだけ着信できればいいわけですし、 メールサーバー を兼用で運用するにしても、更に SMTP を25番へ、 POP3 110番へ着信させるだけでいいということになります。これがポートフォワーディングによる制御です。

ただ、ポートフォワーディングの主な利用目的は、「公開サーバーの設置」あるいは「インターネット通信ゲーム」などですから、その使用目的を頼りに、ルーターの説明書やオンラインヘルプをご覧になれば該当する設定メニューを探し出すことは難しくないでしょう。

さて、実際の設定ですが、この「ポートフォワーディング」には、決まった呼び名というものがなく、困ったことにルーターのメーカーや機種によって、その設定の呼び名が様々です。いくつかのメーカーの代表的なルーターの例を挙げてみますと、

「アドレス変換」: (株)BUFFALO

「バーチャル・サーバー」: (株)コレガ

「仮想サーバー」: (株)アイ・オー・データ機器

「静的IPマスカレード」: ヤマハ株式会社

「NATアドレス・ポート変換設定」: (株)NTT-ME

という具合です。ほんとうにバラバラです。

ただ、これらは呼び名が違うだけで、実際の設定項目についてはどれもほぼ同じです。

例えば、 WBEL CentOS で構築したメインの公開サーバーを 192.168.100.3 、同じくWBELやCentOSで構築した DNSサーバー 専用機を 192.168.100.4 、ルーターを 192.168.100.1 とした場合の設定例を以下に示しましょう。

ルーター設定例の説明のためのネットワーク図

No. WAN側IPアドレス WAN側ポート番号 プロトコル LAN側IPアドレス LAN側ポート番号
1 * 20-21 TCP 192.168.100.3 *
2 * 19727 TCP 192.168.100.3 22
3 * 25 TCP 192.168.100.3 *
4 * 53 UDP 192.168.100.4 *
5 * 80 TCP 192.168.100.3 *
6 * 110 TCP 192.168.100.3 *
7 * 8080 TCP 192.168.100.1 80

ポートフォワーディング設定値の例

WAN側IPアドレス は、固定IPアドレス契約 固定IPアドレス契約の説明 の場合には、そのIPアドレスをきちんと入力する必要がありますが、通常の可変IPアドレスの契約の場合は「IPアドレス不定」という意味の記号を入れておきます。

YAMAHA NVR500
お便利サーバー.com宅
のルーターです



NVR500のインプレッションはこちら ヤマハ NVR500 から。

この例では 「*」 になっていますが、機種によっては「自動」や「不定」、「WAN側のIPアドレス」のような選択肢になるでしょう。

1 FTP に関する設定です。

これは、WAN側から TCP による FTP(ポート番号20,21番)サービスの要求が合った場合、 "192.168.100.3" が割り当てられたホスト機にパケットを通す、という意味になります。 LAN側ポート番号 「*」 になっているのは、 「WAN側ポート番号を変更しないでLAN側に通す。」 という意味になります。

同様に、 3 6 は、メールの送信(ポート番号25)と受信(ポート番号110)のサービスに関する設定、 5 は、ホームページの コンテンツ サービス(ポート番号80)の設定です。

2 は、 SSH に関する設定ですが、 WAN側ポート番号 が、 "19727" という不可解な数字になっていることがお解りでしょうか。

SSHや TELNET など、ホスト機の遠隔操作に使われるプロトコルは、不正ログインの恰好の侵入経路です。もちろん、パスワードがきちんと設定されていれば、実際に侵入され、ホスト機を「乗っ取られる」ことはまずありませんが、そのホスト機は不正侵入を拒否するために働かなくてはなりません。

SSHは、 Well-Knownポート としてポート番号22が与えられているわけですが、そのまま正直にWAN側から22番をポートフォワーディングしてしまうと、巷に蔓延している不正侵入、いわゆる ポートスキャン の標的になってしまいます。

そこでWAN側ポート番号として、空き番号で桁数が大きなもの(この例では19727)を指定し、更にルーター内でポート番号22に変換して "192.168.100.3" に通すような設定を行っています。

つまり、侵入経路をWell-Knownポートから予測し難いポート番号に変更することで、ポートスキャンの標的になることを回避しているわけです。

4 は、「ポートフォワーディングを利用すれば、複数のホスト機を公開サーバーにできる」という例として挙げました。

この場合、ポート番号53番/ UDP という 名前解決 のためのパケットだけを、 "192.168.100.4" という、専用のDNSサーバーに着信させています。

しかしながら、WAN側ポート番号とプロトコル(TCP/UDP)のどちらも同一のパケットの場合にはLAN側の異なるホスト機に振り分けて通すことはできませんので注意してください。

7 は、ルーター "192.168.100.1" にWAN空間から、つまり自宅以外の通信環境から ログイン するための設定です。

ルーターは内部にWebサーバーを持っていて、サブネット内のホストからHTTP/80番でログインすることで設定画面を開くものが多いのですが、同じサブネットの中に同じくHTTP/80番でサービスを待ち受けている公開サーバー "192.168.100.3" が存在します。

ルーターの機種によっては、ポートフォワーディングの設定を行わなくても、最初からポート番号80番以外を利用して、WAN空間からルーターにログインできるものもあります。

そこで、WAN空間からのアクセスのとき、Well-Knownポートである80番に要求が来たときには 5 の設定で公開サーバー "192.168.100.3" に通し、8080番に要求が来たときにはルーターで80番に変換してルータ自身の設定用Webサーバー "192.168.100.1" に通す、という処理を行うための設定となっています。

DMZの場合は、外部からのパケットを受け付けられるホスト機は一台だけですが、ポートフォワーディングを利用すればLAN側に設置した複数のサーバー機を併用できますので、柔軟な構成が可能になります。

管理人おススメの
ネットワーク解説書です

ただし、例えばマンション内のインターネット接続サービスなどで、既に共用のルーターでNAT+IPマスカレードが設定されていて、最初からプライベートIPアドレスで宅内に回線が供給されるような場合があります ポートフォワーディングができないケース

こういうケースでは、共用ルーターのところでWAN側からの着信が既に遮断されてしまっていますので、宅内のルータにDMZやポートフォワーディングの設定を行っても事実上機能しません。

従って、こういう通信環境では公開サーバーの運用が不可能となります。

ルーターでのポートフォワーディングの設定は、公開サーバーの運用で最も重要な位置を占めますから、良く仕組みを理解しておきましょう。

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System