Linux のホストマシンで仮想マシンの Windows の VPN 接続を使用する
日本で中国のクライアントのサービスにアクセスするために、いろいろと比較した結果、最終的には梯子を買いました。
しかし、このVPNはWindowsのクライアントしか提供されておらず、Linuxで使うのはかなり手間がかかります。
この記事「ホストマシンで仮想マシンのVPN接続を使う方法」 に従って設定しました。
方法としては、まず仮想マシンに二つのネットワークカードを設定します。一つはNAT、もう一つはHost-Onlyです。Host-OnlyはVirtualBoxのネットワークマネージャーで事前に設定しておきます。
その後、ホストオンリーネットワークにVPN接続を共有し、仮想マシンのVPNをvboxnet0のイーサネット 2(192.168.56.2)インターフェースを通してホストマシンに共有します。
利便性を高めるために、次のスクリプトを書き、一連のアドレスを定義しました。実行前に仮想マシンをpingし、仮想マシンが起動していない場合はルーティングをクリアします。
もし仮想マシンが起動していれば、ルートを定義または更新します。
このように、仮想マシンがバックグラウンドで起動しているだけで、ホストマシンはシームレスにVPN経由で中国にアクセスできます。
#!/bin/bash
# 定义IP地址列表
ip_addresses=(
"101.42.222.1/32"
"101.42.222.2/32"
"101.42.222.3/32"
)
echo "用法: $0 [d-删除全部路由规则]"
echo ""
sudo ip addr flush dev vboxnet0 # 清除vboxnet0的IP地址
sudo ip addr add 192.168.56.1/24 dev vboxnet0 # 重新添加IP地址
# 检查参数
if [ "$1" = "d" ]; then
# 删除路由
for ip in "${ip_addresses[@]}"; do
sudo ip route del $ip
echo "已删除路由: $ip"
done
echo "❌ 所有路由已删除。"
else
# 定义默认网关IP
default_gateway="192.168.56.2" # 网关
# 检查命令行参数是否提供了自定义网关IP
if [ "$#" -eq 1 ]; then
default_gateway="$1"
fi
# 直接添加或更新路由,不进行 ping 检查
for ip in "${ip_addresses[@]}"; do
sudo ip route replace $ip via $default_gateway dev vboxnet0
echo "已添加或更新路由: $ip via $default_gateway dev vboxnet0"
done
sudo ip link set vboxnet0 down # 关闭vboxnet0
sudo ip link set vboxnet0 up # 打开vboxnet0
echo "已重启 vboxnet0 网络接口"
echo ""
ip addr show vboxnet0
echo "✅ 所有路由已添加或更新。"
fi
- 前の記事: 簡単なモダンな VIM の設定
- 次の記事: Windows 11 でタスクバーを縮小する方法