iptables ポート転送

iptables ポート転送

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

おすすめ記事