最近LVSのDSR構成やSSHのポート変換と続けてiptablesのリダイレクト設定を行ったのでメモ。
iptablesについては全然知識が不足していると実感したので、もう一度調べて理解を深めたいところです。
例としてこのブログサイトをポート8080でアクセスした場合に、ポート80にリダイレクトするように設定してみます。
サーバ
ホスト名 | IPアドレス |
web | 192.168.10.5 |
コマンド
[root@web ~]# iptables -t nat -A PREROUTING -d 192.168.10.5 -p tcp -m tcp --dport 8080 -j REDIRECT --to-port 80
設定確認
[root@web ~]# iptables -nL -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination REDIRECT tcp -- 0.0.0.0/0 192.168.10.5 tcp dpt:8080 redir ports 80 Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination </pre>
ブラウザで確認してみる
このサイトのURL(http://www.eastforest.jp/esthome/)にポート8080を指定して実行してみる。
リダイレクトされて画面が表示された。
chromeの場合F12を押すとDeveloper toolが表示されるので、リダイレクトの際に見てみるとステータスコード301でリダイレクトされていることが分かります。
設定を保存
[root@web ~]# /etc/init.d/iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
設定ファイル
[root@web ~]# vi /etc/sysconfig/iptables *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A PREROUTING -d 192.168.10.5/32 -p tcp -m tcp --dport 8080 -j REDIRECT --to-ports 80 COMMIT
設定ファイルに直接記述しても構いません。その場合はiptablesを再起動する必要があります。
最後に
設定は戻していますのであしからず。
参考
80番ポートへ届いたパケットをiptablesでローカルの上位ポートに転送する
KeepalivedによるロードバランサLVS構築