iptablesは、クライアントからゲートウェイを経由してサーバーへのすべての接続を転送します。

iptablesは、クライアントからゲートウェイを経由してサーバーへのすべての接続を転送します。

クライアント (Windows) からのすべてのポートを、ゲートウェイ (Linux) の背後にあるサーバー (Windows) に転送したいと思います。

私のネットワーク トポロジは次のようになります。

10.20.10.14 --> 10.20.10.4 --> 192.168.1.1 --> 192.168.1.4
   client          ppp0           eth0          server
                |--------- Gateway -------|

ゲートウェイ デバイスには、ppp0 と eth0 という 2 つのネットワーク デバイスがあります。

クライアントと ppp0 間のネットワーク接続の場合、サーバー デバイスがクライアントから送信されたのと同じポート上のデータを確認できるようにしたいと思います。

言い換えれば、サーバーはクライアントと直接通信し、ゲートウェイはこの場合透過的であると考える必要があります。

さらに、このルールを削除する方法を知りたいです。

何か案は?

注: 私はすべてのデバイスの管理者です。

答え1

英語のルールを iptables ルールに翻訳するには、次のルールのみが必要です。

iptables -t nat -A PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4

宛先ポートは変更されません (クライアントが同時にサーバーに直接接続するまれな場合を除き、送信元ポートも変更されません)。

クライアントが手動でルートを追加して、サーバーに直接アクセスすることを妨げるものは何もありません192.168.1.410.20.10.4これを望まない場合、サーバーの IP を非表示にするには、次のルールを追加することもできます。

iptables -I FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP

これにより、DNAT されなかったサーバーへの直接アクセスが削除されます。

これらのルールを削除するには、次のようにします-D

iptables -D FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP
iptables -t nat -D PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4

ランダムコメント:

  • DNAT 接続が転送されるため、ゲートウェイで IP 転送を有効にする必要があります。これを行う最も簡単な方法は、次のとおりですecho 1 > /proc/sys/net/ipv4/ip_forward
  • もちろん、サーバーは接続を受け入れるためにクライアントへのルートを必要とします。たとえば、ゲートウェイ ( 192.168.1.1) をデフォルト ゲートウェイとして持つなどです。
  • -i ppp0はオプションであり、削除できます (または、-d 10.20.10.4必要に応じて PREROUTING ルール内で に置き換えます)。 に置き換えない場合-i ppp+(はワイルドカード)、問題が発生する可能性があります。急速なリンク障害/再接続が発生した場合、以前に切断されていなかった場合は+新しい ppp インターフェイスが呼び出される可能性があります。iptables ルールは一致しなくなります。ppp1ppp0
  • DNAT ルールが削除されても、既に確立されているフローは影響を受けませんが、新しいフローは影響を受けます (つまり、サーバーに到達しません)。

関連情報