内部トラフィックをゲートウェイのポート転送外部エンドポイントに直接イントラネットの宛先にリダイレクトする


0

イントラネットおよびCentOSを搭載したゲートウェイがあり、イントラネットデバイスに接続を提供します。

ゲートウェイのiptablesルールセットでの一般的なポート転送は次のようになります(TCPバージョンが提供されます)。

$IPTABLES -A PREROUTING -t nat -i $EXTERNAL_IF -p tcp -d $EXTERNAL_IP \
    --dport $EXTERNALPORT -j DNAT --to $INTERNAL_IP:$INTERNAL_PORT
$IPTABLES -A FORWARD -i $EXTERNAL_IF -p tcp -d $INTERNAL_IP \
    --dport $INTERNAL_PORT -j ACCEPT

このような構成では、イントラネットから$ EXTERNAL_IP:$ EXTERNAL_PORTにアクセスできません。

すべての内部(イントラネットから発信)トラフィックを$ EXTERNAL_IP:$ EXTERNAL_PORTに直接$ INTERNAL_IP:$ INTERNAL_PORTにリダイレクトする方法はありますか?

のようなルールを追加する

$IPTABLES -A PREROUTING -t nat -s $INTRANET -p tcp -d $EXTERNAL_IP \
    --dport $EXTERNALPORT -j DNAT --to $INTERNAL_IP:$INTERNAL_PORT
$IPTABLES -A FORWARD -s $INTRANET -p tcp -d $INTERNAL_IP \
    --dport $INTERNAL_PORT -j ACCEPT

$ INTRANETがイントラネットアドレスのCIDRである場合、機能しません。

その結果、イントラネットデバイスのソースアドレスを保持する必要があります(ターゲットは接続の正確な発信元を知っている必要があります)。

これまでのところ、hostsファイル内のIPの静的オーバーライドが使用されていますが、これは便利ではありません。

回答:


1

もちろん機能しません。

YOUR_PCを出て、外部IPアドレスHTTP_EXTおよび内部IPアドレスHTTP_LANでWebサイトに行くパケットをしばらく追跡してみましょう。最初に元の iptablesルールについて考えてみましょう。

  1. パケットはYOUR_PCを出てHTT_EXTに行き、CentOSルーターに行きます。

  2. CentOSルーターはこれをインターセプトし、送信元アドレスを独自のアドレスに書き換え、HTTP_EXTではなくHTTP_LANにパケットを送信します。

  3. HTTP_LANはパケットを受信し、CentOSから送信されたパケットを確認して応答します。

  4. CentOSは応答パケットを受信し、それがDNATtedされた会話の一部であることを記憶し、応答アドレスをHTTP_LANではなくHTTP_EXTに書き換えてYOUR_PCに送信します。

  5. YOUR_PCは、HTTP_EXTから送信された返信パケットを確認します。すべて順調です。

しかし、、あなたやりたいことをすることができたらどうなるか考えてみましょう:

  1. パケットはYOUR_PCを出てHTT_EXTに行き、CentOSルーターに行きます。

  2. CentOSルーターはこれを傍受し、送信元アドレスを独自のものとして書き換え、HTTP_EXTではなくHTTP_LANにパケットを送信します。

  3. HTTP_LANは、パケットを受信し、YOUR_PCからのパケットであることを確認し、CentOSを経由せずに応答します。

  4. YOUR_PCは、HTTP_EXTに書き込まれたHTTP_LANからパケットを受信します。明らかなセキュリティ上の理由から、応答パケットは破棄されます。

この場合、あなたが言ったように、それは動作しません。別の言い方をすると、このINTRANETアドレス変換は DNATとSNATを同時に行う場合にのみ機能します。


上記(可能な場合はSNAT / DNAT)は、すべてのトラフィックがルーターを通過することを前提としています。デバイスが相互に直接接続できる場合(通常どおり)-私が正しく理解していれば-必要に応じてトラフィックをリダイレクトするための実用的なテクニックはありません。
コンスタンチンボヤンディン14

@KonstantinBoyandinはい:パケット送信元の内部LANアドレスを維持できません。それはしなければならない応答パケットが戻って再びパケットのヘッダーを変更するルータに行くように、routerìsに変更します。
MariusMatutiae 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.