iptablesを使用して外部IPをローカルサーバーとしてNAT

iptablesを使用して外部IPをローカルサーバーとしてNAT

固定IP(1.1.1.1と仮定)を使用したAdsl接続があります。私の Debian ファイアウォールは ppp 経由でインターネットに接続し、IP はファイアウォールに直接割り当てられます。 ppp0 Link encap:Point-to-Point Protocol inet addr:1.1.1.1 P-t-P:<IP-DOES-NOT-MATTER> Mask:255.255.255.255

私はDebianをファイアウォール/ルーターとして使用しており、デフォルトのiptablesスクリプトを使用してローカルクライアントをインターネットに接続しています。 iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE iptables --append FORWARD --in-interface eth1 -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward

外部ホスティングドメインのサブドメインレコードを作成しました。 sub.example.com IN A 1.1.1.1

iptablesを使用して、インターネットからローカルサーバーへのhttp接続をDNATできます。 iptables --table nat --append PREROUTING -i ppp0 --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to 192.168.1.101:80

また、地域のお客様にも近づけることを願っています。sub.example.com追加の設定は必要ありません。

ファイアウォールで試したiptablesコマンド(動作しない) iptables --table nat --append PREROUTING --in-interface eth1 --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.101:80 iptables -t nat --append OUTPUT --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to-dest 192.168.1.101

最初のコマンドはパケットをサーバーにルーティングしますが、応答を受け取りません(1.1.1.1はサーバーに構成されていません)。二つ目は何もしません。

iptablesを使ってこれを達成する方法はありますか?

ベストアンサー1

@wurtelの回答に応じて、DNATとSNATを一緒に使用したところ効果がありました。ありがとう:)

コマンドは次のとおりです。 iptables --table nat --append PREROUTING --in-interface eth1 --dest 1.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.101:80 iptables --table nat --append POSTROUTING --out-interface eth1 -source 192.168.1.0/24 --dest 192.168.1.101 -p tcp --dport 80 -j SNAT --to-source 192.168.1.1

おすすめ記事