在远程专用网络上有两台服务器——一台文件服务器和一台数据库服务器(如果有关系的话,这些都是 Win 机器)。
文件服务器有自己相当强大的身份验证机制,并允许我直接从远程位置连接。
数据库服务器使用简单的用户名和密码,为了防止未经授权的访问,它被锁定在本地网络中 - 外部流量被阻止。
为了访问数据库服务器,我使用 Windows 上的 OpenVPN 客户端连接到私有网络上的 VPN 服务器。
默认情况下,OpenVPN 会通过 VPN 路由所有发往 VPN 服务器所在远程网络的网络数据包。不幸的是,通过 VPN 访问文件服务器极其慢的!
问题:
如何配置 OpenVPN 客户端以仅通过 VPN 路由发往单个特定 IP 地址(即数据库服务器)的流量?
答案1
OpenVpn 的正确配置是:
route-nopull
route 192.168.0.0 255.255.255.0
这些条目属于您的 .ovpn 文件,并将通过 VPN 引导所有 192.168.0.* 子网流量。
仅适用于一个IP(192.168.0.1):
route-nopull
route 192.168.0.1 255.255.255.255
顺便说一句:route-nopull
意思是“不要从服务器拉取路线”
答案2
目标
- 默认使用普通互联网连接进行所有互联网流量,即使已连接 VPN。
- 通过 VPN 将流量路由到一个特定的 IP 地址。
脚步
按Win+R并执行
ncpa.cpl
。右键单击 VPN 连接并转到属性 → 网络。
选择Internet 协议版本 4并转到属性 → 高级...。
取消选中在远程网络上使用默认网关并点击好的。
(可选)重复上述步骤Internet 协议版本 6。
(重新)连接到您的 VPN。
打开命令提示符并执行
route print -4
。在接口列表和它的门户在活跃路线。
在我的计算机上,我有:
Interface List 32...........................Super Free VPN [...] Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 On-link 10.6.6.127 31 10.0.0.0 255.0.0.0 10.88.1.1 10.88.1.102 31
这里,VPN 的网关是
10.88.1.1
,因为它是该块的网关10.xxx.xxx.xxx
。添加一条持久路由,只要连接到 VPN,该路由就会附加到活动路由中:
route -p add 23.22.135.169 10.88.1.1 if 32
本例中,
23.22.135.169
是 的IPwhatismyip.org
,10.88.1.1
是网关的IP, 是32
接口号。(可选)对 重复前面的步骤
route print -6
。测试设置。
如果一切顺利的话,whatismyip.org和www.whatismyip.cx现在将显示不同的 IP。
答案3
在你的 OpenVPN 客户端配置中,添加如下一行:
route The.IP.To.Go 255.255.255.255
(其中 The.IP.To.Go 是您希望通过 VPN 路由的 IP)
这将指示 OpenVPN 在您的操作系统的路由表中创建条目。
或者,可以通过在服务器配置中添加以下内容,让 OpenVPN 服务器将此路由配置“推送”到客户端:
push "route The.IP.To.Go 255.255.255.255"
编辑:有一件事我错过了解决 - 所有流量的默认转发...它可以在服务器上禁用,或者客户端可以选择忽略“推送”指令(因此我们的第二个选项“推送”路由不起作用)通过:
route-nopull
答案4
iptables -A PREROUTING -t mangle -i <LAN_interface> \
-d <remote_network>/<remote_netmask> -j ROUTE --gw <openvpn_host_ip>