iptablesを使ったポートベースのNAT-ing


0

eth0 パブリックIPを持っている eth1 私達にIPがあります 10.31.0.1 これはDHCPとSquidサービスを提供します。

ポート8080、53、67、80、443が開いています。今度は、アプリケーション用に1521,8443ポートを開く必要があります。これにより、リモートサーバーの1521,8443ポートにアクセスできます。

しかし、ポートを開くだけでは、リモートサーバーに接続できません。そのため、この特定のポート要求に対してNATを有効にする必要があります。何によって iptable コマンドは、ポートベースのNAT-ingを達成することができますか?

回答:


1

netfilter / iptablesはややこしいので、あなたはいくつかのドキュメントを読みたいかもしれません。 ここに 少し古くなっても、いくつかの良いドキュメントです。

あなたがする必要があることのために、あなたはそれがルーティングコードに到達する前に、それゆえPREROUTINGに、NATテーブルにルールを追加する必要があります。これは、ルーティングの決定後、パケットが実際のサーバーではなくルーター向けであることが既に決定されているためです。

あなたはこのようなものが必要です:

# iptables -t nat -A PREROUTING -p tcp --dport 1521 -i eth0 \
  -j DNAT --to 5.6.7.8:1521

これをパケットを受信するマシンのIPアドレスに置き換えます。


0

次の手順を実行します:

  1. カーネルでIP転送を有効にします。

    echo 1 > /proc/sys/net/ipv4/ip_forward

  2. 転送ルールをフラッシュします。

    iptables -F FORWARD

  3. このLAN IP範囲から特定のポートだけがNATされるように設定します。

    iptables -t nat -A POSTROUTING -o eth0 -s 10.31.0.0/16 -p tcp --dports 1521,8443 MASQUERADE

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.