河原です。 わたしも、似たような入れ子ネットワークを 組んだことがあります。 クリーンにネットワーク設備を 構築できるんなら、こんなややこしいことをしたくなく、 また、出来てもセキュリティ面ではやっかいな事柄が ありますが、そうはいえども設備の事情でこういう事態に なることもあるわけですな。。。 Hisashi.Chiba. さんは書きました: > ##172.16.2.0/24(LAN2)設定(不可はコメント化する) > # 192.168.0.0/24(LAN0)は許可 > iptables -t nat -A POSTROUTING -s $eth2_seg -o eth0 -j MASQUERADE > # 10.0.1.0/24(LAN1)は不可 > # iptables -t nat -A POSTROUTING -s $eth2_seg -o eth1 -j MASQUERADE > ネットワークの双方向のマスカレーディングって、 不便ではないのではないでしょうか? プロトコルに よっては、これでは使用不能になります。ファイル 共有なんかは、双方向に両方ともアドレスの付け替えが 行われてしまうので、つながらないでしょう。 HTTP だけならこれでも動くことは動きますが。 拝見したところ、ローカルアドレスを割り当てている 各LANでローカルアドレス範囲が重複しているところが ないので、それだったら、わたしならばマスカレードは 使わず(唯一外部に出るADSLルーターのところだけで マスカレードし) それ以外は全部 REDIRECT か ルーティングテーブルで対処するところです。 …(図のVine-4.2マシン上で -j MASQUERADE は 登場させないという意味) route コマンドで各ネットワークへのインタフェース を定義し(この場合はデフォルトのままでは駄目 でしょうからdefault_route に頼らず、全部の方向への ルーティングテーブルを手書きします)、その上で LAN2 (eth1) 方向からの FORWARD を REJECT する iptables のルールを加えます。 FORWARD のルールは INPUTを通らないので、INPUTは許し、FORWARDは 認めないことは簡単にできます。 LAN内にグローバルアドレスも混在しているとのこと でしたが、ルーティングテーブル的にはローカルアドレスと グローバルアドレスの違いは全く存在しないので、 アドレスが重なっていなければすべて対処できます。 DNSサーバーはこの場合、Vine-4.2機上で稼動させる 必要があります。 他の場所だと eth1 からの 接続はブロックされてしまうルールだからです。 でも、マスカレードすると面倒なことになるけど、 ただのルーティングであれば、普通のキャッシング ネームサーバー設定でうまく動いてくれると思います。 あと、馬場崎さんの提案にある ルーティングテーブルに 頼らないでsquid 透過プロキシーで対処する手も 確かにあると思います、、、実は私の好みの方法では ないのですが、これも良い手の一つかとは思います。 open proxy化してしまう設定ミスをしないように 気をつけてください…ということです。 具体的な設定方法を書いて見せようかと思ったりは したのですが、細かい条件で千差万別に変化するし route コマンドの使い方ぐらいは分かるのかなと 思いましてやめました。 (あと私の時間切れの 都合もありまして) ポイントは、default_route はインターネット上にある グローバルアドレス向けのみとし、それ以外の全部の routeをすべて手書きすることです。 ローカルアドレス 同士では、どっちが上流ということはないから、 これは当たり前のことですが、一度、ルーティング テーブルを書いてみれば分かるでしょう。 -- たろかわ