TCPポート8080にJava / J2EE(Tomcat)がインストールされているCentOSサーバーがあります。 eth0とloという2つのインターフェースがあります。
TCPポート80からの着信接続はすべて8080に転送する必要があります。
私は次のことを試しました。
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to x.x.x.x:8080
iptables -A INPUT -p tcp -m state --state NEW --dport 8080 -i eth0 -j ACCEPT
ここで、xxxx は eth0 インターフェイスに関連付けられた IP です。
これはまたポート8080を外の世界に開くようですが、私はそうしたくありません。ポート80を外部に公開し、すべてのトラフィックを8080に転送したいと思います。
どんな助けでも大変感謝します。
アップデート:iptables -Lは次のようになります。
[root@server admin]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP tcp -- anywhere anywhere state NEW tcp dpt:http
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@server admin]#
iptables -t nat --list は次のようになります。
[root@server admin]# iptables -t nat --list
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:http to:x.x.x.x:8080
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@server admin]# ^C
ベストアンサー1
私はTomcatを80で受信するように設定するか、apache / nginxをリバースプロキシとして使用することを提案するコメントを投稿しました。これがまさにあなたが実際にしなければならないと思うものです。しかし、子孫のためにあなたのiptables
質問にも答えます。
問題は、あなたがやっていることがDNATではなくポートリダイレクトであるということです。-j DNAT
あなたが必要とするよりも-j REDIRECT
。
たとえば、
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080