OpenVPN 服务器无法 ping 客户端

OpenVPN 服务器无法 ping 客户端

我在 Debian 服务器上设置了 OpenVPN。客户端可以连接,客户端可以 ping 并访问服务器上的资源(Samba 共享和内联网)。

然而,服务器无法 ping 通客户端 - 它只是超时了。

图表

Client OpenVPN assigned IP: 10.67.15.26
   ↓ UDP on 1194
Internet
Router port-forwards 1194 to server
Server LAN IP: 10.67.5.1

服务器 OpenVPN 配置(相关位)

port 1194
proto udp
dev tun
server 10.67.15.0 255.255.255.0
push "route 10.67.5.0 255.255.255.0"

服务器路由表

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.67.15.2      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.67.15.0      10.67.15.2      255.255.255.0   UG    0      0        0 tun0
10.67.5.0       0.0.0.0         255.255.255.0   U     0      0        0 eth1
0.0.0.0         10.67.5.254     0.0.0.0         UG    0      0        0 eth1

服务器防火墙

我暂时禁用了服务器的防火墙,所有链的策略都为“接受”,并且所有转发标志都已设置:

1 : /proc/sys/net/ipv4/conf/all/forwarding
1 : /proc/sys/net/ipv4/conf/default/forwarding
1 : /proc/sys/net/ipv4/conf/lo/forwarding
1 : /proc/sys/net/ipv4/conf/eth1/forwarding
1 : /proc/sys/net/ipv4/conf/tun0/forwarding
1 : /proc/sys/net/ipv4/ip_forward

测试用例:

客户端:ping 10.67.5.1有效,其他资源也一样。

服务器:ping 10.67.15.26超时。

答案1

通过比较两个不同的客户端,我能够识别并修复两个问题。

问题 1:路由

由于某种原因(我不确定我是否已经解决了这个问题),服务器的路由表总是忘记往返于其 LAN(10.67.5.0/24)的路由。这导致所有出站 LAN 流量都通过其主网关,而主网关不会路由到 OpenVPN LAN(10.67.15.0/24)。这导致从 OpenVPN 网络发往 LAN 的流量在主网关处失败;因此 ping 被发送,但回复被丢弃。

编辑:不幸的是,我不知道是什么原因导致这条路由被丢弃;正如您所见,它位于上面的路由表中。我尝试将路由命令添加到 /etc/network/interfaces 中,但结果却出现了两条重复的相同路由,因此我再次将其删除。这是我的构建器导致该路由被丢弃的配置:当设置 eth1 适配器时,我给出了 /32 网络掩码(即主机)而不是 /24(用于 LAN)。

通过测试 Debian 客户端,我能够解决这个问题,在此之后,它可以工作,但 Windows 7 客户端却不能。

问题 2:Windows 7 防火墙/配置

Windows 设置存在两个问题。

Windows 必须为 TAP 适配器设置“工作”私有配置文件

本节内容由 kalwi 提供

截至 2020-06-11 的更新

您可以使用以下两个 powershell 命令将接口更改为私有接口:

# this first one will let you see the available connections, 
# find the interface index of the one you would like to change
Get-NetConnectionProfile
Set-NetConnectionProfile -InterfaceIndex NN -NetworkCategory Private

在“网络和共享中心”中,您应该看到(至少)2 个“活动网络”。我有无线网络,然后是“未识别网络”。后者是 OpenVPN TAP 设备,它有一个公园长椅图标,这意味着它被视为公共的、不受信任的。为了能够更改此设置,您需要为适配器添加默认网关。

启动 DOS/Cygwin 终端作为管理员。(启动 Orb > 搜索 CMD > 右键单击​​它 > 以管理员身份运行)。

然后执行route print -4。您将看到一个接口列表。每行都以数字开头,右侧您将看到名称。识别 TAP-Win32 适配器的接口号。我的是 17。

现在添加路线:

route -p add 0.0.0.0 mask 0.0.0.0 1.2.3.4 metric 500 if 17

其中 1.2.3.4 需要是您的 OpenVPN 网关的 IP(在先前命令的输出中显示为 Gateway 列),17 需要是您的 TAP 接口号。该-p选项使路由永久生效。为了进行测试,我首先没有使用这个选项。这确实假设客户端的 OpenVPN 网关 IP 不会在连接之间改变

完成后,会弹出一个对话框,要求您对新网络进行分类。选择工作

此时,我能够将流量从公司 LAN 发送到客户端(使用 netcat 测试),但 ping 仍然没有得到答复。

告诉 Windows 允许 ping(ICMPv4)

启动 Orb > 具有高级安全性的 Windows 防火墙然后转到入站规则和新规则...

  • 自定义规则
  • 所有程序
  • 协议:ICMPv4
  • 允许连接
  • 申请私人档案
  • 说出它的名字。

最后 ping 成功返回。

相关内容