3つのネットワークアダプタを持つLinuxボックスがあり、次のように設定したいと思います。
- アダプタAはコンピュータAに接続されています。
- アダプタ B はコンピュータ B に接続されます。
- アダプタCがインターネットに接続されます。特にsomeserver.comで
私が達成したいもの:
- Aのすべてのトラフィックはインターネットに移動します。
- アダプタBに特別な「秘密ポート」を定義します。
- 「秘密ポート」の「someserver.com」に向かうコンピュータBからのTCPトラフィックは、コンピュータAから来るように見えるようにソースIPを偽装します。
- 「someserver.com」からコンピュータAに戻り、#3で使用されているのと同じポートに到着するTCPトラフィックはコンピュータBにリダイレクトされます。
ルーターまたはブリッジを実装する必要がありますか? NetFitler / ipテーブルを構成してこれを実行できますか?それともいくつかのコードを実装する必要がありますか?コードなら、どの層でIPスタックと統合する必要がありますか?
答え1
通常のアクセスにはMASQUARADE / SNATを使用する必要があります(CのIPアドレスが動的か静的かによって異なります)。
現状があなたのものだと仮定コンピュータA固定IPアドレスa.a.a.a
とコンピュータB固定IPアドレスを持っています b.b.b.b
。どちらにもデフォルトゲートウェイがありますコンピュータC。そしてSomeserver.com固定IPアドレスr.r.r.r
と秘密ポートを持つのはですpppp
。
構成するコンピュータCルータとしてインターネットへのデフォルトルートがあります。インターフェースC(静的構成、PPPoEによる動的設定などを介してすでにこれを行います。)これはそれ自体で行うことができます。1.
今、2つの可能性があります。
作るコンピュータAルーターも同じだ。だからあなたも変わります。コンピュータBデフォルトのパスは、以下を介して構成されるように構成されています。コンピュータA(いいえコンピュータC以前と同様)と構成コンピュータAこのように:
iptables -t nat -s b.b.b.b -d r.r.r.r -p tcp --dport pppp -j SNAT --to a.a.a.a
これにより、送信元IPから
b.b.b.b
宛先IP、宛先ポートまでのすべてのr.r.r.r
TCPパケットがpppp
そのパケットが開始されたと見なされ、次のトラフィックがa.a.a.a
完了します。3
サーバーウェブサイトソースアドレス(a.a.a.a
)に戻り、次にデコードされます。コンピュータAそしてまた送るコンピュータB。 (したがって完了4
)これは簡単ですが、コンピュータBがこのタイプのNATポリシーをサポートするオペレーティングシステムを実行する必要があります。
変化コンピュータA
10.0.1.100/24
次のプライベートIPがあります。コンピュータBプライベートIPを持っています10.0.2.100/24
。それからコンピュータCする:ip addr add a.a.a.a/nn dev ifaceC ip addr add b.b.b.b/nn dev ifaceC iptables -t nat -s 10.0.1.100 -j SNAT --to a.a.a.a iptables -t nat -s 10.0.2.100 -d r.r.r.r -p tcp --dport pppp -j SNAT --to a.a.a.a iptables -t nat -s 10.0.2.100 -j SNAT --to b.b.b.b
nn
あなたのネットマスクはどこにあり、ifaceC
あなたの名前はどこですか?インターフェースC。そうだろうコンピュータAそしてコンピュータBプライベート範囲内で許可コンピュータCネットワークアドレス変換コンピュータA(それで以前のように動作しますa.a.a.a
)とNATコンピュータBa.a.a.a
(dst =r.r.r.r
、dport =条件が満たされている場合)、または(else)のいずれかです。pppp
b.b.b.b
特別なサポートは必要ありません。コンピュータA...でもないコンピュータB、しかし後ろに残しましたネットワークアドレス変換これは他の事項に影響を与える可能性があります。
もちろん、この年齢には、上記の内容が良い老年層にのみ適用されることに言及しなければなりません。IPv4住所(最後の住所は早く使ってしまった)ではなくIPv6
答え2
あなたのコメントに基づいて:
@Marki - コンピュータAとBはインターネットにあります。 someserver.comにアクセスするときは、常に私のLinuxシステム(特定のパスなど)からアクセスしてください。 AとBは協力する。時々、私たちは、要求が他のコンピュータから来たことを一部のサーバーが知らないまま、コンピュータBがsomeserver.comにアクセスしたいと考えています。
ここで何か抜けましたか?コンピュータCがルータに設定されている場合、AとBの要求は重要ではありません。 NAT規則に応じて、AとBのプライベート/パブリックIPアドレスはどちらもコンピュータCのパブリックIPアドレスと交換されます。したがって、Cがネットワークチェーンの最後のゲートウェイである場合サーバーCのすべての要求が表示され、CはそれをAとBに再ルーティングします。
これを行うには、コンピュータCには2つのネットワークカードが必要です。 1 つはプライベート LAN に接続し、もう 1 つはパブリック WAN に接続します。
Matijaの数字は次のとおりです。 2
コンピュータBがコンピュータAを模倣するには、BはCに到達する前にAを通過するトラフィックをフィルタリングする必要があります。コンピュータCはコンピュータAからのトラフィックだけを見ることができるので、これが「ユースケース」にどのように役立つかわかりません。しかし気にしない:
サーバーAまたはBの個人アドレスは表示されません。ここであなたの状況は少し誇張されています。これは、すべてのポートがコンピュータBのプライベートIPアドレスに転送されるように、コンピュータCでポート転送を有効にするだけです。
答え3
B/SecretPort を受信して SomeServer に渡すプロキシを A にインストールすると、この問題を解決できます。 SecretPort を使用して A で選択した回答は B に渡されます。