サーバ内で通信をポートフォワードする。例えば3000ポートで動いているWebサーバを、外からは80ポートで通信を受け取りたいという場合。

iptablesを使うと次のようになる。

 

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
sudo iptables -A INPUT -i eth0 -j ACCEPT
sudo service iptables save
sudo service iptables restart

1行目はポートフォワードの設定で、2行目はeth0への他の通信をすべて許可する設定となっている。

これはiptablesをファイアウォールとしてではなく、完全にポートフォワードするためだけの設定を想定している。

もしiptablesをファイアウォールとしてすでに使っている場合は、2行目のコマンドは実行しないようにする。

※ローカルからの通信はポートフォワードされないので注意する。