web-dev-qa-db-ja.com

OpenVPNクライアント経由でインターネットトラフィックをルーティングする方法

私の使用例:machine Bからmachine Aまでのすべてのインターネットトラフィックをルーティングしたい。ただし、machine Aは、制御できないNAT /ファイアウォールのレイヤーの背後にあるため、machine AにOpenVPNサーバーをインストールすることはできません。私の現在の解決策はOpenVPNサーバーをmachine Cにインストールし、machines ABの両方をCに接続することですクライアント。私はBからのすべてのトラフィックがA経由でルーティングされるように適切なルートを設定しようとしています。各マシンのセットアップと私が試みた手順の詳細は以下のとおりで、残りの問題は最後から2番目の段落にあります。

現在、machine CはLinuxおよびOpenVPNサーバーをDockerコンテナーで実行します( https://github.com/kylemanna/docker-openvpn )。 redirect-gateway def1を使用すると、両方のクライアントマシンがサーバー経由でトラフィックを接続およびルーティングできます( https://ipleak.net はサーバーIPを確認します)。ただし、以下のテストでは、redirect-gateway def1が削除され、topology subnetclient-to-clientが追加されています。サーバーにはサブネットIP 192.168.255.1とパブリックIP AAA.BBB.CCC.DDDがあります。

machine AはWindowsを実行し、IPEnabledRouter=1HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\に設定され、サービスRouting and Remote AccessAutomaticに設定されて実行され、インターネットアクセスが共有を許可するように設定されたネットワークアダプターOpenVPN TAPアダプターから。 192.168.255.2が割り当てられています。

machine BはWindowsを実行し、IP 192.168.1.100のルーターの背後にあります。 OpenVPNサブネットIP 192.168.255.3が割り当てられています。 OpenVPNが自動的にセットアップするものに加えて、次のルートが追加されます。

Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0        128.0.0.0    192.168.255.2    192.168.255.3    259
        128.0.0.0        128.0.0.0    192.168.255.2    192.168.255.3    259
  AAA.BBB.CCC.DDD  255.255.255.255      192.168.1.1    192.168.1.100    291

machine Bから、machine A192.168.255.2でpingを実行できますが、インターネットトラフィックは引き続きOpenVPNサーバー経由でルーティングされます(ipleakはAAA.BBB.CCC.DDDを示します)。ルートroute add default gw 192.168.255.2 tun0を追加しようとしましたが、これによりクライアントがインターネットにアクセスできなくなります。サーバールートテーブルは通常、次のようになります。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.19.0.1      0.0.0.0         UG    0      0        0 eth0
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
192.168.254.0   192.168.255.2   255.255.255.0   UG    0      0        0 tun0
192.168.255.0   0.0.0.0         255.255.255.0   U     0      0        0 tun0

どうすればこれを機能させることができますか?

[編集]使用例のもう少しコンテキスト:ユーザーのホームコンピュータmachine Bがアクセスを制限するサードパーティのリソースにアクセスできるように、部門にVPNを設定する必要がありますIPアドレスで。 machine Aへのアクセスはブロックされていませんが、組織の上方に少なくとも2層のNAT /ファイアウォールがあり、その管理者は受信接続を支援するために設定を変更したくありません。したがって、VPNサーバーとしてVPSである可能性があるmachine Cを使用して、実用的なソリューションを考案したいと考えています。公式のVPNサービスがありますが、特定の外部メンバーに公開されているため、サードパーティベンダーはそのIPアクセスを許可しません。

Network Diagram

2
Roc White

原則として、セットアップは RoutedLans に似ていますが、machine Aを設定して0.0.0.0を処理することはできません。このSF answer は、TUNインターフェースを使用するゲートウェイとして別のクライアントを介してパケットを送信できない理由を説明しています。ただし、これに対する最初のコメントによる回避策 answer があります。

machine C

  1. 以下をサーバー構成に追加します。
topology subnet
client-to-client

route 1.0.0.0 255.0.0.0
route 2.0.0.0 254.0.0.0
route 4.0.0.0 252.0.0.0
route 8.0.0.0 248.0.0.0
route 16.0.0.0 240.0.0.0
route 32.0.0.0 224.0.0.0
route 64.0.0.0 192.0.0.0
route 128.0.0.0 128.0.0.0

Push "route 1.0.0.0 255.0.0.0"
Push "route 2.0.0.0 254.0.0.0"
Push "route 4.0.0.0 252.0.0.0"
Push "route 8.0.0.0 248.0.0.0"
Push "route 16.0.0.0 240.0.0.0"
Push "route 32.0.0.0 224.0.0.0"
Push "route 64.0.0.0 192.0.0.0"
Push "route 128.0.0.0 128.0.0.0"
  1. machine Aclient-config-dirにirouteと静的IPを設定します。
ifconfig-Push 192.168.255.2 255.255.255.0
Push "route 192.168.255.0 255.255.255.0 192.168.255.1"

iroute 1.0.0.0 255.0.0.0
iroute 2.0.0.0 254.0.0.0
iroute 4.0.0.0 252.0.0.0
iroute 8.0.0.0 248.0.0.0
iroute 16.0.0.0 240.0.0.0
iroute 32.0.0.0 224.0.0.0
iroute 64.0.0.0 192.0.0.0
iroute 128.0.0.0 128.0.0.0

machine A

  1. HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\で、IPEnableRouter=1を設定します。

  2. サービスRouting and Remote AccessAutomaticに設定し、実行されていることを確認します。

  3. OpenVPN TAPアダプターからの共有を許可するには、ネットワークアダプターにインターネットアクセスを設定します。マシンを再起動するたびに共有を無効にし、再度有効にする必要があるようです。

machine Bの場合:redirect-gateway def1がクライアント構成にあることを確認します。

1
Roc White