我在 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
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我暂时禁用了服务器的防火墙,所有链的策略都接受并设置了所有转发标志:
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
Run Code Online (Sandbox Code Playgroud)
客户:ping 10.67.5.1
和其他资源一样有效。
服务器:ping 10.67.15.26
超时。
通过比较两个不同的客户端,我能够识别并解决两个问题。
出于某种原因(我不确定我是否已经解决了这个问题),服务器的路由表一直忘记去往/来自其 LAN (10.67.5.0/24) 的路由。这导致所有出站 LAN 流量都通过其主网关,而不会路由到 OpenVPN LAN (10.67.15.0/24)。这导致来自 OpenVPN 网络的、发往 LAN 的流量在主网关上失败;因此,正在发送 ping,但回复被丢弃。
编辑: 不幸的是,我不知道是什么导致这条路线被丢弃;如您所见,它位于上面的路由表中。我尝试在 /etc/network/interfaces 中添加一个路由命令,但是我最终得到了两个重复的相同路由,所以我再次将其取出。是我的fwbuilder配置导致此路由被丢弃:在设置 eth1 适配器时,我提供了 /32 网络掩码(即主机)而不是 /24(用于 LAN)。
通过测试 Debian 客户端,我能够解决这个问题,在此之后,它可以工作,但 Windows 7 客户端没有。
Windows 设置有两个问题。
您可以使用以下两个 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
Run Code Online (Sandbox Code Playgroud)
在“网络和共享中心”中,您应该看到(至少)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
Run Code Online (Sandbox Code Playgroud)
其中 1.2.3.4 需要是您的 OpenVPN 网关的 IP(在前面命令的输出中的网关列中显示),而 17 需要是您的 TAP 接口编号。该-p
选项使路线永久。我首先没有这样做,以进行测试。这确实假设客户端的 OpenVPN 网关 IP 不会在连接之间更改。
完成后,应弹出一个对话框并要求您对新网络进行分类。选择工作。
在这一点上,我能够将流量从我公司的 LAN 发送到客户端(使用 netcat 测试),但是 ping 仍然没有得到答复。
启动 Orb > 高级安全 Windows 防火墙,然后转到入站规则和新建规则...
最后 ping 被返回。
归档时间: |
|
查看次数: |
35154 次 |
最近记录: |