非常にシンプルな OpenVPN セットアップでは、ルーティングはどのように行われますか?

非常にシンプルな OpenVPN セットアップでは、ルーティングはどのように行われますか?

私は、専門家としてホストされている Debian GNU/Linux 専用サーバーを (リモートで) 完全に構成しましたが、ネットワーク ルーティングに関する質問があります (私の知る限り、これは serverfault の FAQ に正確に当てはまります)。

この専用サーバーには静的 IPv4 IP と非常に単純なルートがあります。

route -n

Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
94.xx.yy.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         94.xx.yy.254    0.0.0.0         UG    0      0        0 eth0

静的 IP は 1 つしかなく、同じサブネット上には他の専用サーバーが多数あるため、これらを操作することはできません。

そのサーバーは、当社のメイン Web アプリケーション (Apache+Tomcat) をホスト/提供しており、Squid も実行しています。すべての構成は私が自分で行いました。予算が許せば、Squid を別のサーバーに移動します。

今のところ、そのサーバーに OpenVPN を追加したいのですが (できれば tap ではなく tun を使用)、インターフェイスが他の専用サーバーと「衝突」しないようにするには何を行う必要があるかを知りたいです。

どのように設定すればよいのか分からず、ルートが最終的にどのようになるかについて混乱しています。

「全体像」を理解するために、以下の具体的な例を挙げていただけますか。

  • OpenVPN クライアントのローカル IP アドレス
  • OpenVPNクライアントが使用するゲートウェイIP
  • OpenVPNサーバーのルート出力

基本的に私は少し迷っています。始める前に、OpenVPN サーバーでルーティングがどのように行われるかを理解したいと思います。

私の理解では、OpenVPN クライアントは OpenVPN サーバーと同じネットワーク (たとえば、10.0.0.0/8 ネットワークを使用) 上にあるはずですが、クライアントがどのようにして 'tun' インターフェイスを使用して最終的に 94.xx.yy.254 ゲートウェイを使用するかを理解しようとすると、精神的な壁にぶつかってしまいます。

答え1

VPN クライアントの IP 設定が次のようになっているとします。

IP eth0: 192.168.1.100
Default gateway: 192.168.1.1

したがって、すべての非ローカル トラフィックは 192.168.1.1 を介して送信されます。LAN 上の別のホストへのトラフィックがある場合は、そのホストに送信されます。

OpenVPN が起動し、クライアントは新しいインターフェース tun0 を取得し、次のような画面が表示されます。

IP eth0: 192.168.1.100
IP tun0: 10.8.0.13
Default gateway: 192.168.1.1
VPN routing: 10.8.0.1 for the network 10.8.0.0/24

これは、OpenVPN サーバーが追加のルートをプッシュしていないことを前提としています。したがって、たとえば 8.8.8.8 に送信されるネットワーク パケットは、引き続き LAN のデフォルト ゲートウェイである 192.168.1.1 を通過します。たとえば 10.8.0.204 に送信されるパケットは、OpenVPN トンネルを通過して 10.8.0.1 の OpenVPN サーバーに送られ、さらにルーティングされます。

OpenVPN サーバーが LAN のルート (たとえば 172.16.0.0/24) をプッシュする場合、上記の VPN ルーティングは次のようになります。

VPN routing: 10.8.0.1 for the network 10.8.0.0/24
             10.8.0.1 for the network 172.16.0.0/24

したがって、同様に、172.16.0.24 宛のパケットは、さらにルーティングするために 10.8.0.1 に送られます。

OpenVPN サーバーも設定をプッシュしている場合は"redirect-gateway def1"、VPN クライアントのデフォルト ゲートウェイが異なります。次のような表示になります。

IP eth0: 192.168.1.100
IP tun0: 10.8.0.13
Default gateway: 10.8.0.1
  (other gateway with lower priority): 192.168.1.1
Static route: 94.xx.yy.zz uses 192.168.1.1

ここで、94.xx.yy.zz は OpenVPN サーバーのパブリック IP アドレスです。

この場合、OpenVPN サーバーに直接送信されるトラフィックは、LAN デフォルト ゲートウェイ 192.168.1.1 を通過します。192.168.1.0/24 にローカルなトラフィックは、予想どおりホストに送信されます。その他のトラフィックは 10.8.0.1 を使用します。OpenVPN サーバーのパブリック IP に直接送信されない非ローカル トラフィックは、VPN トンネルを通過し、94.xx.yy.254 から送信されます。

ルーティング テーブルに、ゲートウェイとして 192.168.1.1 を保持する別のデフォルト ルートが表示される場合がありますが、その優先度は 10.8.0.1 よりも低くなります。これは、VPN がシャットダウンしたときにデフォルト ルートを何に戻すかを知るための、OpenVPN クライアントによるプレースホルダーのようなものだと思います。そのエントリについては心配する必要はありません。

関連情報