我有一个Linux服务器A与一个5个公共IP地址块, 8.8.8.122/29
。 目前, 8.8.8.122
被分配给8.8.8.123
被分配给eth0:1
。
我在远程位置有另一台Linux机器B ,位于NAT后面。 我想在两者之间build立一个隧道,以便B可以使用IP地址8.8.8.123
作为它的主IP地址。
OpenVPN可能是答案,但我不能完全弄清楚如何设置( topology subnet
或topology p2p
可能是适当的,或者我应该使用以太网桥接?)。 安全和encryption在这一点上并不是一个大问题,所以GRE也可以,机器B将来自已知的IP地址,并且可以基于此进行authentication。
我该怎么做? 任何人都可以提出一个OpenVPN的configuration,或者其他的方法,可以在这种情况下工作? 理想情况下,它也能够处理多个客户端(例如,与其他机器共享所有四个备用IP),而不让这些客户端使用他们没有权限的IP。
我结束了与以太网桥接。 很多非常详细的例子可以通过在线浏览,但事实certificate非常简单:
首先,在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
在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
这是我正在寻找的超级简单的configuration ,它的工作原理 – B现在可以在8.8.8.123公开访问,而传出的连接源自相同的地址。
当然,根据需要添加安全性( --secret
, --tls-server
--secret
--tls-server
等)。
我想你会很难。 如果VPN的两端都在同一个子网中,大多数防火墙将难以路由OpenVPNstream量。
如果您尝试路由公共访问,我会将两个服务器从您的公共地址移动到不同的子网,然后使用虚拟IP(1到1纳特)来连接它们。 要连接这两个站点,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网页界面),并且使用指向本地OpenVPN IP的虚拟IP设置另一台机器。 这会给你以后的扩展空间(增加更多的机器与虚拟IP,逻辑上转发特定的端口到不同的服务器,真的有一个完整的LAN / WAN / DMZ设置与OpenVPN的虚拟访问。更何况,你会有一个完整的路由器,所以它可能会更安全。