- - PR -
Linuxで作るファイアウォールのネットワーク構成について
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-05-08 01:12
こん**は
まだまだ勉強中の身にはとても参考になるページでじっくり拝見させて頂いています。 どうしてもわからないことがあるので教えてください。 また、質問の内容が的を得ていない場合、ご指摘頂けると幸いです。 「Linuxで作るファイアウォール[準備編]」の「図1 前提とするネットワーク」 および「表 IPアドレス一覧」でファイアウォールのeth0に「172.16.0.100」が 設定されており、これをグローバルアドレス側と表現されています。 更に仮想IPアドレスとして各サーバーに「172.16.0.x」を割り付けています。 私の記憶に間違いがなければ「172.16.0.n」はプライベートアドレスであり、 このままではインターネットからアクセスできません。 (つまりサーバーとして機能しない) Q1.仮にルーター側で「172.16.0.n」に対してグローバルアドレスを マッピングしているならこの構成でも動くと思うのですがそのような ことはどこにも記載されていませんのでルーターでの設定がないもの とすると、この構成では動かないと思われます。 なぜ、この構成で良いのでしょうか? Q2.「172.16.0.n」をグローバルアドレスに読み替えた場合、 あえて仮想IPアドレスを割り付けるのはなぜでしょうか? 各サーバーにグローバルアドレスを割り付けるなら 単に中継するだけで良いように思うのですが? Q3.ファイアーウォールのeth0にグローバルアドレスが1個だけ 割り付けられている場合でも、この構成は当てはまるのでしょうか? | ||||||||||||||||
|
投稿日時: 2002-05-08 18:53
こんにちは、藤井と申します。
その本を持っていないので、中身に関することはわかりませんが、
その通りです。というか、そういうアドレスは実際に割り当てられないでしょう。
プライベートアドレスは、仕様で決まっているので、勝手にグローバルアドレスのマッピングを変更?できません。
特に割り付ける必要はないです。本を読んでないのですが、NICに複数のIPを割り当てているのでしょうか。 割り付ける必要性があるかどうかは、公開するサービスでの設定で決めていいと思います。 具体的にいうとApacheでVirtual Hostを設定した場合、ポート番号で振り分けることもできますし、ドメインネームで振り分けることもできます。 ただ、その本での運用ポリシーがあるはずなので、それに沿う形になったのではないでしょうか。 大事なのはポリシーを決め、それに沿って運用することです。
すみません、本を持ってないので具体的にはわかりませんが、一つのIPで運用する場合、要求されたドメイン、またはポート番号で振り分けることになります。 ですのでDNSでの設定、各サービスのlistenしているポートの設定に依存します。 つまりファイアーウォールの設定というのは、ポリシーに添ってどういうネットワークにするのかを決めてから、最後につじつまを合わせる形になります。 平たくいうと管理者の自由なのですが、それがまた分かりにくいかもしれませんね。 結局、守るべきリソースを決め、それを守れていればいいのです。やりやすい方法でいいと思います。またその柔軟性こそが市販のルーターを使わず、わざわざLinuxで運用する意義かな?と思っています。 | ||||||||||||||||
|
投稿日時: 2002-05-08 19:50
藤井さん、レスありがとうございます。
失礼しました。 私が質問した元ネタはこちらのLinux Squareの記事 「第3回 Linuxで作るファイアウォール[準備編]」 http://www.atmarkit.co.jp/flinux/rensai/security03/security03a.html です。 こちらのサイトの記事でしたので会議室で質問させて頂きました。 図を見るとルーターのアドレスが「172.16.0.1」となっておりますので 多分これはインターネット側のアドレスのことだと判断しまして、 そうだとすると、この時点でおかしいのですが、これは単に例として あげたのに過ぎないと考え質問させていただきました。
「マッピング」という言葉が不適切でした。 私が言いたかったのは、「該当するグローバルアドレスに要求があった場合、 ルーターで何らかの処理により該当するプライベートアドレスのポートに 転送すればできるのでは」ということでした。 (どうすれば実現できるのかは不明ですが)
記事の図1をご参照ください。
私はADSLを固定IPアドレスで使用しサーバーを公開するべく勉強しています。 これまではグローバルアドレスが1個の場合はご指摘のような運用しかないと 思っていたのですが、記事を読むとグローバルアドレス1個でも複数のサーバーを 運用する方法があるのではと考えました。 | ||||||||||||||||
|
投稿日時: 2002-05-08 20:37
こんばんは
どこかの会議室で見かけた気がしますが、一般的に、多くの方に広く説明する 資料には、実在のアドレス=グローバルアドレスを使うのではなく、説明用の データとして、プライベートアドレスを数値に用いた、説明用の構築例にて 記述します。 これは、ゼロさんのように実際に知識がある方なら心配ないのですが、もし 万が一、中途半端な知識でのぞまれる方がいらっしゃって、説明をそのまま ルーターに叩き込んで接続された場合に、インターネット上のパケットに 混乱が生じてしまうため、解説本としての事故対策的手法です。 ちなみに、多くの場合、「プライベートアドレスだから勝手にルーターが 廃棄する」のではなく、「プライベートアドレスは、グローバルな上位に 流さないように、人間がconfigにfilterを書いて廃棄させる」ものです。 逆に、こういう場合ですが、例で行くとeth0側がグローバル相当になる わけですから、自分の持っているグローバル「側」のアドレス/マスクに 置き換えてconfigすれば、問題ないという話です。 (置き換えて考えられない方は、アドレス計画から構築そのものを、 業者に依頼されることをおすすめします。) [ メッセージ編集済み 編集者: Junbow 編集日時 2002-05-08 20:40 ] | ||||||||||||||||
|
投稿日時: 2002-05-09 13:47
こんにちは、藤井です。
すみません、てっきり書籍だと思い込んでました。ルーターのアドレスは多分例に過ぎないです。
プライベートアドレスの範囲のIPはグローバルアドレスでは使用しないので、内部のネットワークのIPとして自由に使っていいよ、というように決められているということです。 実際にその範囲のアドレスが割り振られることはないので、大丈夫でしょう。
前回に書いたようにIPアドレスで振り分ける方法のほかに、ドメイン名、ポート番号で振り分ける方法があります。 Apacheの設定で例を挙げると 外部インターフェースのアドレス:x.x.x.x 内部インターフェースのアドレス:192.168.1.1 Apacheが動いているマシンのアドレス:192.168.1.5 とすると、 ポート8080番へのアクセスを内部の80番にフォーワードする場合 iptablesの方で iptables -t nat -A PREROUTING -p TCP -d x.x.x.x --dport 8080 -j DNAT --to 192.168.1.5:80 Apacheでは Listen 8080 <VirtualHost 192.168.1.5:8080> ServerAdmin webmaster@host.some_domain.com DocumentRoot /www/docs/host.some_domain.com ServerName host.some_domain.com ErrorLog logs/host.some_domain.com-error.log CustomLog logs/host.some_domain.com-access.log common </VirtualHost> ドメインで振り分ける場合、 iptablesでは iptables -t nat -A PREROUTING -p TCP -d www.sample.com --dport 80 -j DNAT --to 192.168.1.5:80 Apacheでは Listen 80 NameVirtualHost 192.168.1.5:80 <VirtualHost 192.168.1.5:8080> ServerAdmin webmaster@host.some_domain.com DocumentRoot /www/docs/host.some_domain.com ServerName host.some_domain.com ErrorLog logs/host.some_domain.com-error.log CustomLog logs/host.some_domain.com-access.log common </VirtualHost> となるかな? 検証してないので間違ってるかもしれません。(^-^; ただ、デフォルトのポート番号以外のポート番号で振り分けるには、クライアントの方でポート番号を指定しなければいけません。ですので管理コストを考えるとドメイン名でやるのがいいと思います。 DNSも自分で管理しなければいけないので大変ですが、分かりやすいサブドメインを発行すればクライアント側での操作の負担が減り、使ってくれるようになります(すごい重要)。 | ||||||||||||||||
|
投稿日時: 2002-05-09 18:08
藤井です。あくまでも参考例でってことだったんですが、あまりに間違いが多いので訂正します。すみません。
ポート番号で分けるときのApacheの設定、sample.comを割り当てるとすると、httpd.confに Listen 8080 <VirtualHost 192.168.1.5:8080> ServerAdmin webmaster@sample.com DocumentRoot /www/docs/sample ServerName www.sample.com ErrorLog logs/sample.com-error.log CustomLog logs/sample.com-access.log common </VirtualHost> ドメインで振り分けるときのApacheの設定、sample.comを割り当てるとすると、httpd.confに Listen 80 NameVirtualHost 192.168.1.5:80 <VirtualHost 192.168.1.5:80> ServerAdmin webmaster@sample.com DocumentRoot /www/docs/sample ServerName wwww.sample.com ErrorLog logs/sample.com-error.log CustomLog logs/sample.com-access.log common </VirtualHost> の様な感じでしょうか。 まとめると、一つのIPで運用しようとすると、iptablesだけではどうしようもありません。DNSや各サービスの設定が適切にされている必要があるということですね。 | ||||||||||||||||
|
投稿日時: 2002-05-09 22:18
そのようなことなのだろうなという想像はできました。 記事にケチをつけているととられると困るのですが、前提とする読者のレベルを明確にして いないことと、特にLinuxは私のような勉強をはじめたばかりの人も多いと思いますので、 今回のようなことはある意味常識的な部分なのだとは思いますが、できればちょっと説明を していただければ誤解しなくてすむので有難いかな、と。 例えば「172.16.0.nの部分は実際にはn個のグローバルアドレスが必要」とか書かれていれば 勘違いしようがないと思うのですが。
万が一上位に流してしまっても上位で捨てるのでは? セグメントが違うので流れないとは思いますが。 ※だから流しても良いと言ってる訳ではありません。
IPアドレスがひとつで複数のサーバーを運用したいときはの場合、ポート毎に振り分ける サーバーを変更するなどの運用しかないということですね。 | ||||||||||||||||
|
投稿日時: 2002-05-10 07:59
おはようございます!
>万が一上位に流してしまっても上位で捨てるのでは? >セグメントが違うので流れないとは思いますが。 >※だから流しても良いと言ってる訳ではありません。 その「上位」の認識なんですが、最終的には、上位の 上位(多くの場合IX)に行くまでには、もちろん捨て られる「はず」です。ただ、けっこう数段上までは上って 行ってしまうこともあります。(流してしまったほうが 悪いのですが〜〜〜〜ごめんなさい>上位) インターネット上のルーターは、「デフォルトルート」を 書いてあるのが普通なので、NATでない、ただのIP転送に なっていると、セグメントが違っても、上に上がります。 (ちゃんとNATがONになってれば大丈夫ですが・・(^^ ) >IPアドレスがひとつで複数のサーバーを運用したいとき >の場合、ポート毎に振り分ける それが一番簡単ですね。ブロバンルーターでは、DMZの 機能設定あたりにはいっているやつですね。 [ メッセージ編集済み 編集者: Junbow 編集日時 2002-05-10 08:00 ] |