- - PR -
iptablesでのポートフォワーディング
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-09-08 11:38
iptablesを使ってhttpのポートフォワーディング(DNAT)を試みているのですが、何故かうまくいかない状態です。
■やりたいこと Webブラウザで、FWサーバ(http://192.168.3.100:8000/)にアクセスした時に、Webサーバ(http://192.168.3.201:80/)へのアクセス時と同様のページを表示させたい。 ■環境 * FWサーバ(192.168.3.100) OS: Scientific Linux 4.4 iptables: 1.2.11 新規で構築したサーバで、他に仕事をさせる予定はないです。 * Webサーバ(192.168.3.201) OS: CentOS 5.2 Apache: 2.2 httpd.confにて "Listen 80" および "NameVirtual *:80" が指定されており、LAN内に限定してWebページを開放しています。 ■試したこと FWサーバにて以下のようなシェルスクリプトを組んで、root権限で実行しました。 #!/bin/sh echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -F -t nat iptables -t nat -A PREROUTING -p tcp -d 192.168.3.100 --dport 8000 -j DNAT --to-destination 192.168.3.201:80 iptables -A FORWARD -p tcp -d 192.168.3.201 --dport 80 -j ACCEPT その後に、同一セグメント上のクライアントPCから、Firefox3.0.1で "http://192.168.3.100:8000/" へアクセスしたのですが、「正常に接続できませんでした」と表示されてしまいました。 念のため、FWサーバからプロンプトで # telnet 192.168.3.201 80 としたところ、レスポンスがあったので、HTTP1.1に基づいてリクエストヘッダを入力したところ、HTTPレスポンス及びボディ(HTML)が返って来ました。 上記の内容をもとに、不足箇所のご指摘を頂きたいと思います。 宜しくお願いします。 [ メッセージ編集済み 編集者: ytnobody 編集日時 2008-09-08 12:06 ] |
|
投稿日時: 2008-09-08 15:21
こんにちは。
PREROUTING チェインで DNAT 変換させているので, POSTROUTING チェインにて SNAT 変換させる必要があるのではないでしょうか。 iptables はあんまり使わないので, 勘違いなことを言っていたらすいません。 |
|
投稿日時: 2008-09-08 15:47
>うっちーさん
こんにちは。ご教示ありがとうございます。 SNATですか、なるほど。 iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE を、「iptables -t nat -A PREROUTING ... 」の後に加えて、試してみます。 |
|
投稿日時: 2008-09-08 16:06
iptables -A FORWARD -i eth1 -o eth0 -s $192.168.3.100 --dport 8000 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 確かchain(filter)は全部で三つありましたよね。 FORWARDの設定が抜けています。 あと、帰り道も用意しておかないとeth0のところでストップします。 |
|
投稿日時: 2008-09-08 16:07
同じネットワークのクライアントから繋げているのではないですか?
ここにズバリな解答が書いてあります。 http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/dnattarget.html |
|
投稿日時: 2008-09-08 16:32
皆さん、ご教示ありがとうございます。
結果から申し上げますと、SNATを追加することで目的を達成できました。 >enoさん 一応「iptables -A FORWARD -p tcp -d 192.168.3.201 --dport 80 -j ACCEPT 」としてあるので、単純にフォワーディングするだけならこれで大丈夫だと思っていたのですが。。。まずいですかね。。。 >あしゅさん まさに、参考アドレスと同様の状況に陥っていました。 対応として、SNATの追加によるものが挙げられています。 # その先にあるFW自身によるアクセスについては、今回は考慮に入れていませんが。 # 3つ前の自分の返答、なぜかMASQUERADEとか言っている。。。 # SNATだと言っているのに。。。 皆さん、ありがとうございました。 [ メッセージ編集済み 編集者: ytnobody 編集日時 2008-09-08 16:42 ] |
|
投稿日時: 2008-09-09 16:19
>enoさん
一応「iptables -A FORWARD -p tcp -d 192.168.3.201 --dport 80 -j ACCEPT 」としてあるので、単純にフォワーディングするだけならこれで大丈夫だと思っていたのですが。。。まずいですかね。。。 旨くいってよかったですね。 私の感覚としては必要だろうと思ってました。 でないと、その帰り道に使っているポートが外部からの入り口になる気がしまして。 内部から要求したTCP通信以外は、認めない、、てな感じです。 デフォルトしめてあるんだったら、旨くいっている以上後回しでもいいのでは? ping,icmpパケットなどでも受け皿の分もinputの部分で用意しておきますよね。(違ったか^^) |
1