OpenVPN:仅通过 VPN 路由特定 IP 地址?

Bri*_*acy 73 windows routing openvpn tunnel

在远程专用网络上有两台服务器——一个文件服务器和一个数据库服务器(这些都是 Win 机器,以防万一)。

文件服务器有自己相当强大的身份验证机制,并允许我直接从远程位置进行连接。

数据库服务器使用简单的用户名和密码,因此为了防止未经授权的访问,它被锁定到本地网络——外部流量被阻止。

为了访问数据库服务器,我使用 Windows 上的 OpenVPN 客户端连接到专用网络上的 VPN 服务器。

默认情况下,OpenVPN 通过 VPN 路由所有发往 VPN 服务器所在远程网络的网络数据包。不幸的是,通过VPN 访问文件服务器极其缓慢!

题:

如何将 OpenVPN 客户端配置为仅通过发往单个特定 IP 地址(即数据库服务器)的 VPN 路由流量?

小智 89

OpenVpn 的正确配置是:

route-nopull 
route 192.168.0.0 255.255.255.0
Run Code Online (Sandbox Code Playgroud)

这些条目属于您的 .ovpn 文件,并将通过 VPN 引导所有 192.168.0.* 子网流量。

仅针对一个 IP (192.168.0.1):

route-nopull 
route 192.168.0.1 255.255.255.255
Run Code Online (Sandbox Code Playgroud)

顺便说一句:route-nopull意思是“不要从服务器拉取路由”

  • 我们主要讲英语,不一定懂德语。请翻译您的答案。 (2认同)
  • 是否可以使用 dns 名称而不是 ip 地址? (2认同)
  • 对我来说,“route-nopull”的问题是它阻止服务器向我提供其 DNS 服务器。我*确实*想要VPN dns,但我*不*想路由_所有_ ips...挖掘。 (2认同)

Den*_*nis 29

目标

  • 默认情况下,所有互联网流量都使用普通互联网连接,即使 VPN 已连接。
  • 通过 VPN 将流量路由到一个特定的 IP 地址。

脚步

  1. Win+R并执行ncpa.cpl

  2. 右键单击 VPN 连接并转到Properties → Networking

  3. 选择Internet协议版本4,去属性→高级...

  4. 取消选中在远程网络上使用默认网关,然后单击确定

  5. (可选)对Internet 协议版本 6重复前面的步骤。

  6. (重新)连接到您的 VPN。

  7. 打开命令提示符并执行route print -4.

  8. Interface 列表中找到VPN 的接口,在Active Routes 中找到它的网关。

    在我的机器上,我有:

    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
    
    Run Code Online (Sandbox Code Playgroud)

    在这里,VPN 的网关是10.88.1.1,因为它是10.xxx.xxx.xxx块的网关。

  9. 添加一条持久路由,该路由将在与 VPN 建立连接时附加到活动路由:

    route -p add 23.22.135.169 10.88.1.1 if 32
    
    Run Code Online (Sandbox Code Playgroud)

    在本例中,23.22.135.169是 的IP whatismyip.org10.88.1.1是网关的IP 和32接口的编号。

  10. (可选)对 重复前面的步骤route print -6

  11. 测试设置。

    如果一切工作,whatismyip.orgwww.whatismyip.cx现在将显示不同的IP地址。

  • @ЕлинЙ。如果您使用的是网络管理器,只需选择“仅将此连接用于此网络上的资源”。 (3认同)
  • 肯定有更简单的方法吗? (2认同)
  • +1 ...但是可以打高尔夫球吗? (2认同)

小智 18

在您的 OpenVPN 客户端配置中,添加如下一行:

route The.IP.To.Go 255.255.255.255
Run Code Online (Sandbox Code Playgroud)

(其中 The.IP.To.Go 是您希望通过 VPN 路由的 IP)

这会指示 OpenVPN 在您的操作系统的路由表中创建条目。

或者,可以通过添加到服务器配置,使 OpenVPN 服务器将此路由配置“推送”到客户端:

push "route The.IP.To.Go 255.255.255.255"
Run Code Online (Sandbox Code Playgroud)

编辑:我错过的一件事 - 所有流量的默认转发......它可以在服务器上禁用,或者客户端可以选择忽略“推送”指令(因此我们的第二个选项“推送”路由不起作用) 通过:

route-nopull
Run Code Online (Sandbox Code Playgroud)


小智 5

为了回应要求使用简单的 linux/networkmanager 友好解决方案来自定义通过 OpenVPN 路由的内容的评论,这里有一个 GUI 友好的设置方式。据我所知,这个答案只是Thomas's answer的 GUI 版本。

显示单击位置的网络管理器屏幕截图

第 1 步:选择您的 VPN 配置

第 2 步:转到相关选项卡(IPv4 或 IPv6)

第 3 步:点击右下角的“路线...”按钮

第 4 步:添加您想要的路由(在本例中,它通过 VPN 重定向来自 192.168.0.* 的所有流量

第 5 步:选中“仅用于此连接上的资源”复选框,以便连接到 VPN 不会更改您的默认网关设置以通过 VPN 路由所有流量。