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


8

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

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

OpenVPN可能是答案,但是我还不太清楚如何设置(topology subnet或者topology p2p可能合适。或者我应该使用以太网桥接吗?)。此时,安全性和加密不是什么大问题,因此GRE也可以-机器B将来自已知的IP地址,并可以基于该IP地址进行身份验证。

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


两个位置都有哪些防火墙?
罗伯特

1
我希望您只是填写这些地址,而不是您实际上在Google工作。否则,您将无法使用其地址空间。
迈克尔·汉普顿2012年

Robert:A是具有一些简单iptables规则的Linux服务器。 B在另一个正在运行的Linux服务器NAT后面shorewall
吉姆·巴黎

迈克尔:是的,我将前三个八位位组更改为8,以使它们变得模糊,但仍表明它们是公开的。抱歉,Google。
吉姆·巴黎

1
为了将来参考,我们为此提供了RFC
迈克尔·汉普顿

Answers:


7

我最终选择了以太网桥接。许多非常冗长的示例可以在网上浏览,但事实证明这很简单:

首先,在/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

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

然后,在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

那是我一直在寻找的超级简单的配置,并且可以正常工作-B现在可以在8.8.8.123上公开访问,并且传出连接来自同一地址。

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


真好!我要尝试一下。您是否找到一种配置方式:“不让那些客户端使用其无权使用的IP”?
巴斯蒂安

我没有打扰我的设置(这是临时的),但我想您可以用ebtables来做。
吉姆·巴黎

很有用。一个问题:如果我需要从A路由两个IP:A => B和A => C(其中C是另一个主机),我需要在A配置中进行哪些更改?我是否需要配置另一个网桥?
frhack

2
是的 也添加另一pre-up openvpn行来创建tap1,添加tap1bridge_ports,并使用运行另一个openvpn实例openvpn --dev tap1
吉姆·巴黎

如果您想通过B将A的网关设置为本地,怎么样,那么局域网上的任何系统都可以使用B并分配远程默认网关并使用公共IP?
Areeb Soo Yasir

1

我想您会很难过的。如果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

根据评论进行编辑:

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


我不了解中间防火墙是如何涉及的;他们当然不会在AB之间的OpenVPN数据包中查找。对于OpenVPN配置本身,我期望push "route 50.7.19.122 255.255.255.255 net_gateway"可以确保VPN数据仍通过正常网络推送。
吉姆·巴黎

明确地说,我想直接在AB之间创建隧道,而不是在两端的单独防火墙上。
吉姆·巴黎

1
但是,当计算机A想要路由到计算机B时,它将不知道是否应使用WAN(具有您的公共IP),LAN(具有其静态IP)或OpenVPN(也具有您的公共IP),因为它们都是同一子网。从B到A应该可以。
罗伯特

1
也有这个,我已经使用了它,但是没有使用公共IP。我认为无论哪种方式,虚拟IP都会好得多。openvpn.net/index.php/open-source/documentation/miscellaneous/...
罗伯特·

“明确地说,我想直接在A和B之间创建隧道,而不是在两端的单独防火墙上。” 您将需要在某个地方打开OpenVPN服务器的端口
Robert
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.