iptablesでポートフォワーディング
Posted on 7 月 18th, 2008 by mazn
通常Linuxのデフォルトはパケットのフォワーディングが無効になっているので、まずは有効にします。
# echo 1 > /proc/sys/net/ip_forward
これはOSを再起動すると戻ってしまうため、恒久的に有効にするには/etc/sysctl.conに以下を追記します。
net.ipv4.ip_forward=1
ここでは、SSHのフォワーディングを例に説明します。以下のようなサーバ・ネットワーク構成だとします。
接続元端末 10.1.1.200 設定対象サーバ 10.1.1.1, 192.168.0.1 SSHサーバIP 192.168.0.2
まずは端末から対象サーバに入ってくるパケットをSSHサーバにDNATでフォワーディングします。待ち受けポートは5555とします。
# iptables -t nat -A PREROUTING -p tcp --dst 10.1.1.1 --dport 5555 -j DNAT --to-destination 192.168.0.2:22
SSHサーバのデフォルトゲートウェイが設定対象サーバになっていれば、上記だけの設定で動くのですが、なっていない場合や、接続元端末とSSHサーバが同一のセグメントにあると、戻るパケットが設定対象サーバを経由しないためうまく動きません。
よって、SSHサーバに出て行くパケットの送信元を設定対象サーバのIPに書き換えます。
# iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.2 --dport 22 -j SNAT --to-source 192.168.0.2
設定対象サーバに戻ってきたパケットは自動的に逆DNATされるため、以上で正常に動くはずです。
参考 : http://www.asahi-net.or.jp/~AA4T-NNGK/ipttut/output/dnattarget.html
Discussion Area - Leave a Comment