为什么添加路由后我们的网络没有网络?

为什么添加路由后我们的网络没有网络?

我们有 2 个网络。第一个是 OpenVPN 服务器,网络为 10.170。第二个是网关服务器,用于我们的笔记本电脑、打印机等,网络为 10.133.10.1。它的 OpenVPN-IP 为 10.170.0.19

它们之间的连接很稳定,但一旦我添加路由,第二个网络中的所有客户端都没有互联网。 2 个服务器之间的连接仍然稳定,我也可以从第一个网络访问网络 2 中的设备,但在那里,窗口显示“无互联网连接”,我们无法打开任何网站。

我在 10.133.10.1 上使用的路由命令是:ip route add 10.133.10.0/24 via 10.170.0.19 dev tun0。我发现这会导致错误,因此我手动执行了此操作。之前,我们route 10.133.10.0 255.255.255.0在客户端配置中使用了此命令。

什么原因可能导致此错误以及如何修复?

编辑: 情况就是这样

答案1

该路由导致 Internet 访问无法正常工作的原因是它将 Internet 流量路由到错误的方向。当 10.133.10.1 从 Internet 收到数据包时,它需要将其直接发送到 10.133.10.0/24 网络中的机器。您的路由告诉它将这些数据包发送到 10.170.0.19。有了该路由,来自 Internet 的数据包就无法到达 10.133.10.0/24 网络中除 10.133.10.1 之外的任何机器。

要让流量到达需要去的地方,您可以在源机器上输入适当的路由,也可以让流量遵循该机器的默认路由并在路由器上添加适当的路由。后者可能更好。

因此,打印机 10.133.10.41 需要通过 10.133.10.1 到达 10.170.0.0/24 网络中的机器。但我们不想为 10.133.10.0/24 网络上的每台设备添加路由,因此我们可以在 10.133.10.1 机器上执行此操作,因为这是它们现在将发送流量的地方。因此,我们需要 10.133.10.1 上的路由,以便将发往 10.170.0.0/24 的数据包发送到 10.170.0.1。

我们也需要返回流量。因此 10.170.0.2 需要通过 10.170.0.19 到达 10.133.10.0/24 网络中的机器。但我们不想在每台设备上添加路由,因此我们可以在 10.170.0.1 上执行此操作,告诉它将发往 10.133.10.0/24 的数据包发送到 10.170.0.19。

OpenVPN 服务器可能已经自动设置了后一条路由,因为它应该知道 10.133.10.0/24 可以通过 VPN 访问。因此您可能只需要添加第一条路由。

所以我认为您错在ip route命令中的 10.133.10.0/24 应该是 10.70.0.0/24。

答案2

诚实的问题,不是讽刺:如果网关服务器连接到两个网络,为什么需要路由?

尽管如此,您是否有返回 10.170.0.0/24 网络的路由?我认为您可能需要添加ip route 10.170.0.0/24 via 10.133.10.1

答案3

是否需要添加路由10.133.10.0/24取决于OVPN Server

  1. 无论你是否需要OVPN Server 本身能够联系到10.133.10.0/24主机
  2. 你是否依赖client-to-clientOpenVPN 功能
  3. 你是否需要来自其他主机(例如互联网)能够返回到主机10.133.10.0/24(对于您来说,这可能确实如此,因为您显然希望10.133.10.0/24主机使用OVPN Server的 Internet 访问作为他们的 Internet 访问。)

无论如何,如果添加路由,网关/下一跳将10.133.10.0/24虚假/可选

假设 为真2.,VPN 客户端需要能够访问的内容10.133.10.0/24仅有的

  1. 推送到/在 VPN 客户端上配置的路由10.133.10.0/24,以 tun 接口作为路由接口(nexthop/gateway 是虚假适用于 L3 VPN)

  2. iroute对于10.133.10.0/24电荷耦合器件(参见--client-config-dirOpenVPN 手册)文件为了 Gateway Server OVPN Server,这是使目标 IP 不是相应 VPN 客户端 IP 的流量转到 VPN 客户端主机的(唯一)方法(CCD 文件iroute可以看作是 tun 模式 OpenVPN 实现 nexthop/网关思​​想的方式)

(请注意,无论是否client-to-client使用,上述内容都是需要的;如果不使用,则需要更多的比那些。)

您不需要在Gateway Server其 LAN 主机上添加任何额外的路由。它所连接的两个网络的子网/前缀路由应该足以满足所有所需的通信。

(好吧,您唯一需要的额外东西Gateway Server是一个default以 tun 作为路由接口的路由或等效物,当您使用redirect-gateway、带def1或不带时,它将以适当的方式添加。同样,我假设这Gateway Server是 LAN 主机的“默认网关”。)

有一件事肯定错了10.133.10.0/24正在为 LAN 子网 ( )添加路由,其中任何Gateway Server或其任何 LAN 主机上的下一跳/网关。


据我所知,当您不使用 时client-to-client,即使目标是客户端的 IP 或 覆盖的 IP iroute,来自 VPN 客户端的流量也会从 OpenVPN 程序/隧道中“逃逸”,在这种情况下,您需要 VPN 服务器具有相应的路由(在您的情况下,10.133.10.0/24,下一个跳转/网关再次是虚假的/可选的),将相关流量循环回隧道,这涉及 OS 网络堆栈的 IP 转发。因此,在这种情况下需要启用 (sysctl) 和允许 (防火墙) IP 转发。OVPN Server如果用于 LAN 主机/VPN 客户端的 Internet 访问,这些也适用。


另外,请确保不要对 上的 LAN 主机进行 NAT/IP 伪装Gateway Server(至少免除发往 的流量10.170.0.0/24)。否则,它们对 VPN 客户端的回复将具有源地址,相应的程序将无法将其识别为回复。相反,如果流量的目的地是 Internet 或类似位置,10.133.10.1请确保源在 内的流量10.133.10.0/24经过 NAT/IP 伪装。OVPN server

答案4

最后我发现,我的同事重命名了密钥,但忘记重命名 CCD 文件。重命名此文件后,一切都正常了。

相关内容