web-dev-qa-db-ja.com

iptablesでポート80と443を8080と8443にリダイレクトするにはどうすればよいですか?

DSpaceと呼ばれるTomcat 6 Webアプリケーションのドキュメントを確認しています。具体的には、実行に関して DSpaceを標準ポートで実行する(http://の場合は80、https://の場合は443)

URL内の:8080を取り除くために、iptablesを使用してトラフィックをポート80および443から8080および8443にリダイレクトする「方法1」を使用しようとしています。

これらは、ドキュメントが提供するコマンドです:

/sbin/iptables -t nat -I PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 8080
/sbin/iptables -t nat -A OUTPUT -p tcp -d _[server_ip_address|server_ip_address]_ --dport 80 -j  REDIRECT --to-port 8080
/sbin/iptables -t nat -I PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-ports 8443

2行目について、特に-d _[server_ip_address|server_ip_address]_セクションを変更する必要があると思いますが、何なのかわかりません。 maniptablesページを読みましたが、うまくいきません。

-d _[server_ip_address|server_ip_address]_を次のように変更してみました:

-d _[127.0.0.1|127.0.0.1]_ 

そしてまた:

-d _[54.224.121.116|54.224.121.116]_

そしてまた:

-d _[ec2-54-224-112-116.compute-1.amazonaws.com|ec2-54-224-112-116.compute-1.amazonaws.com]_

発生しているエラーにはBad argument 'REDIRECT'

Host/network '_127.0.0.1' not found

誰かが私が間違っていることを見つけるのを手伝ってくれる?

update:リダイレクトは2行目がなくても機能すると思いますが、それでも意図された目的が何かはわかりません...

5
cwd

fwiw実際には、通常のApacheでmod_proxy_ajpを使用することを考えています。 URLのサーバー名の最後に:8080と:8443を入力する必要がないようにしようとしているようです。 mod_proxy_ajpは通常、実行しようとしていることの方が簡単です。後でアンティを上げてロードバランシングを実行する場合、すでにmod_proxy_ajp設定になっている場合は簡単です。これは、私の運用サーバーの1つでのセットアップです。

<Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass         /   ajp://fqdn.for.server:8009/
ProxyPassReverse  /   ajp://fqdn.for.server:8009/

ProxyPassをVirtualHost構成に配置できます。その後は、他のホストの構成とほぼ同じです(つまり、SSLをポート443に構成し、プレーンテキストをポート80に構成できます)。 取引全体でより大きな熱意のために

Apache + mod_proxyはこれを行う唯一の方法ではありませんが、これは私が最も経験のある方法であり、それを行う方法(ファイアウォールを使用したポート転送)よりも作業が少ないようです。

1
Bratchley

私が理解している限り、2番目のルールは、サーバーからサーバーに外部に到達しようとする場合の処理​​を指定します(したがって-d)リダイレクト80から8080。ローカルで生成されたパッケージはPREROUTINGによって処理されないため、これが必要です(from http://www.docum.org/docum.org/kptd/ und "Updates")

注:私は通常、ファイアウォールとしてショアウォールを使用しているので、私の答えを防弾だとかレインボー風味だとか考えたりしないでください。

1
drahnr