VPN クライアントが LAN サーバーにアクセスできるようにする方法

VPN クライアントが LAN サーバーにアクセスできるようにする方法

VPN クライアントが「イントラネット」上のサーバーにアクセスできるようにする方法を理解するために、助けが必要です。

私は ovh に専用/物理サーバーを 1 台所有しており (これが重要な場合)、4 つの追加 IP を持っています。インストールされている OS は proxmox で、ネットワーク デバイスは 2 つあります (タイプは「Linux ブリッジ」)。1 つにはサーバーのパブリック IP (vmbr0) が割り当てられており、もう 1 つ (vmbr1) には IP 172.20.0.1 とネットマスク 255.252.0.0 が割り当てられています。

私は、vmbr1 のみが割り当てられている仮想マシンをいくつか作成しました。これらのマシン間では問題なく ping を実行できます。また、これらのマシンから、まるで自宅のルーターの背後にあるかのようにインターネットにアクセスできます。問題になるかどうかはわかりませんが、172.20.0.2 には DHCP サーバーがあり、172.20.0.3 と 172.20.0.4 には 2 つの DNS サーバーがあります。

vmbr0 と vmbr1 の両方が割り当てられた別の仮想マシンを作成しました。vmbr0 に追加のパブリック IP の 1 つを構成し、そこに SSH で接続できます。また、openvpn をインストールし、クライアントが VPN サーバー経由でインターネットにアクセスできるように構成しました。VPN クライアントは、10.8.0.0/24 ネットワークから IP を取得します。

私が今やりたいことは、172.20.0.0/14 のすべてのサーバーが 10.8.0.0/24 ネットワーク上の VPN クライアントに ping/ssh などを実行できるようにすることです。

私は、openvpn サーバーがクライアントにいくつかのルートをプッシュするようにする必要があることに気付きました (クライアントが他のネットワークについて知るため)。

proxmox ホスト自体で何かを行う必要があることはほぼ確実です (172.20.0.0/14 ネットワークのゲートウェイがあるため)。また、ネットワーク間のトラフィックを転送/マスカレードするために、openvpn サーバー自体に iptable ルールをいくつか追加する必要があると考えていますが、どのようなルールが必要なのか正確にはわかりません。

そこで質問ですが、この設定で VPN クライアントが仮想サーバーにアクセスできるようにするには、何をする必要がありますか?

答え1

OpenVPN ホストにファイアウォールがない場合、デフォルトでトラフィックが許可されるので、無視できます。

内部サブネット宛のトラフィックが VPN 経由でルーティングされるようにするには、クライアントにルートをプッシュする必要があります。これは、デフォルト ルート (すべてのトラフィックがクライアントから VPN 経由で送信される) または内部サブネットの特定のルートになります。VPN 構成でこれをプッシュできることがわかっています (証明書ベースの認証を使用している場合)。

OpenVPN ホストで IP 転送を有効にする必要があります。 を使用してsysctlの値をnet.ipv4.conf.all.forwarding1 に設定します。 を再起動してもこれが維持されるようにするには、 にファイルを追加します/etc/sysctl.d

ローカル ホストには、OpenVPN サブネットにアクセスする方法を確実に認識するためのルートも必要です。次のいずれかを実行できます。

  • OpenVPN ホストで NAT を使用して、転送されたパケットが内部 IP から送信されたように見えるようにします。これにより、10.8.0.0/24 サブネットの存在が隠されるため、他のデバイスがそのサブネットを認識する必要がなくなりますが、すべての VPN クライアントからのすべてのトラフィックが単一のホストから送信されたように見えることになります。

  • 10.8.0.0/24 宛てのトラフィックが OpenVPN ホストに確実に送信されるようにルートを設定します。これらは各 VM またはホスト マシンに追加できます。ツールを使用してroute、ネットワーク インターフェイス宣言にコマンドを追加し、再起動後も維持されるようにします。

関連情報