iptables:マスカレーディングを介して要求を別のローカルポートに転送する

iptables:マスカレーディングを介して要求を別のローカルポートに転送する

ポート80でWebアプリケーションを実行しており、特定のAPIの場合は、ソースIPをホワイトリストに追加する必要があります。私の/19ネットワークの誰もがこれらのAPIを使用できる必要があり、このWebアプリケーションはホワイトリストを作成するためのCIDR表記をサポートしていないため、次の設定を検討しています。

  • My / 19ネットワーク上の誰もがポート1337を介して自分のサーバーに接続できるようにします。
  • Linux Web サーバーでは、マスカレーディングを使用してポート 1337 からポート 80 にトラフィックを再ルーティングします。
  • 私のWebアプリケーションでは、IP 127.0.0.1のみがホワイトリストに含まれています。これは、Webアプリケーションの場合、すべてのトラフィックがlocalhostから発生するためです。
  • 私のAPIからの返信がソースを返すことを確認してください。

このユースケースでは、iptableルールはどのようなものですか?

ベストアンサー1

デフォルトでは、標準NIC(eth0)からループバックインターフェイス(lo)へのポート転送は無効になっています。前の(壊れた)iptablesルールを削除し、次のコマンドを実行します。

# Forward any traffic destined to TCP 1337 on eth0 to 80 on loopback if source network is X.X.X.X/19
$ sudo iptables -t nat -I PREROUTING -p tcp -i eth0 -s X.X.X.X/19 --dport 1337 -j DNAT --to-destination 127.0.0.1:80
# Then allow forwarding from standard NIC to loopback (assuming eth0 is the standard NIC)
$ sudo sysctl -w net.ipv4.conf.eth0.route_localnet=1

おすすめ記事