Linux のホストマシンで仮想マシンの Windows の VPN 接続を使用する

Screenshot from 2024-09-26 20-49-18

日本で中国のクライアントのサービスにアクセスするために、いろいろと比較した結果、最終的には梯子を買いました

しかし、この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

Comments

添加新评论

注意:评论会以邮件形式发送给我

Comment Atom Feed