- 締切済み
iptables ポートフォワーディングについて
ポートフォワーディングの設定を行いたくて試しにやっているのですが、 うまくいかないので教えていただけないでしょうか。 WinXPクライアント(192.168.1.22) | Linuxルーター(eth0=192.168.1.40, eth1=192.168.2.41)起動しているサーバーはssh,telnet,ftp,http,postgresです。 | LinuxWebサーバー(eth0=192.168.2.81 port=80)起動しているサーバーはssh,telnet,ftp,http,postgres,cvspserverです。 WinXPクライアントからLinuxWebサーバーにアクセスしたいのですが、以下のように設定しても WinXPクライアントのブラウザには「サーバーが見つかりません」と表示されてしまいます。 他に追記すべき設定、お気づき等ございましたら教えてください。よろしくお願いします。 Linuxルーターのiptables設定内容(service iptables stopを行った後、以下を設定しております) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.2.81:80 iptables -A FORWARD -d 192.168.2.81 -p tcp --dport 80 -j ACCEPT ------------------------------------------------------------- 上記設定後iptables -Lとしてみたら以下のように表示されました。 Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere 192.168.2.81 tcp dpt:http Chain OUTPUT (policy ACCEPT) target prot opt source destination さらにservice iptables saveをして cat /etc/sysconfig/iptablesとしてみたところ以下のように表示されました。 # Generated by iptables-save v1.3.5 on Sat Jan 30 11:46:10 2010 *nat :PREROUTING ACCEPT [2:280] :POSTROUTING ACCEPT [2:115] :OUTPUT ACCEPT [2:115] -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.81:80 COMMIT # Completed on Sat Jan 30 11:46:10 2010 # Generated by iptables-save v1.3.5 on Sat Jan 30 11:46:10 2010 *filter :INPUT ACCEPT [148:9894] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [169:16447] -A FORWARD -d 192.168.2.81 -p tcp -m tcp --dport 80 -j ACCEPT COMMIT # Completed on Sat Jan 30 11:46:10 2010 ------------------------------------------------------------- ちなみに以下のように設定してWinXPクライアントからsshで192.168.1.40の10000ポートに接続すると接続できました。 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10000 -j DNAT --to 192.168.2.41:22 ------------------------------------------------------------- 以下のように設定してWinXPクライアントから「telnet 192.168.1.40 10000」コマンドを発行してみるとしていない 時と比べて「接続中: 192.168.1.40...」となっている時間が長いので何かしら影響しているのかなと思います。 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10000 -j DNAT --to 192.168.2.81:23
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nnori7142
- ベストアンサー率60% (755/1249)
追加補足拝見しました。設定予定図を確認致しましたが、Linuxルーターも含めて2重NATになるので、通信レスポンスの観点からLinuxルーターモデムへ単独接続形態にされた方がお勧めですね。インターネット契約がNTT等PPPOE接続形態の場合には、LinuxにてRP-PPPoE等クライアントツールを利用し、CATV等グローバルIP自動取得契約の場合には、インターネット接続ポート(eth0)に対してDHCP自動取得を設定すればOKです。 逆にLinuxルーターのeth1側のローカルIP側に、PC等接続する場合にはdhcpd等設定すれば良いかと思います。 なおご存知かもしれませんが、簡易的に管理する名目で、私個人としてはWebmin等管理ツールにてサーバ管理、コマンドシェル管理等していますが、比較的既設conf設定が忘れてしまったりする場合もありますので、お勧めですね。
- nnori7142
- ベストアンサー率60% (755/1249)
お尋ねの件ですが、Webサーバの公開・転送規則が、「iptables -A FORWARD -i eth0 -p tcp -d 192.168.2.81 --dport 80 -j ACCEPT」、「iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.2.81」で転送されませんか? ただし上記コマンドはLinuxルーターのWANからの転送規則なのですが、WindowsXPのLANセグメントから見ると、LinuxルーターのWANに相当するポートとセグメントが同一ですが、そのLAN設定でXPのPCはインターネット接続出来ていますか? もし、Linuxルーターのeth0の先に更にルーター等接続しているのであれば、その基点ルーターのポート転送規則をLinuxルーターのIP(192.168.1.40)へ向けて、更にLinuxルーターのiptables規則にて転送しなければいけない気がするのですが・・・。 それよりもむしろ、WindowsXPのPCを192.168.2.XXと同列のセグメント・配線にしなければ、物理的におかしい気もしますね。
お礼
nnori7142さん回答ありがとうございます。 すみません、うまくいきました。 LinuxWebサーバーでゲートウェイを正しく設定していなかったことが原因でした。 LinuxWebサーバーのゲートウェイに192.168.2.41を設定したらうまくいきました。 実際の環境で設定する前にLinuxルーターからLinuxWebサーバーへの転送がうまくいくかを 確認したかったのでローカルな環境でいろいろ試しておりました。 実際にサーバーを設置する構成は グローバルIP=211.○.○.○ | ルーターNAT(市販のルーター) | 192.168.1.1(Linuxルーター) | 192.168.2.1(LinuxWebサーバー) の構成にしたいと思っております。 セキュリティをどのように強化させるかはこれから考えていきたいとおもいます。 おせわがせしました。ありがとうございました。