- PR -

Linuxで作るファイアウォールのネットワーク構成について

投稿者投稿内容
田中
ベテラン
会議室デビュー日: 2002/05/08
投稿数: 54
投稿日時: 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/07
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2002-05-08 18:53
こんにちは、藤井と申します。

その本を持っていないので、中身に関することはわかりませんが、

引用:

ゼロさんの書き込み (2002-05-08 01:12) より:

私の記憶に間違いがなければ「172.16.0.n」はプライベートアドレスであり、
このままではインターネットからアクセスできません。
(つまりサーバーとして機能しない)



その通りです。というか、そういうアドレスは実際に割り当てられないでしょう。


引用:

Q1.仮にルーター側で「172.16.0.n」に対してグローバルアドレスを
マッピングしているならこの構成でも動くと思うのですがそのような
ことはどこにも記載されていませんのでルーターでの設定がないもの
とすると、この構成では動かないと思われます。
なぜ、この構成で良いのでしょうか?



プライベートアドレスは、仕様で決まっているので、勝手にグローバルアドレスのマッピングを変更?できません。


引用:

Q2.「172.16.0.n」をグローバルアドレスに読み替えた場合、
あえて仮想IPアドレスを割り付けるのはなぜでしょうか?
各サーバーにグローバルアドレスを割り付けるなら
単に中継するだけで良いように思うのですが?



特に割り付ける必要はないです。本を読んでないのですが、NICに複数のIPを割り当てているのでしょうか。

割り付ける必要性があるかどうかは、公開するサービスでの設定で決めていいと思います。

具体的にいうとApacheでVirtual Hostを設定した場合、ポート番号で振り分けることもできますし、ドメインネームで振り分けることもできます。

ただ、その本での運用ポリシーがあるはずなので、それに沿う形になったのではないでしょうか。

大事なのはポリシーを決め、それに沿って運用することです。

引用:

Q3.ファイアーウォールのeth0にグローバルアドレスが1個だけ
割り付けられている場合でも、この構成は当てはまるのでしょうか?



すみません、本を持ってないので具体的にはわかりませんが、一つのIPで運用する場合、要求されたドメイン、またはポート番号で振り分けることになります。

ですのでDNSでの設定、各サービスのlistenしているポートの設定に依存します。

つまりファイアーウォールの設定というのは、ポリシーに添ってどういうネットワークにするのかを決めてから、最後につじつまを合わせる形になります。

平たくいうと管理者の自由なのですが、それがまた分かりにくいかもしれませんね。

結局、守るべきリソースを決め、それを守れていればいいのです。やりやすい方法でいいと思います。またその柔軟性こそが市販のルーターを使わず、わざわざLinuxで運用する意義かな?と思っています。
田中
ベテラン
会議室デビュー日: 2002/05/08
投稿数: 54
投稿日時: 2002-05-08 19:50
藤井さん、レスありがとうございます。


引用:

その本を持っていないので、中身に関することはわかりませんが、



失礼しました。
私が質問した元ネタはこちらのLinux Squareの記事
「第3回 Linuxで作るファイアウォール[準備編]」
http://www.atmarkit.co.jp/flinux/rensai/security03/security03a.html
です。
こちらのサイトの記事でしたので会議室で質問させて頂きました。
図を見るとルーターのアドレスが「172.16.0.1」となっておりますので
多分これはインターネット側のアドレスのことだと判断しまして、
そうだとすると、この時点でおかしいのですが、これは単に例として
あげたのに過ぎないと考え質問させていただきました。


引用:

プライベートアドレスは、仕様で決まっているので、勝手にグローバルアドレスのマッピングを変更?できません。



「マッピング」という言葉が不適切でした。
私が言いたかったのは、「該当するグローバルアドレスに要求があった場合、
ルーターで何らかの処理により該当するプライベートアドレスのポートに
転送すればできるのでは」ということでした。
(どうすれば実現できるのかは不明ですが)

引用:

特に割り付ける必要はないです。本を読んでないのですが、NICに複数のIPを割り当てているのでしょうか。


記事の図1をご参照ください。

引用:

本を持ってないので具体的にはわかりませんが、一つのIPで運用する場合、要求されたドメイン、またはポート番号で振り分けることになります。



私はADSLを固定IPアドレスで使用しサーバーを公開するべく勉強しています。
これまではグローバルアドレスが1個の場合はご指摘のような運用しかないと
思っていたのですが、記事を読むとグローバルアドレス1個でも複数のサーバーを
運用する方法があるのではと考えました。
Junbow
ぬし
会議室デビュー日: 2002/01/24
投稿数: 373
お住まい・勤務地: saga.jp
投稿日時: 2002-05-08 20:37
 こんばんは
 どこかの会議室で見かけた気がしますが、一般的に、多くの方に広く説明する
資料には、実在のアドレス=グローバルアドレスを使うのではなく、説明用の
データとして、プライベートアドレスを数値に用いた、説明用の構築例にて
記述します。
 これは、ゼロさんのように実際に知識がある方なら心配ないのですが、もし
万が一、中途半端な知識でのぞまれる方がいらっしゃって、説明をそのまま
ルーターに叩き込んで接続された場合に、インターネット上のパケットに
混乱が生じてしまうため、解説本としての事故対策的手法です。
 ちなみに、多くの場合、「プライベートアドレスだから勝手にルーターが
廃棄する」のではなく、「プライベートアドレスは、グローバルな上位に
流さないように、人間がconfigにfilterを書いて廃棄させる」ものです。
 逆に、こういう場合ですが、例で行くとeth0側がグローバル相当になる
わけですから、自分の持っているグローバル「側」のアドレス/マスクに
置き換えてconfigすれば、問題ないという話です。
 (置き換えて考えられない方は、アドレス計画から構築そのものを、
業者に依頼されることをおすすめします。)


[ メッセージ編集済み 編集者: Junbow 編集日時 2002-05-08 20:40 ]
ふじい
大ベテラン
会議室デビュー日: 2002/05/07
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2002-05-09 13:47
こんにちは、藤井です。

引用:

失礼しました。
私が質問した元ネタはこちらのLinux Squareの記事
「第3回 Linuxで作るファイアウォール[準備編]」
http://www.atmarkit.co.jp/flinux/rensai/security03/security03a.html
です。
こちらのサイトの記事でしたので会議室で質問させて頂きました。
図を見るとルーターのアドレスが「172.16.0.1」となっておりますので
多分これはインターネット側のアドレスのことだと判断しまして、
そうだとすると、この時点でおかしいのですが、これは単に例として
あげたのに過ぎないと考え質問させていただきました。



すみません、てっきり書籍だと思い込んでました。ルーターのアドレスは多分例に過ぎないです。



引用:

「マッピング」という言葉が不適切でした。
私が言いたかったのは、「該当するグローバルアドレスに要求があった場合、
ルーターで何らかの処理により該当するプライベートアドレスのポートに
転送すればできるのでは」ということでした。
(どうすれば実現できるのかは不明ですが)



プライベートアドレスの範囲のIPはグローバルアドレスでは使用しないので、内部のネットワークのIPとして自由に使っていいよ、というように決められているということです。

実際にその範囲のアドレスが割り振られることはないので、大丈夫でしょう。


引用:

私はADSLを固定IPアドレスで使用しサーバーを公開するべく勉強しています。
これまではグローバルアドレスが1個の場合はご指摘のような運用しかないと
思っていたのですが、記事を読むとグローバルアドレス1個でも複数のサーバーを
運用する方法があるのではと考えました。



前回に書いたように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/07
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 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/08
投稿数: 54
投稿日時: 2002-05-09 22:18
引用:

Junbowさんの書き込み ( 2002-05-08 20:37) より:
一般的に、多くの方に広く説明する
資料には、実在のアドレス=グローバルアドレスを使うのではなく、説明用の
データとして、プライベートアドレスを数値に用いた、説明用の構築例にて
記述します。
 (中略)
もし万が一、中途半端な知識でのぞまれる方がいらっしゃって、説明をそのまま
ルーターに叩き込んで接続された場合に、インターネット上のパケットに
混乱が生じてしまうため、解説本としての事故対策的手法です。


そのようなことなのだろうなという想像はできました。
記事にケチをつけているととられると困るのですが、前提とする読者のレベルを明確にして
いないことと、特にLinuxは私のような勉強をはじめたばかりの人も多いと思いますので、
今回のようなことはある意味常識的な部分なのだとは思いますが、できればちょっと説明を
していただければ誤解しなくてすむので有難いかな、と。
例えば「172.16.0.nの部分は実際にはn個のグローバルアドレスが必要」とか書かれていれば
勘違いしようがないと思うのですが。

引用:

Junbowさんの書き込み ( 2002-05-08 20:37) より:
ちなみに、多くの場合、「プライベートアドレスだから勝手にルーターが
廃棄する」のではなく、「プライベートアドレスは、グローバルな上位に
流さないように、人間がconfigにfilterを書いて廃棄させる」ものです。


万が一上位に流してしまっても上位で捨てるのでは?
セグメントが違うので流れないとは思いますが。
※だから流しても良いと言ってる訳ではありません。


引用:

ふじいさんの書き込み (2002-05-09 18:08) より:
まとめると、一つのIPで運用しようとすると、iptablesだけではどうしようもありません。DNSや各サービスの設定が適切にされている必要があるということですね。



IPアドレスがひとつで複数のサーバーを運用したいときはの場合、ポート毎に振り分ける
サーバーを変更するなどの運用しかないということですね。

Junbow
ぬし
会議室デビュー日: 2002/01/24
投稿数: 373
お住まい・勤務地: saga.jp
投稿日時: 2002-05-10 07:59
おはようございます!

>万が一上位に流してしまっても上位で捨てるのでは?
>セグメントが違うので流れないとは思いますが。
>※だから流しても良いと言ってる訳ではありません。

 その「上位」の認識なんですが、最終的には、上位の
上位(多くの場合IX)に行くまでには、もちろん捨て
られる「はず」です。ただ、けっこう数段上までは上って
行ってしまうこともあります。(流してしまったほうが
悪いのですが〜〜〜〜ごめんなさい>上位)
 インターネット上のルーターは、「デフォルトルート」を
書いてあるのが普通なので、NATでない、ただのIP転送に
なっていると、セグメントが違っても、上に上がります。
(ちゃんとNATがONになってれば大丈夫ですが・・(^^ )

>IPアドレスがひとつで複数のサーバーを運用したいとき
>の場合、ポート毎に振り分ける

 それが一番簡単ですね。ブロバンルーターでは、DMZの
機能設定あたりにはいっているやつですね。


[ メッセージ編集済み 編集者: Junbow 編集日時 2002-05-10 08:00 ]

スキルアップ/キャリアアップ(JOB@IT)