在 OpenVPN 中配置路由

在 OpenVPN 中配置路由

可能重复:
在 OpenVPN 中配置路由

我正在尝试弄清楚如何在 OpenVPN 上设置路由。

我已成功连接客户端 (OS X Snow Leopard) 和服务器 (OS X Leopard Server),并且它们都可以 ping 通对方。但是,我希望连接的客户端能够访问网络上的其他计算机。

以下是我的网络布局。在服务器端,有一个 Verizon Fios 路由器,它有一个公共动态 IP 地址(我通过 DynDNS.org 知道),以及一个内部地址 10.50.60.1。路由器在 DMZ 中配置了一台机器 10.50.60.160。

这台机器(10.50.60.160)托管 OpenVPN,而我想要连接的所有其他机器都在 10.50.60.x 网络上。

客户端从不同的位置进行连接(尽管我现在正在测试的客户端已为我分配了 10.1.5.11 的地址。

OpenVPN 配置为在 10.8.0.0 网络上工作,并成功将 IP 地址分配给客户端计算机。我之所以这样做,是因为我读过相关内容。我很乐意更改它,只要它能正常工作即可。我已将服务器配置文件附加在下面,您可能从“推送”和 ifconfig 条目中看到,我不太确定自己在做什么。您能否告诉我如何配置它,以便一旦 VPN 连接,我就可以 ping 并访问 10.50.60.160 和 10.50.60.x 网络上的其他计算机?

我的服务器配置文件如下:

dev tun
tls-server
ca /etc/openvpn/openvpn2/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/openvpn2/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/openvpn2/easy-rsa/2.0/keys/server.key  # This file should be kept secret
dh /etc/openvpn/openvpn2/easy-rsa/2.0/keys/dh1024.pem
verb 3
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
server 10.8.0.0 255.255.255.0
push "route 10.50.60.0 255.255.255.0"
push "ifconfig 10.50.60.0 10.8.0.1"
ifconfig 10.8.0.1 10.50.60.0
duplicate-cn
max-clients 5
ifconfig-pool-persist /etc/openvpn/ipp.txt

任何帮助将非常感激。

谢谢

皮特

答案1

根据您的描述,这听起来像是路由问题。OpenVPN 客户端(在 10.8.0.0/24 子网上)可以将数据包路由到您的本地网络(在 10.50.60.0/24 上),但来自本地网络的数据包不知道如何反向返回(到 10.8.0.0/24)。为了完全清楚,这是不是OpenVPN 问题。

最简单的解决方法是:在 10.50.60.0/24 子网的默认网关(我认为是 FIOS 路由器)上添加静态路由,将发往 10.8.0.0/24 子网的任何流量转发到 OpenVPN 服务器(10.50.60.160)。10.50.60.0/24 子网上的主机已将其所有非本地流量(10.50.60.0/24 以外的所有流量)发送到默认网关。一旦您告诉该默认网关它可以通过 10.50.60.160 到达 OpenVPN 子网,这些数据包就会开始流动。

您必须查看 FiOS 路由器文档以获取有关如何设置静态路由的具体说明。通常,您需要提供 3 个参数来定义新的静态路由:网关(或路由器)IP 地址;目标网络 IP 地址;以及目标网络子网掩码。对于您的情况:

  • 网关将只是“10.50.60.160”,即 OpenVPN 服务器的 IP。
  • 目标网络地址将是 OpenVPN 子网 IP“10.8.0.0/24”。
  • 目标网络子网掩码将为“255.255.255.0”。

FiOS 路由器的用户界面可能需要同时使用目标网络地址和子网掩码,如“10.8.0.0/255.255.255.0”,以 CIDR 表示法表示为“10.8.0.0/24”。如果您无法从文档中找出答案,并且 Verizon 技术支持无法为您提供帮助,我建议您尝试使用 Google。

您可以在 OpenVPN 服务器 (10.50.60.160) 上使用“tcpdump”会话来确认我的诊断。假设 10.50.60.160 地址位于名为“eth0”的设备上,您可以运行:

tcpdump -n -e -i eth0 -s0 icmp

具有 root 权限。然后,从 OpenVPN 客户端启动到 10.50.60.0/24 子网上的另一台主机的“ping”会话(FIOS 路由器 10.50.60.1 应该可以正常工作)。您应该看到从 OpenVPN 客户端到 10.50.60.1(或您选择的任何目标)的 ICMP ECHO REQUEST 数据包,但不会看到反向的 ICMP ECHO REPLY 数据包。

如果您在 10.50.60.0/24 子网上有另一台主机(FiOS 路由器除外)安装了“tcpdump”,您可能还想尝试在其上运行相同的命令行,同时从 OpenVPN 客户端执行 ping 操作。如果我没记错的话,您将看到客户端的 ICMP ECHO REQUEST 数据包像以前一样到达,以及一些带有 OpenVPN 客户端 IP 和 FiOS 路由器 MAC 地址的出站 ICMP ECHO REPLY 数据包。

相关内容