このクライアント間 OpenVPN セットアップに欠けているものは何ですか?

このクライアント間 OpenVPN セットアップに欠けているものは何ですか?

静的 IP を使用する複数のクライアントで OpenVPN サーバーをセットアップできました。静的 IP は、ifconfig-push 192.168.254.6 192.168.255.1各クライアントの CCD に行を追加することで設定されます。サーバーから各クライアントに ping または SSH を実行できます。私のサーバー構成には、次の行があります (他の構成とともに):

server 192.168.255.0 255.255.255.0

そして

route 192.168.254.0 255.255.255.0

今、私がやろうとしているのは、あるクライアントから別のクライアントに ssh または curl できるようにすることです。そのため、ドキュメントを読んだ後client-to-client、構成に次の行を追加しました。サーバーを再起動してクライアントを再接続すると、クライアントに次の行が追加されることに気付きましたip route

192.168.255.0/24 via 192.168.255.1 dev tun0

これは、すべてのアドレスが VPN サーバーに送信されることをクライアントに示しているように思われます192.168.255.X。実際、実行して確認してみましたtraceroute 192.168.255.30

traceroute to 192.168.255.30 (192.168.255.30), 30 hops max, 60 byte packets
 1  192.168.255.1 (192.168.255.1)  11.454 ms  14.491 ms  14.493 ms

しかし、接続したい他のクライアントのアドレスは次のようになっているので192.168.254.X、何かが足りないのではないかと思いますが、実際のところ何が足りないのかはわかりません。このルートを手動で追加してみました。

ip route add 192.168.254.0/24 via 192.168.255.1 dev tun0

これは、192.168.254.X などのアドレスも VPN サーバーを通過することを意味します。ただし、その後に実行すると、traceroute 192.168.254.30結果は異なります。

traceroute 192.168.254.30
traceroute to 192.168.254.30 (192.168.254.30), 30 hops max, 60 byte packets

また、クライアント マシンからは ping できますping 192.168.255.1が、 などの 254 範囲の他のクライアントには ping できませんping 192.168.254.30

192.168.254.30私のネットワーク知識は非常に限られています。クライアントが別のクライアントのサービスにアクセスできるようにするには何が欠けているのでしょうか?192.168.254.32

アップデート:新しいクライアントを VPN に接続し、今回は ccd ファイルで 192.168.255.X の範囲の IP を割り当て、テストに使用したクライアントから traceroute を実行しようとしました。255 の範囲でもこのクライアントに接続できず、さらに traceroute を実行すると次のようになります。

この新しいクライアントには があり192.168.255.22、テストクライアントで を実行すると、次のtraceroute 192.168.255.3ようになります。

traceroute to 192.168.255.3 (192.168.255.3), 30 hops max, 60 byte packets
 1  192.168.255.1 (192.168.255.1)  11.481 ms  21.192 ms  21.472 ms

クライアントのない IP 4、5、6 などでも同じことが起こります。22新しいクライアントの IP に到達するまで、次のようになりますtraceroute 192.168.255.22

traceroute to 192.168.255.22 (192.168.255.22), 30 hops max, 60 byte packets

なぜこうなった?

答え1

OpenVPN サーバーを介して異なるサブネット間のトラフィックをルーティングしようとしているようです。これは可能ですが、OpenVPN 構成にいくつか追加の変更を加える必要があります。

最初に注意すべきことは、serverOpenVPN 構成ファイルのディレクティブが、サーバー自体が使用するサブネットを定義することです。この場合、サーバーはサブネットを使用します192.168.255.0/24。つまり、クライアントには範囲内の IP アドレスが割り当てられます192.168.255.X

route一方、ディレクティブは、OpenVPN クライアントから特定のサブネットへのトラフィックのルートを定義します。この場合、ディレクティブrouteは、クライアントからのトラフィックをサブネットにルーティングする必要があることを OpenVPN サーバーに指示します192.168.254.0/24

ただし、これだけでは、クライアントが異なるサブネット間で相互に通信できるようにするには不十分です。OpenVPNpushサーバー構成ファイルにディレクティブを追加する必要もあります。このディレクティブは、OpenVPN サーバーにルートをクライアントにプッシュするように指示し、クライアントがトラフィックを他のサブネットにルーティングする方法を認識できるようにします。

設定ファイル内の push ディレクティブの例を次に示します。

push "route 192.168.254.0 255.255.255.0"

このディレクティブは、OpenVPN サーバーにルートをクライアントにプッシュするように指示し、トラフィックを192.168.254.0/24OpenVPN サーバー経由でサブネットにルーティングするようにクライアントに指示します。

また、サーバー構成でディレクティブが有効になっていることを確認する必要がありますclient-to-client。このディレクティブは、OpenVPN サーバーに、トラフィックをサーバー経由でルーティングせずにクライアントが直接通信できるようにするよう指示します。

構成にこれらの変更を加えると、クライアントを OpenVPN サーバーに接続し、異なるサブネット間で相互に通信できるようになります。

client-to-clientこのディレクティブは、同じサブネットを使用しているクライアント同士の通信のみを許可することに注意してください。たとえば、クライアントの IP アドレスがその192.168.255.X範囲内にある場合、そのクライアントは、同じくその範囲内の IP アドレスを持つ他のクライアントとのみ通信できます192.168.255.X。異なるサブネットのクライアント同士が通信するには、上記のように push ディレクティブを使用する必要があります。

関連情報