我有一台 Linux 服务器A拥有 5 个公有 IP 地址块,8.8.8.122/29
。目前,8.8.8.122
已分配给eth0
,8.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 进行虚拟访问。更不用说您将拥有一个功能齐全的路由器,因此它可能更安全。