我在 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 适配器设置“工作”私有配置文件
截至 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 成功返回。