web-dev-qa-db-ja.com

VPNで2つのサイトをピアリング:ツインラズベリーパイを使用したDIYモード

下の図に示すように、AとBの2つのサイトがあります。

+-+------------------------------------------------------------------+
| |            |OTHER DEVICES                                        |
| |            |:-)                    SITE A: 128.66.32.0/24  |     |
| |            +-------+               PUBLIC DNS: SITEA.EXAMPLE.ORG |
| |            |       |               PORT FORWARDING CUSTOMIZABLE  |
| |            |       |               DYNAMIC IP / DDNS             |
| +------------+       |                                             |
|                      |                                             |
| +---------------+----+-------------------+---------+-------------+ |
|                 |                        |         |               |
|  Raspberry Pi   |         PRINTER        |         |    ROUTER/GW  |
|  128.66.32.18   |         128.66.32.3    |         |    128.66.32.1|
| +------------+  |        +----------+    |         |    +----------+
| |            |  |        |          |    |         |    |          |
| |            |  |        |          |    |         |    |          |
| |            +--+        |          +----+         +----+          |
| |            |           |          |                   |          |
+-+------------+-----------+----------+-------------------+----------+






 +-----------------------------+-------------+------------+----------+
 |  SITE B: 128.66.55.0/24     |             |            |          |
 |  NO DNS                     |             |            |          |
 |  FIREWALLED BY ISP    +-----+             |        +---+          |
 |  DYNAMIC IP           |     +-------------+        |   |          |
 |  PUBLIC IP 10.0.0.0/8 |      LAPTOP                |   |          |
 |                       |      DHCP                  |   +----------+
 |                       |                            |   ROUTER/GW  |
 |                       |                            |   128.66.55.1|
 |                       |                            |              |
 |  ++-------------------+-------------------+--------+-----------+  |
 |   |                                       |                       |
 |   |                                       |                       |
 |   |   NAS                                 |      Raspberry Pi     |
 |   |   128.66.55.23                        |      128.66.55.18     |
 |   |  +-------------+                      |      +-----------+    |
 |   |  |             |                      |      |           |    |
 |   +--+             |                      +------+           |    |
 |      |             |                             |           |    |
 +------+-------------+-----------------------------+-----------+----+

私が基本的に望んでいるのは、2つのサイトをpeerly接続することです。 VPNを使用すると、Bにいる間にA内の任意のホストにアクセスできます。理論的には、AとBの間に確立されたVPNリンクにより、A内のすべてのデバイスでping 128.66.55.xと入力してデータを表示できます。

私は2台の予備のRaspberryPiマシンを持っているので、それらを解き放ち、永続的なtransparentVPNリンクを確立したいので、誰もが間にゼロ構成リンクを取得します2つのサイト。

ご覧のとおり、サイトの1つはアドレス指定できません。ISPは複数の顧客間で共有されるプライベートIPアドレスを提供するため、クライアントとしてのみ機能します。

私がした宿題

OpenVPN のドキュメントを調べて、Pisをサーバーとして構成する方法とクライアントとして構成する方法についてのアイデアを得ました。次に、Aに移動してRaspberryサーバーをデプロイし、ポート転送するのを待つ間、他の問題が発生します。外出中は、SSHチャネルを開いたままにしてラズベリーを管理する準備ができています。

保留中の質問:

私は何年も前にクラスに参加したので、ネットワーキングについて少しさびています。

  • OpenVPNを使用してVPN内の2つのサイトをピアリングできますか?それとも私は間違った道をたどっていますか?
  • 両方のデバイスのeth0アダプターとtunアダプターの間にルーティングルールを設定する必要があることはわかっています。 OpenVPNは私のためにそれを行いますか、それともiptablesを使用する必要がありますか?
  • VPNを透過的にするために、メインゲートウェイに静的ルートを設定する必要があるかどうかを覚えていません(例:128.66.32.18経由のルート128.66.55.0/24)またはラズベリーはeth0ネットワーク内でルートをブロードキャストする必要があります。 2つのうちどちらですか?

基本的に、リモートで印刷したり、NAS)にアクセスしたりする必要があります

私は自分のデザインと良い方法で正しかったようです。私は現在、知識を共有するための両方で自分の質問に答えており、将来の質問で参照できるように自分の考え、調査、考慮事項を公開しています。

おかげで この投稿 私は私の質問への答えのほとんどを見つけました。要約しましょう:

  • OpenVpnにはピアリングLAN用のセットアップがあります

私たちのユーザーは、背後にLAN(10.10.2.0/24)があるopenvpnサーバーと、背後にLANがある2つのクライアントを持っていました。

client1とLAN10.10.1.0/24client2とlan10.10.3.0/24

彼は、3つのLANすべてのマシンがtun(ルーティング)セットアップを使用して通信できることを望んでいました。

背後にLANがあるすべてのマシンでは、IP転送を有効にする必要があります。この例では、サーバーとclient1/client2を意味します。ユーザーは自分のserver.confに次のものが必要でした。

route 10.10.1.0 255.255.255.0
route 10.10.3.0 255.255.255.0
Push "route 10.10.2.0 255.255.255.0"
Push "route 10.10.1.0 255.255.255.0"
Push "route 10.10.3.0 255.255.255.0"
client-to-client

単に私の場合に適応する必要があります。サーバーは、制御しないネットワークのみをrouteし、すべてをPushする必要があります。接続するすべてのLANを動的にプッシュするのはそれほど賢明ではありません。スケーラブルなセットアップを実装しておらず、LANが2つしかないため、問題ありません。

  • OpenVpnは、実行中のRaspberryでのルーティングを処理します。

私はBサイトの自分のLAN内で例を作成しました。 AのIPアドレスをRaspberryAに割り当て、同じeth0インターフェイスでBからDHCPアドレスを取得して、OpenVpnとエコーサーバーの両方を実行できるようにしました。次に、BネットワークIPアドレスを持つRaspberryAをBLAN内のRaspberryAのアドレスに接続しました。最後に、私はそれをエコーし​​てログで見ることができました。唯一の注意点は、Raspberry A(エコーサーバー)がBではなくAの範囲のIPからの接続を認識したため、LANが通信していなかったことです。

  • どうやら、ルートはゲートウェイで設定する必要があります。記事はそれをよく説明しています。引用させてください

サーバーがLAN上で10.10.2.10であり、デフォルトルートとして10.10.2.1を使用していて、2.xLANがVPN経由でアクセス可能またはアクセス可能である必要があるとします。 2.1では、2.xがアクセスする、またはアクセスするすべてのネットワークのルートが必要になります。つまり、この例では、10.10.2.1は、10.10.1.x 10.10.3.xおよびvpn内部ネットワーク(たとえば、10.8.0.x)の場合、トラフィックを10.10.2.10に送信することを認識している必要があります。これは正しいです。サーバーかクライアントかに関係なく、接続したい任意の数のLANに対して。

このルートの追加に失敗した場合、VPNクライアント(たとえば、10.8.0.6)がトラフィックを10.10.2.20に送信したい場合は次のようになります。

The vpn client sends traffic to 10.10.2.20, with a source address of 10.8.0.6
The vpn server (10.8.0.1 and 10.10.2.10) receives the traffic, has IP forwarding enabled, and passes the traffic to 10.10.2.20
10.10.2.20 gets it and tries to respond to 10.8.0.6 but has no entry in its routing table
Because 10.10.2.20 has no route for 10.8.0.6, it sends the traffic to its default gateway which is 10.10.2.1
10.10.2.1 checks its routing table, has no route for 10.8.0.6, and sends the traffic to its default gateway which is likely its ISP
The ISP ignores it, because it is a RFC 1918 ip (aka lan only)

たまたま両方のゲートウェイを制御できるので、静的ルートを設定するのが正しい方法でした