私の使用例:machine B
からmachine A
までのすべてのインターネットトラフィックをルーティングしたい。ただし、machine A
は、制御できないNAT /ファイアウォールのレイヤーの背後にあるため、machine A
にOpenVPNサーバーをインストールすることはできません。私の現在の解決策はOpenVPNサーバーをmachine C
にインストールし、machines A
とB
の両方を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 subnet
とclient-to-client
が追加されています。サーバーにはサブネットIP 192.168.255.1
とパブリックIP AAA.BBB.CCC.DDD
があります。
machine A
はWindowsを実行し、IPEnabledRouter=1
がHKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
に設定され、サービスRouting and Remote Access
がAutomatic
に設定されて実行され、インターネットアクセスが共有を許可するように設定されたネットワークアダプター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 A
に192.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アクセスを許可しません。
原則として、セットアップは RoutedLans に似ていますが、machine A
を設定して0.0.0.0
を処理することはできません。このSF answer は、TUNインターフェースを使用するゲートウェイとして別のクライアントを介してパケットを送信できない理由を説明しています。ただし、これに対する最初のコメントによる回避策 answer があります。
machine C
:
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"
machine A
のclient-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
:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
で、IPEnableRouter=1
を設定します。
サービスRouting and Remote Access
をAutomatic
に設定し、実行されていることを確認します。
OpenVPN TAPアダプターからの共有を許可するには、ネットワークアダプターにインターネットアクセスを設定します。マシンを再起動するたびに共有を無効にし、再度有効にする必要があるようです。
machine B
の場合:redirect-gateway def1
がクライアント構成にあることを確認します。