ちょっと先の未来クイズ第4問

市販のBBルーターにLinuxを乗っけて遊んでいます。
ためしに、普段使っているサブネット上(192.168.11.0/24)にそのルーター(eth1)をつなぎ、そのルーターの裏側(eth0)に、実験用のサブネット(192.168.200.0/24)を設定したのですが、iptablesの扱いに慣れておらず、そのサブネット間のルーティングの方法がわかりません。

ためしに、
iptables -A OUTPUT -o eth0 -d 192.168.0.0/16 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 192.168.0.0/16 -j ACCEPT
と設定したところ、192.168.200.0/24側につながったホストからインターネットをすることはできるようになりましたが、肝心な192.168.11.0/24上のホストたちにはぜんぜんつながりません。
ちなみに、routeでの表示内容は、以下のとおりです。

# route -n
Kernel IP routing table
Destination / Gateway / Genmask / Flags / Metric / Ref / Use / Iface
192.168.200.0 / 0.0.0.0 / 255.255.255.0 / U / 0 / 0 / 0 / eth0
192.168.11.0 / 0.0.0.0 / 255.255.255.0 / U / 0 / 0 / 0 / eth1
0.0.0.0 / 192.168.11.254 / 0.0.0.0 / UG / 0 / 0 / 0 / eth1

“技術者向け”掲示板ではありますが、この初歩的な質問にお答えいただける方、よろしくお願いします。

A 回答 (2件)

 うう~ん。

何も無しか・・・・。なんでだろう。

 ANo.1でいう(d)と(c)がRIPでやりとりしている可能性は・・・・無いよなぁ。イマドキそんなプロトコルが何も設定せずに動き出しているとは思えない。

 まぁ、とにかくネットがつながるというのは、IPパケットが「行って」「戻ってきている」からで、IPパケットが複数のセグメントをまたがる時は、正しい中間あて先(デフォルト以外のルータ)へ届ける必要があるという大原則と照らし合わせて各状況の理由を考えていただければ。

 今回はお役に立てず申し訳ない。(A)と(B)が通信できないのはANo.1の方法を試していただいて、なぜ今のような状況になっているのかがどうしても分からなければ、また別口でもっと凄腕の回答者に質問していただきたい。その時、インターネットから各セグメント(IPサブネット)がどのようにつながっているのか模式図があればなお良いと思います。
    • good
    • 0
この回答へのお礼

(c)のWAN側(つまり192.168.11.0/24につながっている側)では、DHCPクライアントが動作していて、そいつが一応、デフォルトゲートウェイのアドレスとして、(d)のアドレスを取得しているのは確かです。関係ありますかねぇ?

お礼日時:2006/12/01 20:40

環境を以下のように仮定する



Internet
 |
Inet用BBルータ(d)
[254]
 |
(A)192.168.11.0/24-[200] 試験サーバ(a)
 |
[253]
LinuxBBルータ(c)
[254]
 |
(B)192.168.200.0/24-[200] 試験クライアント(b)

凡例:
 [IPアドレスの下1つ]
 (ホストまたはネットワーク) ※大文字がネット、小文字がホスト

(b)から(a)に接続できない理由は、(a)が(b)のあて先を知らないからだ。
つまり、
「(b)→(a)パケット」が(b)→(B)→(c)に飛ぶ(これは(b)にとって(c)がデフォルトルータだから)
「(b)→(a)パケット」が(c)→(A)→(a)に飛ぶ(同一セグメントだから)
「(a)→(b)パケット」が・・・・(a)が(B)用のルータが分からないのでデフォルトルータ(d)に飛ばす
「(a)→(b)パケット」を(d)が破棄。
という風に、(a)が(B)へのルーティングには(c)を使わないといけないという事を知らないために、
デフォルトルータである(d)に投げているんだな。

という事で(a)に(B)用のルーティングエントリを追加する。
[root@b /] # route add 192.168.200.0 255.255.255.0 gw 192.168.11.253
これで、(a)→(B)のパケットが(a)→(c)→(B)と飛ぶようになる。


ところで、何か理屈がおかしいような気がする。
私が説明した内容だと、(b)はインターネットもできてはおかしい。
(a)と同様に、(d)も(b)のあて先が分からないからだ。
(c)にこんな設定が無いか確かめて欲しい。コマンドは iptables -t nat -L だ。

[root@c /] # iptables -t nat -L
POSTROUTING
(hogehoge) in=eth0 out=eth1 dist=!10. !127. !172.16. !192.168. MASQUERADE

こんな風に「eth0から入力されてeth1に出ていくパケットはMASQUERADE」という設定が無いだろうか。
しかもプライベートアドレスに対しては無効にするような。
でないと状況の説明がつかんような気がするんよね。もう少し詳しい状況説明が欲しいな。
    • good
    • 0
この回答へのお礼

# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

こうなっています。

お礼日時:2006/11/30 14:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報