编辑 1 - 我的 OpenVPN 客户端配置的详细信息

编辑 1 - 我的 OpenVPN 客户端配置的详细信息

我在 Windows 7 上有一个 OpenVPN 客户端,它使用 tap 连接到 OpenVPN 服务器。
隧道建立正确。
据我所知,tap 意味着我的虚拟适配器“虚拟”连接到远程 LAN,获取远程 LAN IP 并参与 LAN 广播域等。
建立隧道后,我的虚拟适配器获得了正确的IP。
但我无法 ping 通远程网络中的其他主机。
这可能是服务器端的问题,但在检查之前,我注意到客户端有些奇怪,Windows 处理虚拟接口的方式有些奇怪。
让我们开始吧。
当隧道启动时,虚拟接口也会启动。在我的路由表中,我可以看到我的物理网络 192.168.2.0,实际上我的本地 IP 是 192.168.2.134。
然后我可以看到远程网络 172.16.1.0,它直接连接到我的接口 172.16.1.40。到目前为止一切顺利。(我已删除环回条目)

          0.0.0.0 0.0.0.0 192.168.2.1 192.168.2.134 25
       172.16.1.0 255.255.255.0 链接中 172.16.1.40 276
      172.16.1.40 255.255.255.255 链接中 172.16.1.40 276
     172.16.1.255 255.255.255.255 链接中 172.16.1.40 276
      192.168.2.0 255.255.255.0 链接中 192.168.2.134 281
    192.168.2.134 255.255.255.255 链接中 192.168.2.134 281
    192.168.2.255 255.255.255.255 链接中 192.168.2.134 281
        224.0.0.0 240.0.0.0 链接上 172.16.1.40 276
        224.0.0.0 240.0.0.0 链接上 192.168.2.134 281
  255.255.255.255 255.255.255.255 链接中 172.16.1.40 276
  255.255.255.255 255.255.255.255 链接中 192.168.2.134 281

因此,远程网络上的客户端不应通过网关访问,而应通过 openvpn 提供的虚拟接口直接路由。
但是,当我跟踪到远程网络上的主机(我的 PC 应该将其视为本地主机)的路由时,我的客户端将其路由到网关,显然会迷路。

C:\Users\agostinox>tracert 172.16.1.17
  1 1毫秒 1毫秒 1毫秒 192.168.2.1
  2 14毫秒 96毫秒 101毫秒 192.168.1.1
  3 * * * 丰富多彩。
  4 24毫秒 12毫秒 12毫秒 172.17.129.137
  5 * * * 丰富多彩。

这里似乎系统会路由包裹直达门户因为它没有看到直接连接的网络适配器。为什么会发生这种情况?

编辑 1 - 我的 OpenVPN 客户端配置的详细信息

C:\Users\agostinox>openvpn --version
OpenVPN 2.3.6 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] 构建于 2015 年 3 月 19 日
库版本:OpenSSL 1.0.1m 2015 年 3 月 19 日,LZO 2.08

我的客户端配置:

远程 xxx.xxx.xxx.xxx
密码 AES-128-CBC
端口 1194
proto tcp 客户端
开发水龙头
ifconfig 172.16.1.40 255.255.255.0
dev-node“本地网络连接 (LAN) 3”
秘密 a_file_containing_my_preshared_key.key
ping 10
康普
动词 4
靜音 10

编辑 2,有关我的服务器配置的详细信息

这是我的 (pfsense) 服务器配置的“备份”。
如您所见,配置已尽可能简化。

<openvpn>
  <openvpn 服务器>
  <vpnid>2</vpnid>
  <模式> p2p_shared_key </模式>
  <协议>TCP</协议>
  <dev_mode>点击</dev_mode>
  <IP 地址 />
  <接口>wan</接口>
  <本地端口>1194</本地端口>
  <description><![CDATA[ 测试点击 OpenVPN 服务器]]>
  </描述>
  <自定义选项/>
  <shared_key>...我的共享密钥,省略...</shared_key>
  <crypto>AES-128-CBC</crypto>
  <engine>无</engine>
  <隧道网络/>
  <隧道网络v6 />
  <远程网络/>
  <remote_networkv6 />
  <gwredir />
  <本地网络/>
  <local_networkv6 />
  <最大客户端数量/>
  <压缩>是</压缩>
  <passtos />
  <客户端到客户端 />
  <动态 IP />
  <pool_enable>是</pool_enable>
  <拓扑子网/>
  <服务器桥接_dhcp />
  <服务器桥接接口 />
  <serverbridge_dhcp_start />
  <serverbridge_dhcp_end />
  <netbios_enable />
  <netbios_ntype>0</netbios_ntype>
  <netbios_scope />
  </openvpn 服务器>
</openvpn>

编辑 3,ipconfig /all 的输出

当隧道启动时,这是

ipconfig /全部
Scheda 以太网 TAP 接口:

   连接所需的特定 DNS 信息:
   描述。 。 。 。 。 。 。 。 。 。 。 。 。 : TAP-Windows 适配器 V9
   身体状况。 。 。 。 。 。 。 。 。 。 。 : 00-FF-7B-FB-32-C0
   DHCP 功能。 。 。 。 。 。 。 。 。 。 。 。 :是
   自动配置能力:是
   同事中已修复 IPv6 区域设置。 : fe80::3838:3c0c:c3c6:fcca%35(首选)
   登录 IPv4。 。 。 。 。 。 。 。 。 。 。 。 :172.16.1.40(首选)
   子网掩码......................:255.255.255.0
   租赁ottenuto。 。 。 。 。 。 。 。 。 。 。 。 : giovedì 2015 年 4 月 16 日 09:57:32
   Scadenza 租赁。 。 。 。 。 。 。 。 。 。 。 : 2016 年 4 月 15 日星期五 09:57:32
   预定义网关。 。 。 。 。 。 。 。 。 :fe80::20c:29ff:fe92:2272%35
   服务器 DHCP . ...
   IAID DHCPv6。 。 。 。 。 。 。 。 。 。 。地址:1107361659
   DUID 客户端 DHCPv6。。。。。。。。。:00-01-00-01-14-AE-89-EA-F0-4D-A2-63-11-97
   服务器 DNS . . . . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                           fec0:0:0:ffff::2%1
                                           fec0:0:0:ffff::3%1
   TCP/IP 上的 NetBIOS。 。 。 。 。 。 。 。 。 。 : 关注

答案1

在 Open VPN 安装的 bin 文件夹中找到 OpenVPNgui.exe、openvpn.exe 和 openvpnserver.exe 文件。右键单击可执行文件,选择属性,然后选择兼容性选项卡。单击“以管理员身份运行此程序”复选框,然后关闭属性面板。完全关闭 OpenVPN(使用任务管理器确认所有可执行文件均未运行)。再次启动 OpenVPN 并再试一次。

答案2

我对 Windows 的 OpenVPN 不是很了解,不过,以下是我对罪魁祸首的判断:

  • 查看 Windows 路由命令的输出,似乎您缺少 OpenVPN 网络的网关条目。没错,您在 VPN 网络上有一个地址(地址 172.16.1.40),但该网络没有定义网关。在我的盒子上,我可以访问多个网络,每个网络都有自己的网关,如下所示:

     0.0.0.0          0.0.0.0      172.20.68.2      172.20.69.3     20
    10.0.3.0    255.255.255.0      172.20.68.5      172.20.69.3     21
    

为了解决这个问题,打开你的 openvpn 服务器配置并添加如下行:

 push "route 172.16.1.0 255.255.255.0"

将其添加到其中。这样可以确保在与服务器的连接建立时向客户端推送正确的路由。

  • 您可能还缺少返回路由 - 有时(并非总是如此,原因我不太明白)您需要iroute在服务器ccd目录中为给定客户端添加配置条目(/etc/openvpn/ccd/<vpn>/<client-id>)。当客户端连接到服务器时,这会调出反向路由。我的一个文件的内容ccd如下:

    iroute 192.168.87.0 255.255.255.0
    

这确保 OpenVPN 服务器可以正确地将内容路由回客户端

  • 我认为您也可以将iroutes 添加到主服务器配置中,但这样即使客户端未连接,它们也会被定义。看起来如下:

    route 192.168.87.0 255.255.255.0 192.168.11.1
    
  • 编辑:还请注意,在 Windows 上运行 OpenVPN 客户端需要管理员权限。否则,OpenVPN 将无法添加路由等(如问题评论中所述)。最好的办法是将其作为服务运行,这样连接就会在启动时自动出现。至少,在我的场景中,这确实很有效。

我想这可能会让你再次行动起来。OpenVPN 真的很棒,我已经成功地将它用于商业和游戏用途一段时间了 :-)

答案3

我感觉您没有从服务器正确推送路由。我注意到您的 VPN 网关是 IPv6 地址。

尝试使用pushserver.conf 中的选项来推送您的路由。您可能还想添加指令,server以便保留客户端子网。

如果您使用的是 Linux,那么您也需要net.ipv4.ip_forward = 1在 VPN 服务器上进行设置sysctl

最好的,

—尤利安

相关内容