離れた建物にある複数のLANを接続したい。
「中央」サイトには、OpenVPNを実行しているLinuxコンピューターがあります。各リモートサイトでもOpenVPNを実行しています。
- 中央サイトには、192.168.0.0 / 24という番号のLANがあります。
- いくつかのリモートサイトにも192.168.0.0/24と番号が付けられています
- LAN番号を変更できない/しない/変更したくない
- ほとんどのリモートOpenVPNを制御できません
次に、次のことを行う必要があり
ます。1.仮想LANを定義する
2.各サイトに1:1 NATを構成する
3. 1:1 NATを中央ルーターに構成する必要がある
。
そのため、各サイトには10.10.x.0 / 24 LANがあるように見えます。
たとえば、サイト12で192.168.0.44に到達したい場合は、パケを10.10.12.44に送信するだけです。
VPNの操作は、私にとって問題ではありません。現在60以上のサイトを接続しています。しかし、これを1対1のNATで行う簡単な方法はありません。
セントラルサイトからリモートサイトに送信されるパケットとその応答パケットの例を次に示します。
iptables NETMAPでいくつかのテストを行いましたが、ルーティングの決定後にsource + destinationを変更する方法が見つからないため、うまく機能させることができません。
新しい--client-nat
OpenVPNの機能は避けたい。
たぶん私はルーティングを強制する必要がありip route
ますか?または、ネットワークスタックに2回ループしveth
ますか?
注:マスカレードは使いたくありません。1/1 NATのみ。
編集:
通常のopenVPNセットアップでは不可能です。リモートサイトからのパケットは別のサイトからのパケットと区別がつかないためです。どちらも送信元アドレスと宛先アドレスが類似しており、どちらも同じtun(またはタップ)インターフェイスから送信されます。したがって、それをソースNATすることはできません。
解決策1:リモートサイトでNATを実行します。私の場合は不可能です。中央サイトでのみ行う必要があります。
解決策2:リモートサイトごとに1つのVPNをセットアップします。そのため、それぞれに1つのtunを用意します。これは大丈夫だと思います。メモリ効率はそれほど高くありませんが、問題ありません。
解決策3:各サイトのVPN内に(暗号化されていない)トンネルをセットアップします。これにより、それぞれに1つのインターフェースが提供されます。単純なトンネルはクロスプラットフォームではありません(私の知る限り)。たとえば、GREやipip、sitはLinuxでは問題ありませんが、一部の遠くのサイトでは1台のWindowsコンピューターしか実行していないため、openVPNがインストールされています。単純なトンネルを設定することは不可能です。その他のオプションは、より複雑なトンネル(wich?)を使用することですが、システムおよびシステム管理者のオーバーヘッドは、複数のVPNを持つよりも大きくなる可能性があります
解決策4:最新のopenVPNをコンパイルします。1:1のNAT機能が含まれているためです。今週テストします。