iptablesで特定のポートを別のホストへ転送する方法

1.サンプルコード:
iptables -t nat -A PREROUTING -s ホスト -p tcp –dport 80 -j DNAT –to :22
iptables -t nat -A PREROUTING -s -p tcp –dport 80 -j DNAT –to :81
iptables -t nat -A PREROUTING -p tcp –dport 555 -j DNAT –to :22
iptables -t nat -A PREROUTING -p tcp –dport 3306 -j DNAT –to :4408
iptables -t nat -A PREROUTING -d ホスト1 -p tcp -m tcp –dport 80 -j DNAT –to-destination ホスト2:81
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.0.0 -d 192.168.0.2 -p tcp -m tcp –dport 8180 -j SNAT –to-source 192.168.0.1
2.操作例
ローカルの80ポートを81ポートへ転送
iptables -t nat -A OUTPUT -s 127.0.0.1 -p tcp –dport 80 -j DNAT –to-dest 127.0.0.1:81

219.239.11.22ポート8080にリクエストは192.168.0.21の80ポートに転送:
iptables -t nat -A PREROUTING -d 219.239.11.22 -p tcp -m tcp –dport 8080 -j DNAT –to-destination 192.168.0.21:80
iptables -t nat -A POSTROUTING -d 192.168.0.21 -p tcp -m tcp –dport 80 -j SNAT –to-source 192.168.0.29

3.ip forwardを有効
/etc/sysctl.confに「net.ipv4.ip_forward = 1」を変更
またはecho 1 > /proc/sys/net/ipv4/ip_forward

Source

Posted by arkgame