仮想マシン内でのみアクセスできる(ブリッジアダプタは不要)、VPNを介してトラフィックをルーティングするにはどうすればよいですか?

仮想マシン内でのみアクセスできる(ブリッジアダプタは不要)、VPNを介してトラフィックをルーティングするにはどうすればよいですか?

tun0成功した認証インターフェイスの後にVPNを生成するベンダー提供のクライアントを使用して、特定の(古い)バージョンのUbuntu(および/またはWindows)を介してのみ接続できる会社VPNがある興味深い状況があります。プライベートLinuxコンピュータで別のディストリビューションを使用していますが、ライブラリの問題によりVPNクライアントは実行されません。

回避策として、VMがブリッジモードで構成されているときにUbuntu VM(VirtualBox内)をルーターとして機能するように構成する方法を概説しました。残念ながら、これはブリッジされたVMの別のIPを問題なく取得できるため、一部のネットワーク(ホームネットワークなど)では機能しますが、多くのパブリックネットワークでは機能しません。

VMは2つのネットワークアダプタ(1つはNATを使用し、もう1つはホスト専用接続)を使用してこれを行うことができるはずですが、トラフィックを自分のデバイスに送信できるようにルーティングを設定する方法がわかりません。 VPNトンネルを介してホストします。

これまでの設定は次のとおりです。

[host]$ VBoxManage list hostonlyifs 

Name:            vboxnet0
GUID:            786f6276-656e-4074-8000-0a0027000000
DHCP:            Disabled
IPAddress:       192.168.56.1
NetworkMask:     255.255.255.0
IPV6Address:     fe80::800:27ff:fe00:0
IPV6NetworkMaskPrefixLength: 64
HardwareAddress: 0a:00:27:00:00:00
MediumType:      Ethernet
Wireless:        No
Status:          Up
VBoxNetworkName: HostInterfaceNetworking-vboxnet0

ゲストインターフェイス(VPN接続後 - enp0s3NATアダプタ、enp0s8ホスト専用アダプタ):

[guest]$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:b2:d9:c2 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 83176sec preferred_lft 83176sec
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:3c:81:82 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.101/24 brd 192.168.56.255 scope global dynamic noprefixroute enp0s8
4: tun0: <POINTOPOINT,UP,LOWER_UP> mtu 1384 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet XXX.XXX.XXX.XXX peer 1.1.1.1/32 scope global tun0

ゲストでは、次のコマンドを使用してホスト専用アダプタと VPN トンネル間の変換をイネーブルにします。

sudo sysctl net.ipv4.conf.all.forwarding=1
sudo sysctl net.ipv6.conf.all.forwarding=1
sudo iptables -A FORWARD -i enp0s8 -o tun0 -j ACCEPT
sudo iptables -A FORWARD -i tun0 -o enp0s8 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

ホストの192.168.56.1デフォルトパスを(ホストvmアダプタのみ)に置き換えることはできますが、明らかにデータはまったく出ることはできません。 VMはそれ自体がインターネットにアクセスできないため、ホストを介してインターネットを行き来するトラフィックが必要ですが、VMのVPN接続を介してできるだけ多くのトラフィックを強制的に適用したいと思います。近づいているようでこれが可能なようですが、不足している部分が何であるかよくわかりません。

ところで、SOCKSプロキシをVMにSSHで接続すれば、一部のアプリケーションで動作させることができると思いますか?可能であれば、すべてのトラフィックをVPN経由でルーティングしたいと思います。

編集する:

以下は、私が言う内容をある程度示す図です。これにより、より明確になることを願っています。混乱しているのは、仮想マシンのトラフィックがtun0インターネットに到達するにはブリッジアダプタを通過する必要があることです。トラフィックが点線を越えずにVMを完全に通過し、その方向に出るようにルーティングを設定することが可能かどうかはわかりません。 VMを介してすべてのトラフィックを送信すると(デフォルトのパスをホストアダプタにのみ変更)、ループに入り、トラフィックがインターネットにまったく接続されません。

必須ネットワーク図

ベストアンサー1

2つのオプションがあるようです。

  1. VPNがないとアクセスできない特定の範囲の(会社)ホストにデフォルト以外のルートを追加します。たとえば、10.0.0.0/8企業サブネットにアクセスしようとすると、次のようにパスを追加できます。ip route add 10.0.0.0/8 via 192.168.56.101これは、ホストアダプタ(/)192.168.56.101にのみ存在するゲストのIPアドレスです。もちろん、企業のDNSサーバーを使用してDNSも更新する必要があります。vboxnet0enp0s8/etc/resolv.conf

    • 利点:ブリッジアダプタなしで動作します。実際、私はNATアダプタでこの設定を頻繁に使用します。
    • 欠点:会社のトラフィックのみがVPN経由でルーティングされます。これは実際には良い副作用かもしれませんが、あなたの質問によると望ましくありません。
  2. ゲストが専用アダプタに完全にアクセスできるようにデバイスパススルーを使用すると、ブリッジアダプタ(たとえば)は必要ありませんwlp2so。たとえば、USB Wi-Fiアダプタを使用できます。

    • 利点:すべてのトラフィックはVPN経由でルーティングできます。
    • 欠点:ゲストのための特別な機器が必要です。

おすすめ記事