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

これにより、unDNATサーバーに直接アクセスできなくなります。

これらのルールを削除するには、次のようにします-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

ランダムな発言:

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

おすすめ記事