You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在GCP环境的OpenVPN Access Server中配置特定外部域名通过VPN隧道路由

实现特定域名通过OpenVPN隧道路由(无需额外软件)

没问题,我来帮你搞定这个需求——在GCP上启用了拆分隧道的OpenVPN Access Server中,让特定域名的流量走VPN隧道,完全不需要额外工具,直接用OpenVPN自带的配置就能实现。下面分两种场景给你详细步骤:

一、静态IP域名(IP固定不常变)

如果目标域名的IP是固定的,直接通过OpenVPN Access Server的管理控制台配置即可:

  1. 登录OpenVPN Access Server的Admin Web UI(通常是https://你的VPN服务器公网IP:943/admin
  2. 导航到 VPN Settings -> Client Settings
  3. 滚动到Customization区域,找到Additional OpenVPN Config Directives
  4. 添加针对目标域名IP的路由推送命令:
    • 如果是单个IP的域名:push "route 198.51.100.10 255.255.255.255"(把IP换成你域名解析后的实际地址)
    • 如果是整个IP网段:push "route 192.0.2.0 255.255.255.0"(比如目标域名的所有IP都在这个网段内)
  5. 点击Save Settings,然后点击Update Running Server使配置生效

二、动态IP域名(IP频繁变化,比如Cloudflare托管的域名)

如果目标域名的IP经常变动,手动加路由太麻烦,可以用脚本定期自动更新:

1. 编写自动更新脚本

创建一个shell脚本(比如update_vpn_routes.sh),内容如下:

#!/bin/bash
# 替换成你要路由的目标域名
TARGET_DOMAIN="example.com"
# OpenVPN Access Server配置文件路径(默认路径)
CONFIG_FILE="/usr/local/openvpn_as/etc/as.conf"

# 获取域名的所有A记录IP
TARGET_IPS=$(dig +short A $TARGET_DOMAIN)

# 清空旧的路由推送配置
sed -i "/custom_client_config = push \"route/d" $CONFIG_FILE

# 生成新的路由推送命令
for IP in $TARGET_IPS; do
  echo "custom_client_config = push \"route $IP 255.255.255.255\"" >> $CONFIG_FILE
done

# 重启OpenVPN服务使配置生效
/usr/local/openvpn_as/scripts/openvpn-init --restart

2. 设置定时任务

用crontab让脚本定期执行(比如每小时更新一次):

  1. 执行crontab -e编辑定时任务
  2. 添加一行:0 * * * * /path/to/update_vpn_routes.sh(替换成你的脚本实际路径)
  3. 保存退出即可

三、验证配置是否生效

客户端连接VPN后,可以通过以下方式验证:

  • Windows:执行tracert 目标域名,查看路由路径是否经过VPN服务器的IP
  • Linux/macOS:执行traceroute 目标域名,确认第一跳之后的节点是VPN服务器
  • 查看路由表:Windows用route print,Linux用ip route,macOS用netstat -nr,检查目标域名的IP对应的路由是否指向VPN接口

关键说明

  • 完全不需要额外软件,所有操作都是基于OpenVPN Access Server自带的路由推送功能和Linux基础工具实现的
  • 拆分隧道模式下,只有你指定的域名IP会走VPN,其他流量依然直接走本地互联网,符合你的需求

内容的提问来源于stack exchange,提问作者Nishchal Dinesh

火山引擎 最新活动