【问题标题】:openvpn host-to-host access subnet home to remoteopenvpn 主机到主机访问子网家庭到远程
【发布时间】:2020-01-24 11:06:59
【问题描述】:

我不太擅长网络,我正在尝试远程控制另一个网络上的一些计算机。我已经为 openvpn 设置了 VPN via 和 AWS AMI 图像设置。 AWS 机器位于 EC2 上,具有静态公共 IP 地址。我可以将家庭和远程计算机都连接到此 VPN,并且可以在远程上进行 SSH。

我正在尝试让家用电脑与远程电脑子网通信。我可以从家用电脑与远程电脑通话,但我无法与远程电脑子网上的电脑通话..

子网 A 实际上是 10.1.6.0/24,子网 B 是 10.1.1.0/24

我假设两端都需要一些手动路由,但我不知道该放在哪里。

另一个想法是在每台远程 PC 上打开 vpn,但我想尽可能避免这种情况。

OpenVPN client A to client B subnet communication

其他一些有相同问题的帖子,但我无法理解它们 - https://serverfault.com/questions/861870/how-to-let-an-openvpn-client-access-to-another-clients-subnet ... 但是由于某种原因,指向 stackoverflow 帖子的 OP 链接已被删除。

https://serverfault.com/questions/480069/how-to-force-all-traffic-through-vpn

【问题讨论】:

    标签: remote-access remote-desktop openvpn


    【解决方案1】:

    我要做的是在我想访问其网络的客户端上运行另一台服务器。这不是太多的开销。在客户端上,您需要确保它使用网桥并运行这些命令(在 Linux 上):

    brctl addif br0 tap0
    ifconfig tap0 0.0.0.0 promisc up
    

    确保在所有服务器上启用client-to-client。我可以通过这种方式访问​​我所有客户的本地网络。您需要从连接 PC 获得两个 TAP 适配器:一个用于 Amazon OpenVPN 服务器,另一个用于客户端服务器。

    【讨论】:

    • 感谢@xinthose:当您说“在我想访问其网络的客户端上运行另一台服务器”时,这是什么意思?您会在 10.1.1.5 上推荐什么额外的服务器,比如另一个 VPN 服务器?
    • @craba 正确; OpenVPN 可以同时作为客户端和服务器运行;对于客户端的服务器,使用与 AWS 服务器、本地网络和远程网络不同的子网,否则将无法正常工作。
    • 我相信这个网页链接有一个很好的答案:forums.openvpn.net/viewtopic.php?t=9465
    【解决方案2】:

    在这里找到:https://forums.openvpn.net/viewtopic.php?t=9465

    作者有 4 种方法,2 和 3 解决了我的用例,我把第 4 种省略了,因为它很长。

    站点 A 本地网络为 192.168.0.0/255.255.255.0。 默认网关的 IP 为 192.168.0.1(通用配置)。 运行 OpenVPN 的主机的 IP 是 192.168.0.A,其中 A 可以是 2 到 254 之间的任何一个。 主机的 IP 为 192.168.0.x,其中 x 为 2 到 254,与 A(OpenVPN 主机的 IP)不同。

    网站 B 本地网络为 192.168.1.0/255.255.255.0。 默认网关的 IP 为 192.168.1.1(通用配置)。 运行 OpenVPN 的主机的 IP 是 192.168.1.B,其中 B 可以是 2 到 254 之间的任何一个。 这些主机的 IP 地址为 192.168.1.x,其中 x 为 2 到 254,与 B(OpenVPN 主机的 IP)不同。

    VPN IP 来自 10.8.0.0/255.255.255.0。

    在讨论这个问题时,哪个站点是服务器或客户端,以及哪些 IP 获得 TAP 接口并不重要。要解决此路由问题,有 4 种方法:

    方法一 很明显,将 OpenVPN 软件移至 LAN 的默认网关。由于在某些情况下这是不可能的(一个无法运行 OpenVPN 的简单路由器),这种方法是未来扩展的最佳选择,因为添加更多远程站点不会涉及返回路由问题。

    方法二 将远程网络的静态路由添加到每个主机的路由表中。在每个主机上,我们必须添加这样的路由: 代码:全选

    路由添加掩码gw 例如,在站点 A 的每台主机上,我们必须添加两条路由: 代码:全选

    路由添加 192.168.1.0 掩码 255.255.255.0 gw 1​​92.168.0.A 路由添加 10.8.0.0 掩码 255.255.255.0 gw 1​​92.168.0.A VPN网络10.8.0.0的路由可以省略,但不推荐。

    与我们在站点 B 上添加路由的方式相同,以显示主机将数据包路由到远程站点的位置: 代码:全选

    路由添加 192.168.0.0 掩码 255.255.255.0 gw 1​​92.168.1.B 路由添加 10.8.0.0 掩码 255.255.255.0 gw 1​​92.168.1.B 如果会有第三个站点,我们必须以同样的方式为新的远程网络添加另一个路由。

    路由也必须添加到默认 LAN 的网关上。尽管如此,似乎许多路由器都能够在不为远程网络添加路由器的情况下返回响应。

    方法三 此方法意味着仅在 LAN 的默认网关上添加与方法 2 中相同的路由。所以重定向将由路由器进行,我们不需要在每个主机上添加路由。当然,如果路由器允许修改路由表和 iptable,这是可能的。 与方法 2 一样,在默认路由器上,我们添加到远程站点的路由: 代码:全选

    路由添加掩码gw 例如,在 IP 为 192.168.0.1 的站点 A 的默认网关上,我们必须添加两条路由: 代码:全选

    路由添加 192.168.1.0 掩码 255.255.255.0 gw 1​​92.168.0.A 路由添加 10.8.0.0 掩码 255.255.255.0 gw 1​​92.168.0.A 但这只会显示网关将来自其自身的数据包发送到何处。我们还需要展示如何从本地主机为远程站点路由数据包。为此,我们必须向路由器 iptable 添加一条规则,该规则将告诉所有从 LAN 接口传入并具有远程站点网络目标的数据包必须重定向到 OpenVPN 主机。大多数处理更广泛定制的路由器都能够使用命令“iptables”之类的 unix。所以,我们像这样使用 iptables 规则: 代码:全选

    iptables -A PREROUTING -t mangle -i -d / -j ROUTE --gw 例如,在站点 A 的默认路由器上,我们将添加: 代码:全选

    iptables -A PREROUTING -t mangle -i -d 192.168.1.0/255.255.255.0 -j ROUTE --gw 192.168.0.A iptables -A PREROUTING -t mangle -i -d 10.8.0.0/255.255.255.0 -j ROUTE --gw 192.168.0.A 与我们在站点 B 的默认路由器上添加规则的方式相同。

    如果我们添加第三个站点,那么我们必须以相同的方式向其他站点添加到第三个站点网络的路由。

    【讨论】:

      猜你喜欢
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多