我有一个 OpenVPN 服务器和许多连接的客户端。 VPN 设置包括
port 443
dev tun
proto tcp
当我将客户端添加到 VPN 时,我必须使用 apaches proxypass 才能访问单个客户端本地的资源,但不能访问 VPN 网络的资源。
例如:
- 服务器位于 10.8.0.1
-客户端位于 10.8.0.4
-另一个客户端位于 10.8.0.7
客户10.8.0.4也在工作网络上,可以连接到内部 url10.82.54.11/internal_url(因为其网络适配器之一位于子网 10.82.54.0 上)。
该客户端有一个 apache proxypass 设置,因此当他们在家时可以连接到10.82.54.11/internal_url通过打开10.8.0.4:84。
最近有人告诉我,VPN 上的所有客户端都应该可以访问所有网络,这是正确的吗(或者甚至可能,因为对我来说非常有用)?
所以基本上只要客户10.8.0.4已连接到 VPN,在家中他仍然可以将浏览器指向10.82.54.11/internal_url。
我已经尝试dev tap0
过服务器和所有客户端(我认为我可能也需要以太网桥接)但没有乐趣。请帮忙
答案1
OpenVPN 提供了一个链接。如果在 tun(推荐)模式下运行,它会提供 IP 流量的链接。如果在 Tap 模式下运行,它会提供以太网流量的链接(包括 IP,还包括各种其他内容)。
如果您在 Tap 模式下运行,则需要将 OpenVPN Tap 接口桥接到以太网接口。您可以使用 来做到这一点brctl
,但是,一般来说,我不会推荐这样做,除非您需要非 IP 协议来工作。它速度较慢(开销更大),并且可能会出现严重问题,具体取决于延迟。 [好吧,你可以将其视为一个单独的网段并使用IP路由,但随后你应该切换到tun模式。]
当您在 tun 模式下运行时(听起来您就是这样,而且应该是这样),您需要使您的 IP 路由正确。在这种情况下,我猜测您的客户端不知道到 10.82.54.11 的流量需要通过 VPN 路由。您需要让客户知道这一点。您可以在客户端上手动设置静态路由,或者运行路由协议,或者通过将此行添加到您的 OpenVPN 服务器配置来使用 OpenVPN 提供的内置功能:
push "route 10.82.54.0 255.255.255.0"
push
向远程端发送一个选项。所以客户端会添加一个选项route 10.82.54.0 255.255.255.0
,意思是通过VPN添加一条静态路由到10.82.54.0/24的路由。
您需要做的下一件事是确保相反的路由也正确。您的服务器 10.82.54.11(或更可能是充当其默认网关的路由器或防火墙)需要知道到 10.8.0.0/24 的路由是通过 VPN 网关。可能你只有一个路由器/防火墙,所以服务器位于防火墙后面,即 VPN 服务器,在这种情况下,你可能只需要在你的 OpenVPN 配置中添加类似的内容(如果你还没有) ):
route 10.8.0.0 255.255.255.0
它看起来应该很熟悉,并且做同样的事情——只是在服务器端,而不是客户端,因为缺乏push
.
(根据您的网络调整所有网络掩码。我假设为 /24,但当然您可以使用任何东西。)
[注意:我假设您使用的是 OpenVPN 多客户端模式,而不是点对点模式。如果您使用点对点,则路由命令中的 IP 地址可能会有所不同。]