我第一次设置 VPN 连接。我正在做一个项目,希望从外部世界访问我家里的 LAN。因此,我在 32 位 Windows 7 笔记本电脑(用作服务器)上安装了 OpenVPN2.2.2。我的最终目标是加载一个只能在我的本地网络上访问的页面。
我创建了一个客户端证书,它是 64 位 Windows 8 笔记本电脑(上面安装了 OpenVPN2.2.2)。我能够使用我的客户端通过 VPN 连接到服务器。我可以在两台笔记本电脑的系统托盘栏中看到绿色的 GUI 图标。我还在日志中看到“初始化序列已完成”,没有重大错误。但是,当我尝试 ping LAN 中的任何设备时,我无法使用运行 openVPN 的远程客户端进行 ping。此外,当我使用http://www.whatismyip.com/,我仍然获得客户端的原始 IP 地址而不是我的 LAN 的 IP。
这些是我收到的主要警告/通知。
服务器:
注意:您的本地 LAN 使用极为常见的子网地址 192.168.0.x 或 192.168.1.x。请注意,如果您从使用同一子网的公共场所(例如网吧)连接到 VPN 服务器,这可能会造成路由冲突。
警告:任何活动网络适配器上都无法访问路由网关:10.8.0.2
MULTI:来自客户端的错误源地址 [192.168.2.30],数据包被丢弃
客户:
警告:本地 LAN [172.20.10.0/255.255.255.240] 和远程 VPN [0.0.0.0/0.0.0.0] 之间可能存在路由子网冲突
过去一周,我对此进行了大量研究。我查阅了 openVPN 文档和论坛。人们可以连接到服务器,但无法 ping 通。以下是我采取的额外步骤:
- 彻底禁用我的 Windows 防火墙(在客户端和服务器上),以解决 TUN/TAP 接口问题
- 设置端口转发,因此任何与我的路由器 1194 端口的连接都会转发到我的服务器(静态 IP 为 192.168.1.168)。
- 以管理员权限运行一切
- 在 Windows 计算机(服务器)中配置路由和远程访问
- IPEnableRouter 为 1。
- 选中“允许其他网络用户通过这台计算机的 Internet 连接来连接 TAP 适配器”复选框。
我从 openVPN 论坛获取这些内容后采取了以下一些步骤:
服务器.ovpn
port 1194
proto udp
dev tun
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\server.crt"
key "C:\\Program Files\\OpenVPN\\config\\server.key"
dh "C:\\Program Files\\OpenVPN\\config\\dh1024.pem"
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "route 0.0.0.0 0.0.0.0"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 5
客户端.ovpn
client
dev tun
proto udp
remote xx.xx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\\Program Files (x86)\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files (x86)\\OpenVPN\\config\\client1.crt"
key "C:\\Program Files (x86)\\OpenVPN\\config\\client1.key"
ns-cert-type server
comp-lzo
verb 3
explicit-exit-notify 2
ping 10
ping-restart 60
route-method exe
route-delay 2
如果您能帮助我解决这个问题,那就太好了。非常欢迎任何提示/建议。谢谢。
编辑:1
非常感谢您的建议。
1) 您能否稍微解释一下“获取防火墙或使用防火墙连接 VPN”的具体含义?我的客户端和服务器中都已内置了防火墙,并且我已禁用它们,这样它们暂时不会干扰我的设置。
2) 我确实更改了我的 IP 地址子网。因此,我服务器端的默认网关现在是 192.168.157.1,而不是 192.168.1.1。我将隐藏我的 IP 地址。:D
3)10.8.0.2 是 TAP-Win32 适配器的默认网关。因此,在查看 openvpn 论坛后,我通过进入高级设置 TAP-Win32 适配器的 IPv4 属性,在服务器端将 10.8.0.2 添加为默认网关。说实话,我不知道为什么这么做。我只是迫切希望它能正常工作。
现在,自从我将路由的 IP 子网更改为 192.168.157.1 后,我只在日志文件中看到两个警告,在我看来这真是个好消息。但我仍然无法 ping 通(也需要查看 ping 策略,但我怀疑这是否是问题所在)。此外,当连接到我的服务器时,客户端无法访问互联网。无法 ping 通,没有网页,没有互联网。
服务器端警告显示:
警告:任何活动网络适配器上都无法访问路由网关:10.8.0.2
客户端警告:
警告:本地 LAN [192.168.2.0/255.255.255.0] 和远程 VPN [0.0.0.0/0.0.0.0] 之间可能存在路由子网冲突
再次感谢。
答案1
我建议安装防火墙,或者如果您有防火墙,可以使用防火墙进行 VPN。我有 watchguard,制定或编辑策略(例如 ping)非常简单。我遇到一个问题,我不希望子网“B”上的用户能够 ping 子网“A”,并且可以轻松地在该策略中更改这一点。
无论如何,您可以尝试更改网络的子网(如果可能),使其具有“正常”IP 范围,因为 192.168.1.1 不是最佳实践方法。我也不会将您的外部 IP 地址公之于众 :)
对我来说,这听起来像是防火墙中的某些东西没有将流量路由到 192.xxx 子网,从表面上看,这是因为您的 LAN 具有相同的 IP 范围。另外,您在 10.8.0.2 上有什么设备?看起来像是您的网关,但您的 LAN 不同。请再解释一下...
PS,抱歉,我试图发表评论而不是回答,但我没有足够的代表。
答案2
这个说法
push "route 0.0.0.0 0.0.0.0"
server.conf 文件中的
push "route ..."
声明,不要与
push route ...
语句执行不同的功能,用于通知 OpenVPN 客户端 OpenVPN 服务器后面存在 LAN。由于您将此子网更改为 192.168.157.0/24,因此上述语句应更改为:
push "route 192.168.157.0 255.255.255.0"
您可以找到此语句的描述在 OpenVPN 操作指南中。除了详细说明我已经告诉您的内容之外,您还会发现以下声明:
接下来,您必须在服务器端 LAN 网关上设置一条路由,将 VPN 客户端子网 (10.8.0.0/24) 路由到 OpenVPN 服务器(仅当 OpenVPN 服务器和 LAN 网关是不同的机器时才需要这样做)。
确保您已在 OpenVPN 服务器上启用 IP 和 TUN/TAP 转发。
这两个操作对于 OpenVPN 的工作都至关重要,不幸的是,它们也依赖于操作系统,因此您必须自己弄清楚如何去做。
Linux 机器上的用户需要以下两个命令:
ip route add 10.8.0.0/24 via IP.of.TheOpenVPN.Server
echo 1 > /proc/sys/net/ipv4/ip_forward
答案3
我使用 OpenVPN,您首先需要做的就是在您的 OVPN 服务器中声明您可以在连接到 VPN 时访问所需的网络。
从未在独立计算机上使用过 OVPN,但我已将其安装在 PFSense 路由器上,这样可以完全控制网络访问。我同意“Vdub”的说法,您需要路由器来引导流量。您的 ISP 路由器可能受到限制,或者您根本无法访问以决定其路由方式。