web-dev-qa-db-ja.com

Debianでのiptablesポートフォワーディング

単純なポートフォワーディングファイアウォールをセットアップしようとしていますが、ファイアウォール以外の基本的な構成を機能させることができません。 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にリダイレクトする必要があります。これは機能していません。問題は、外部から内部のマシンに入ることができないことです。デバッグを開始する方法すら知りません。どこを見るべきかについてのヒントはありますか?

5
Ricardo Marimon

変化する:

# 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
1
rkthkr

Iptables -L -n -v--lineと-tnatを使用して再確認します。あなたがしたことは私には正しく見えます。また、tcpdumpを実行して、TCP SYN ochの外側(eth0)と内側(eth1)が表示されるかどうかを確認し、これが消える場所であることを確認します。

「これは機能していません」は良い説明ではありません。何が機能していないのですか?タイムアウトまたは接続が拒否されますか?

1
Thomas

実行しているiptablesのバージョンはわかりませんが、v1.3.5では、-toではなく--to-destinationが必要です。

0
Kevin M

私はあなたの最後の行は

# masquerade
iptables -t nat -A POSTROUTING -o $LAN -j MASQUERADE

WANではなくLANに注意してください。

0
Neobyte

私は通常、インターフェースではなく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を設定します。

0
etagenklo