トンネルモード
Mac の通信が VPN やプロキシアプリを経由していて、ゲストの通信も同じ経路を通る必要がある場合は、tunnel モードを使います。nat と bridged では、ゲストのパケットは VPN を経由しません。
有効にする
マシンを停止してから、次を実行します。
Launchpad では、マシンの Settings… の Network セクションで tunnel を選びます。バンドルの vphone-cli vm config --help に tunnel が表示される必要があります。古いバンドルはこの設定を拒否します。
動作を確認する
-
マシンを起動し、起動が完了するまで待ちます。
-
ゲストのアドレスを読み取ります。
en0に192.168.127.3が表示されるはずです。fe80::のアドレスしか表示されない場合は、DHCP がまだ完了していません。数秒待ってからもう一度試してください。 -
ゲストでページを開きます。
-
Mac で、接続が
vphone-vmに属し、VPN のアドレスを使っていることを確認します。
ゲストから見える内容
プロキシアプリでは、ゲストはマシンの名前が付いた独立したクライアントとして表示され、アプリのルールがほかのアプリと同じように適用されます。
制限
- IPv4 のみ。 ゲストには IPv6 アドレスが割り当てられず、IPv6 の通信は破棄されます。
- 転送したポートを除き、外向きのみ。 ポート転送で指定したポート以外では、Mac や LAN からこのネットワークを通じてゲストに到達することはできません。USB 経由のアクセス(
iproxy、ideviceinstaller)とvphone.sockはゲストのネットワークを使わないため、引き続き動作します。.local名でも USB リンク経由でゲストに到達できます。ネットワーク上の名前をご覧ください。 - ping はゲートウェイにしか届きません。 インターネットへの ICMP は転送されないため、TCP と UDP が動作していても、ゲストでの
ping 1.1.1.1は失敗します。 - スループットは
vphone-vmによって制限されます。 すべてのパケットはこのプロセスで処理されます。ダウンロードやビデオは問題なく動作しますが、VPN が関係しない場合はnatのほうが高速です。
仕組み
VPN が Mac のデフォルトルートを握っている場合(WireGuard、Cloudflare WARP、または Surge や Clash などの TUN モードのプロキシアプリ)、nat と bridged が物理インターフェースから送り出すパケットは VPN を経由しません。暗号化されないまま送られるか、まったく送られません。
tunnel モードでは、ゲストのネットワークカードは vphone-vm の内部で実装されます。ゲートウェイとして DHCP、ARP、ping に応答し、ゲストの各 TCP 接続と UDP フローを Mac 上の通常のソケットに変換します。それらのソケットはほかのアプリと同じく Mac のルーティングテーブルに従うため、VPN がそれらを運びます。root 権限も、新しいネットワークインターフェースも、Mac のネットワーク設定の変更も必要ありません。