単純なポートフォワーディングファイアウォールをセットアップしようとしていますが、ファイアウォール以外の基本的な構成を機能させることができません。 iptablesスクリプトを次のように設定しました
#!/bin/sh
# interfaces
LAN="eth1"
WAN="eth0"
# enable forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# delete all existing rules to start from scratch
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
# accept everything
iptables -A INPUT -j ACCEPT
iptables -A FORWARD -j ACCEPT
iptables -A OUTPUT -j ACCEPT
# port forwarding to local machine
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j DNAT --to 192.168.1.96
# masquerade
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
このスクリプトは何もファイアウォールで保護しませんが、ゲートウェイマシンのポート80を内部マシン192.168.1.96にリダイレクトする必要があります。これは機能していません。問題は、外部から内部のマシンに入ることができないことです。デバッグを開始する方法すら知りません。どこを見るべきかについてのヒントはありますか?
変化する:
# port forwarding to local machine
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j DNAT --to 192.168.1.96
に:
# port forwarding to local machine
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j DNAT \
--to-destination 192.168.1.96:80
Iptables -L -n -v--lineと-tnatを使用して再確認します。あなたがしたことは私には正しく見えます。また、tcpdumpを実行して、TCP SYN ochの外側(eth0)と内側(eth1)が表示されるかどうかを確認し、これが消える場所であることを確認します。
「これは機能していません」は良い説明ではありません。何が機能していないのですか?タイムアウトまたは接続が拒否されますか?
実行しているiptablesのバージョンはわかりませんが、v1.3.5では、-toではなく--to-destinationが必要です。
私はあなたの最後の行は
# masquerade
iptables -t nat -A POSTROUTING -o $LAN -j MASQUERADE
WANではなくLANに注意してください。
私は通常、インターフェースではなくIPを使用してこれを設定しています。次のことを試してください。
# port forwarding to local machine
iptables -t nat -A PREROUTING -d $EXT_IP -p tcp --dport 80 -j DNAT --to 192.168.1.96
# masquerade
iptables -t nat -A POSTROUTING -s 192.168.1.96 -j MASQUERADE
もちろん、$EXT_IP
を設定します。