将公共 IP 隧道传输到远程机器

Jim*_*ris 8 vpn openvpn static-ip linux-networking tunnel

我有一个Linux服务器有5个公共IP地址块,8.8.8.122/29。当前,8.8.8.122分配给eth0,并8.8.8.123分配给eth0:1

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

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

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

Jim*_*ris 7

我最终选择了以太网桥接。网上有很多非常冗长的例子,但事实证明这很容易:

首先,在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
Run Code Online (Sandbox Code Playgroud)

到:

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
Run Code Online (Sandbox Code Playgroud)

为了在启动时桥接eth0(真正的 WAN 接口)与tap0(新的隧道接口)。

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

openvpn --dev tap0
Run Code Online (Sandbox Code Playgroud)

B 上,连接到它:

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
Run Code Online (Sandbox Code Playgroud)

这就是超级简单的配置我一直在寻找,和它的作品-现在是8.8.8.123公开访问,并传出连接从同一地址发起。

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

  • 是的。添加另一个 `pre-up openvpn` 行来创建 `tap1`,将 `tap1` 添加到 `bridge_ports`,并使用 `openvpn --dev tap1` 运行另一个 openvpn 实例。 (2认同)