- PR -

2枚目のNICを使ってLANサーバをDMZにも参加させたい場合のルーティングテーブル設定について(RedhatLinux)

投稿者投稿内容
@10
会議室デビュー日: 2008/10/09
投稿数: 11
お住まい・勤務地: 東京
投稿日時: 2008-10-09 12:07
2枚目のNICを使ってLANサーバをDMZにも参加させたい場合のルーティングテーブル設定について(RedhatLinux)

以下、長文失礼します
■簡単なネットワーク図

Internet

ルータ

FW―(DMZ)―[SW]―ServerD1
|          |
(LAN)       |
|        (eth1)
[SW]―(eth0)ServerL1

DMZ:10.0.0.96/28のネットワークとします。
LAN:192.168.0.0/16のネットワークとします。
FWのDMZ側のポートのIP:10.0.0.97
ServerL1のeth1に振りたいIP:10.0.0.100

※FW:ファイアウォール
※SW:L2スイッチ

■やりたいこと
ServerD1は、DMZに属している。
ServerL1は、現在LANで利用している。(eth0を利用)
ServerL1をInternetからも見る必要が出てきたので、
使用していなかったeth1から、DMZに属させたい。

ServerL1のOS:RedHatLinux。カーネルver2.4

■やったこと。
・/etc/sysconfig/network-scripts/ifcfg-eth1を記述し、
 ネットワーク再起動。GATEWAYは記述していない。
 (GATEWAYを記述したら、eth0用のデフォルトゲートウェイが
 効かなくなってしまったので外した)
 このifcfg-eth1の記述は、ifcfg-eth0の記述及び
 ServerD1のeth0の記述を参考にして書いたので、
 設定が根本的に間違っていることはないと思う。

■現在見られている現象
・ServerD1から10.0.0.0.96にPingは飛ぶ
・10.0.0.0.96からServerD1にPingは飛ぶ
・ServerD1から10.0.0.0.96にtraceroute不可
・10.0.0.0.96からServerD1にtraceroute可
・ServerD1から10.0.0.0.96にwget可
・ServerD2(上図には書いていないが、2つめのDMZ領域のサーバ)
 から10.0.0.0.96にPING不可、wget不可

■困っている点
ServerL1のルーティングテーブルのゲートウェイには、
10.0.0.96のネットワークが登場していなかったので、
DMZへのルーティング情報を登録する必要があると思い、
route add -net 10.0.0.96 netmask 255.255.255.240 gw 10.0.0.0.97 eth1
とコマンドを打つのですが、
『SIOCADDRT: ネットワークに届きません』と返事が来てしまい、
ルーティングテーブルに追加できません。
(なお、10.0.0.0.97はPING応答は切っております。関係ないかもしれませんが)

さて、InternetからServerL1のWEBページを参照する為には
何をすべきなのでしょうか。識者の皆様、ご教授をお願い致します。
(FWの設定は、ServerD1のIPと10.0.0.100で同様の扱いをするように
しているので、FWの設定ミスの可能性は低いと考えております。)

なにぶん、体系的なネットワークの勉強をしてきていないもので、
常識的なところが抜けている可能性があります。
ご指導のほど、よろしくお願いします。

_________________
非武装エリア
大ベテラン
会議室デビュー日: 2004/03/03
投稿数: 202
お住まい・勤務地: 日本・たこ部屋
投稿日時: 2008-10-09 12:51
以下を試してください。

(1) Server-L1からServer-D1へpingを実行
  ・成功 ---> (2)へ
  ・失敗 ---> Server-L1のネットワークの設定(ifcfg-eth1)ミスと思われます。

(2) ifcfg-eth1 のデフォルトゲートウェイを「10.0.0.97」として設定します。
  また、ifcfg-eth0で指定してあるデフォルトゲートウェイの指定を削除します。

(3) もし、eth0側に繋がるセグメントが複数あるなら、ルーティングしている機器(例えばFW)がいる筈です。
  そこで、それらのセグメント情報をroute add で指定します。
  このとき、gwとしてはルーティングしている機器のIPアドレスを指定します。
  eth0側が192.168.0.0/16のセグメントしか無い場合は設定不要です。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2008-10-09 12:52
こんにちは.
引用:

@10さんの書き込み (2008-10-09 12:07) より:

さて、InternetからServerL1のWEBページを参照する為には


まず,
引用:

なにぶん、体系的なネットワークの勉強をしてきていないもので、
常識的なところが抜けている可能性があります。


体系的に network の勉強をするべきだと思います.
でなければ,ServerL1 を DMZ に所属させれば良いと思います.
※小手先の方法で解決しない方が良いと思いますよ.

L1 の DMZ 側の interface で internet からの通信を受け付けるのであれば,
DMZ を設ける意味はなくなります.
ですから,DMZ を廃止してしまうのは乱暴でしょうから,
L1 を DMZ に置くのが真っ当な解決方法だと思います.

今の構成で解決するには,L1 の DMZ 側で default gateway を設定すれば良いかと.
LAN 側に他の network があるなら static route でも設定してあげれば良いでしょう.
その場合,L1 の LAN 側の interface で DMZ と通信するのは
何の意味もないことだと思います.
普通に DMZ を主の経路と見なしてしまえば良いだけでは?

繰り返しになりますが,LAN にある Server が
firewall を経由せずに DMZ の network に参加するのは
DMZ の存在意義を無にする行為だと思います.

以上,ご参考までに.
@10
会議室デビュー日: 2008/10/09
投稿数: 11
お住まい・勤務地: 東京
投稿日時: 2008-10-09 13:31
kazさん、非武装エリアさん、回答ありがとうございます。
引き続き質問させて下さい。

今、私ははL1のLAN側(ifcfg-eth0)でデフォルトゲートウェイを設定しています。
この状態から、L1のDMZ側のルーティングを追加しようとしていました。
対しておふたりは、L1のDMZ側(ifcfg-eth1)でデフォルトゲートウェイを設定して、
LAN側をroute addなりstatic routeなりで設定しろと仰っていますよね。

本質的に私のアプローチと、お二人のアプローチ(逆ですね)での、
違いがわかりません。(おそらく私に何かしらの知識が足りていないため)
どう違いがあるか教えて頂けますか?
(L1のDMZ側(ifcfg-eth1)でデフォルトゲートウェイを設定したところで、
LAN側のゲートウェイの設定の際に、
『SIOCADDRT: ネットワークに届きません』となってしまうのでは?
と思ってしまっています。)

また、static routeでルーティングを設定するのと、
route addでルーティングを設定するのに、違いはあるのでしょうか?
違いはないと思っているのですが…。

それから、そもそもなぜ現在、eth1と同一ネットワークを認識できないのか
(なぜ『SIOCADDRT: ネットワークに届きません』となってしまうのか)
がわからないのですが、これの原因は判りますでしょうか?

3点質問になってしまいましたが、引き続きご教授頂けますでしょうか。

***追記***
>L1 を DMZ に置くのが真っ当な解決方法だと思います.
確かにそうですね。この問題が解決できたら、
この方針を検討しようと思います。

>体系的に network の勉強をするべきだと思います.
こちらもその通りでございます。
時間を捻出しないと。。


>(1) Server-L1からServer-D1へpingを実行
こちらは成功します。

>(3) もし、eth0側に繋がるセグメントが複数あるなら
いえ、192.168.0.0/16のネットワークだけで、
ゲートウェイは、図のFWのLAN側ポートになります。

_________________
neu
会議室デビュー日: 2004/11/07
投稿数: 7
投稿日時: 2008-10-09 16:54
> route add -net 10.0.0.96 netmask 255.255.255.240 gw 10.0.0.0.97 eth1
本当にこの通り入力しているのであれば、
gw 10.0.0.0.97
の部分が原因ではないでしょうか。10.0.0.97では。

また、デフォルトゲートウェイをeth1(DMZ側)にしない場合(eth0にした場合、ですね)、サーバのルーティングテーブルで明示されていないNWへはデフォルトゲートウェイを経由して返すため、eth1で受信したアクセスをeth0を経由して戻すようになるのでLAN側に不要なトラフィックが流れるような気がします。

[ メッセージ編集済み 編集者: neu 編集日時 2008-10-09 18:45 ]
非武装エリア
大ベテラン
会議室デビュー日: 2004/03/03
投稿数: 202
お住まい・勤務地: 日本・たこ部屋
投稿日時: 2008-10-09 17:39
> 本質的に私のアプローチと、お二人のアプローチ(逆ですね)での、
> 違いがわかりません。(おそらく私に何かしらの知識が足りていないため)
> どう違いがあるか教えて頂けますか?

要件として、

>> ServerL1をInternetからも見る必要が出てきたので、
>> 使用していなかったeth1から、DMZに属させたい。

という部分があるからです。
インターネット上からのアクセスはどんなソースIPで来るかはその時になってみないと判りません。 ですからスタティックルーティンが設定できないのでデフォルトゲートウェイで処理させる必要がでてきます。
それと、インターネット上のクライアントは貴方の設定したL1サーバのインターネット上のIPアドレスに向かってアクセスして来るはずです。
FWの仕様によりますが、このとき、公開しているL1用サーバアドレスと、LAN側からアクセスした場合のIPアドレスに差異が発生すると、例えばクライアントは送信先アドレスと違うアドレスからサーバが発信したパケットを受けることになり正常に受信できない事になります。 
また、多分、FW自体がクライアントからのセッションに対する応答がL1サーバから無い為にセッションを廃棄することになるかと思われます。

という訳で、デフォルトゲートウェイをeth1側にする必要が出てきます。

>『SIOCADDRT: ネットワークに届きません』となってしまうのでは?

eth1のネットワーク設定が正しくできていないだけでは?
コマンドプロンプトで、

ifconfig -a

を実行してみてください。(rootでね)



[ メッセージ編集済み 編集者: 非武装エリア 編集日時 2008-10-09 17:41 ]
BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2008-10-09 19:08
私も参戦。

主張は「現在のNICのアドレス設定を変更してDMZに移設する」方式。

DMZは何の為に在るのかを考えるだけで結構です。

# 万一ServerL1が陥落したらどうなるのかを考えれば結論は明確だと思います。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2008-10-09 19:34
引用:

@10さんの書き込み (2008-10-09 13:31) より:

本質的に私のアプローチと、お二人のアプローチ(逆ですね)での、
違いがわかりません。(おそらく私に何かしらの知識が足りていないため)
どう違いがあるか教えて頂けますか?
(L1のDMZ側(ifcfg-eth1)でデフォルトゲートウェイを設定したところで、
LAN側のゲートウェイの設定の際に、
『SIOCADDRT: ネットワークに届きません』となってしまうのでは?
と思ってしまっています。)


非武装エリア様/BackDoor様お二人のお答えですべてです.
そして,それが理解できないことが
「本質的に network の仕組みを理解できていない」のだと思います.

非武装エリア様の書き込みどおり,static route が設定できない場合に
default gateway を設定するわけです.
逆に考えると,internet 上の通信する必要があるすべての network を
知覚できていれば,全部 route add して通信できるようになります.
そしてその通信をしなければならないのは LAN 側ではなく
DMZ 側なのです.

LAN 側からも DMZ 側からも同時に
「知覚できない network」と通信させなければなりませんか?
もしそうであれば,policy routing で実現できると思います.
「この network が distination の場合はこう通信する」と
それぞれの network interface に個別に定義してあげるわけです.
その場合,例えば 80/tcp は DMZ 側だけで通信して,
それ以外は LAN 側で通信するように設定するとか,
いろいろとやり方はあるわけです.

が,そもそも前述どおり,LAN/DMZ 側ともに internet と通信する必要があるのか?
という点がまず最初に検討することなのだと思います.
で,条件として「LAN 側の設定は変更できない」つまり
LAN 側に default gateway を定義しなければならないのであれば,
そもそも firewall で NAT して DMZ 側は使わなければ単純に解決します.

でも,方法論としてはそれで可能だとしても,
firewall を導入している policy を無意味にするがごときその方法は
採るべきではないでしょう.
さらに,DMZ と LAN を firewall を経ずに経由できてしまうように
L1 を構成してしまったら,そもそも firewall の存在意義はなくなるというのが
BackDoor様のご意見なわけです.

ちなみにここ
引用:

今、私ははL1のLAN側(ifcfg-eth0)でデフォルトゲートウェイを設定しています。
この状態から、L1のDMZ側のルーティングを追加しようとしていました。


は,そもそも話がおかしいわけです.
firewall へ向けて default gateway を向けているわけですから,
すでに L1 は経路情報として D1 と通信できる状態なのです.
DMZ への通信をしたいわけではなく,
あくまもで internet との通信を確立したいのですよね?
L1 の LAN 側に default gateway を向けているということは,
つまり「DMZ も含めて local 以外のすべての network」との
経路情報は事足りているわけです.
そこに DMZ と通信したいのであれば,設定の変更は必要ありません.
そして eth1 の設定を追加した場合も同じで,
DMZ に対する routing は必要ないのです.
なぜなら eth1 は DMZ を local network としているから.

ということで
引用:

・/etc/sysconfig/network-scripts/ifcfg-eth1を記述し、
 ネットワーク再起動。GATEWAYは記述していない。
 (GATEWAYを記述したら、eth0用のデフォルトゲートウェイが
 効かなくなってしまったので外した)


の()の内容はまったくもって当然の挙動で,
むしろそれが正しい方法なのです.
そして firewall の存在意義を思い返せば
引用:

繰り返しになりますが,LAN にある Server が
firewall を経由せずに DMZ の network に参加するのは
DMZ の存在意義を無にする行為だと思います.


なので,L1 は DMZ に参加させつつ LAN から切り離すべきなのです.
※最初に「DMZ に参加させるべき」と書いてしまいましたが,
※その意図は BackDoor 様とまったく同様ですので,移設が正しいです.
※その場合,eth0 を用いるか eth1 を用いるかは単なる方法論でしかありません.

長々と書いてしまいましたが,ご参考までに.

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