如何在两个CentOS 7服务器之间建立GRE通道

・5 分钟阅读

介绍

GRE有哪些优点?

GRE代表通用路由封装,它允许两台服务器私下进行通信,GRE隧道非常有用,因为它们允许所有类型的流量通过。它相对容易设置和安全(假设服务器A和服务器B之间有一个直接管道)。

简单地说:创建GRE隧道允许通过使用最少的资源来转发包。

注意:GRE隧道必须在两个端点上设置。

它是如何工作的?

在服务器上创建GRE隧道时,服务器会充当虚拟路由器,记住,两端都需要一个公共IP地址,因为数据包是通过多个网络发送的。

先决条件和配置两个端点

你需要设置GRE隧道的内容

幸运的是,你只需要:

  • 2台运行CentOS 7的服务器
  • 加载的ip_gre模块
  • nano或任何文本编辑器

如果你还没有将GRE模块加载到任何一台服务器,请执行以下命令:

 
modprobe ip_gre

 

为了使事情更容易理解,第一个和第二个端点会被标记为A和B。

我们将使用的IP地址如下:

端点A:

  • 本地/内部IP :192.0.2.1
  • 公共IP :203.0.113.1

端点B:

  • 本地/内部IP :192.0.2.2
  • 公共IP :203.0.113.2

请记住,你需要修改例子IP地址(使用会使用的两个服务器的IP地址更改203.0.113.1203.0.113.2 )。

配置端点

首先,我们需要转到network-scripts文件夹:


cd /etc/sysconfig/network-scripts

现在,使用nano或你最喜欢的文本编辑器创建一个名为ifcfg-tun0的文件:

 
nano ifcfg-tun0

 

在新创建的文件中,粘贴以下内容:


DEVICE=tun0
BOOTPROTO=none
ONBOOT=yes
 DEVICETYPE=tunnel
TYPE=GRE
PEER_INNER_IPADDR=192.0.2.2
PEER_OUTER_IPADDR=203.0.113.2
MY_INNER_IPADDR=192.0.2.1

保存和退出(使用nano,执行CTRL +X,然后输入)。

将界面上移:

 
ifup tun0

 

执行上述命令后,就可以开始配置第二个端点。

配置端点B

配置此端点的过程与第一个端点的配置过程类似,要开始,请前往network-scripts文件夹:


cd /etc/sysconfig/network-scripts

现在,创建一个名为ifcfg-tun0的新文件:

nano ifcfg-tun0 

粘贴以下内容:


DEVICE=tun0
BOOTPROTO=none
ONBOOT=yes
TYPE=GRE
PEER_INNER_IPADDR=192.0.2.1
PEER_OUTER_IPADDR=203.0.113.1
MY_INNER_IPADDR=192.0.2.2

退出并保存。

现在,你可以将接口启用:

 
ifup tun0

 

测试隧道

在端点上,输入以下内容:

 
ping 192.0.2.2

 

你将看到类似的输出:

在端点B上:

 
ping 192.0.2.1

 

你将看到类似的输出:

如果两端都能成功地互相ping,你可以跳到本文的最后一部分,如果出现超时,你可能需要禁用防火墙或将合适的地址列入白名单。

如果你只希望测试隧道是否工作,你可以(以你自己的方式)禁用两台服务器上的防火墙:


service firewalld stop

有些CentOS 7系统使用IPTables ,因此,如果上述命令不起作用,请执行以下操作:


service iptables stop

结束语

你已经成功地在两个服务器之间建立了GRE隧道,如果将来希望删除隧道,请在两台服务器上执行以下操作:


ifdown tun0
rm -rf /etc/sysconfig/network-scripts/ifcfg-tun0
service network restart

Anne655 profile image