通过隧道将公共 IP 连接到远程计算机

通过隧道将公共 IP 连接到远程计算机

我有一台 Linux 服务器A拥有 5 个公有 IP 地址块,8.8.8.122/29。目前,8.8.8.122已分配给eth08.8.8.123已分配给eth0:1

我有另一台 Linux 机器在远程位置,在 NAT 后面。我想在两者之间建立一个隧道,以便可以使用该 IP 地址8.8.8.123作为其主 IP 地址。

OpenVPN 可能是答案,但我不太清楚如何设置(topology subnet或者topology p2p可能合适。或者我应该使用以太网桥接?)。安全性和加密目前不是一个大问题,所以 GRE 也可以——机器将来自已知的 IP 地址,并可据此进行身份验证。

我该怎么做?有人能建议一个 OpenVPN 配置,或者其他可以在这种情况下使用的方法吗?理想情况下,它还能够处理多个客户端(例如,与其他机器共享所有四个备用 IP),而不让这些客户端使用他们无权使用的 IP。

答案1

我最终选择了以太网桥接。网上有很多非常冗长的例子,但结果发现它相当简单:

首先,A/etc/network/interfaces原先为:

auto eth0
iface eth0 inet static
    address 8.8.8.122
    netmask 255.255.255.248
    gateway 8.8.8.121

到:

auto br0
iface br0 inet static
    address 8.8.8.122
    netmask 255.255.255.248
    gateway 8.8.8.121
    pre-up openvpn --mktun --dev tap0
    bridge_ports eth0 tap0
    bridge_fd 3

以便在启动时将eth0(真实的 WAN 接口)与tap0(新的隧道接口)桥接。

然后,A,使用以下命令运行 openvpn 服务器:

openvpn --dev tap0

,使用以下命令进行连接:

openvpn --remote 8.8.8.122 --dev tap0 --route-gateway 8.8.8.121 \
        --redirect-gateway def1 --ifconfig 8.8.8.123 255.255.255.248

这就是超级简单的配置我一直在寻找,而且它确实有效——现在可以通过 8.8.8.123 公开访问,并且传出连接也来自同一地址。

当然,根据需要添加安全性(--secret,等等)。--tls-server

答案2

我想你会遇到麻烦。如果 VPN 的两端位于同一子网中,大多数防火墙将难以路由 OpenVPN 流量。

如果您尝试路由以进行公共访问,我会将两台服务器移至与公共地址不同的子网,然后使用虚拟 IP(1 对 1 Nat)连接它们。要连接这两个站点,可以使用 OpenVPN 或 IP-Sec 隧道。

虚拟 IP: http://doc.pfsense.org/index.php/What_are_Virtual_IP_Addresses%3F

站点到站点: http://doc.pfsense.org/index.php/VPN_Capability_IPsec

根据评论进行编辑:

我个人会在 A 盒上安装 pfSense,并为其提供所需的 WAN 端口。然后在本地子网上设置 OpenVPN 服务器(在 pfSense Web 界面中已准备就绪),并使用指向其本地 OpenVPN IP 的虚拟 IP 设置另一台机器。这将为您提供以后扩展的空间(添加更多具有虚拟 IP 的机器,从逻辑上将特定端口转发到不同的服务器,真正拥有一个完整的 LAN/WAN/DMZ 设置,并使用 OpenVPN 进行虚拟访问。更不用说您将拥有一个功能齐全的路由器,因此它可能更安全。

相关内容