iptablesコマンド
Portフォワーディング
問題設定
以下のようなネットワークを考える。clientからrouterの192.168.1.4:10080へアクセスされた場合にserverの23.45.67.89:80へ転送するよう設定する。
http://www.plantuml.com/plantuml/png/SoWkIImgAStDuSehJybCJ5Uevb9Go4ijASylobR8ISmp10c0GM9AIb5gSR62hOAIeQMHdg6PXPwXde6-aOaIL45oJcPgNeb2D5Q55Kgnrb1rHVcb9Qb5EDIPGDJLehh229ihZ8prJ4prpCprB2pXha2OZasX8S8HnQb5PJ1bcER1757BvP2Qbm8C7G00#.png http://www.plantuml.com/plantuml/png/SoWkIImgAStDuSehJybCJ5Uevb9Go4ijASylobR8ISmp10c0GM9AIb5gSR62hOAIeQMHdg6PXPwXde6-aOaIL45oJcPgNeb2D5Q55Kgnrb1rHVcb9Qb5EDIPGDJLehh229ihZ8prJ4prpCprB2pXha2OZasX8S8HnQb5PJ1bcER1757BvP2Qbm8C7G00
code:bash
# PREROUTING
$ sudo iptables -t nat -A PREROUTING -p tcp \
--dport 10080 -j DNAT \
--to-destination 23.45.67.89:80
# POSTROUTING
$ sudo iptables -t nat -A POSTROUTING -p tcp \
-d 23.45.67.89 --dport 80 \
-j MASQUERADE
# FORWARD
$ sudo iptables -A FORWARD -p tcp \
-d 23.45.67.89 --dport 80 \
-j ACCEPT
$ sudo iptables -A FORWARD -p tcp \
! --syn -m state --state ESTABLISHED \
-s 23.45.67.89 --sport 80 \
-j ACCEPT
# OUTPUT
$ sudo iptables -t nat -A OUTPUT -p tcp \
--dport 10080 -j DNAT \
--to-destination 23.45.67.89:80