介绍
什么是GRE?有哪些优势?
GRE代表Generic Routing Encapsulation(通用路由封装),它允许两台服务器私下通信。GRE隧道非常有用,因为它们允许所有类型的流量通过。它相对容易设置且安全(假设在服务器A和服务器B之间具有直接管道)。
简而言之:创建GRE隧道允许以最小的资源使用量转发数据包。
注意:必须在两个端点上建立GRE隧道。
它是如何工作的?
在服务器上创建GRE隧道时,服务器将充当虚拟路由器。请记住,由于数据包是通过多个网络发送的,因此两端都需要一个公共IP地址。
先决条件和配置两个端点
设置GRE隧道所需的条件
幸运的是,您需要做的是:
- 2台运行CentOS 7的服务器
- 该
ip_gre
模块加载 nano
或任何文本编辑器
如果尚未将GRE模块加载到任一服务器中,请执行以下命令:
modprobe ip_gre
为了使事情更容易理解,第一和第二终端将被标记为一个和乙分别。
我们将使用的IP地址如下:
端点A:
- 本地/内部IP:
192.0.2.1
- 公用IP:
203.0.113.1
端点B:
- 本地/内部IP:
192.0.2.2
- 公用IP:
203.0.113.2
请记住,您将需要修改示例IP地址(更改203.0.113.1
并203.0.113.2
使用将要使用的两台服务器的IP地址)。
配置端点A
首先,我们需要转到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
,do CTRL+ X,然后是ENTER)。
调出界面:
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
测试隧道
在端点A上,输入以下内容:
ping 192.0.2.2
您将看到类似的输出:
在端点B上:
ping 192.0.2.1
您将看到类似的输出:
如果两端可以ping
彼此成功进行,则可以跳到本文的最后一节。如果超时,则可能需要禁用防火墙或将适当的地址列入白名单。
如果您不了解如何创建这些规则,请参考本文。
如果仅希望测试隧道是否正常工作,则可以(由您自担风险)在两台服务器上禁用防火墙:
service firewalld stop
某些CentOS 7系统具有IPTable,因此,如果以上命令不起作用,请执行以下操作:
service iptables stop
结论
您已经成功在两台服务器之间建立了GRE隧道。如果您希望将来删除隧道,请在两台服务器上执行以下操作:
ifdown tun0
rm -rf /etc/sysconfig/network-scripts/ifcfg-tun0
service network restart
- 在CentOS 6上使用WonderShaper限制流量
- 如何在CentOS 7上添加交换空间
- 使用Docker在CentOS 7上开始使用SQL Server 2017(MS-SQL)
- 在CentOS上安装Java SE
- 使用FirewallD在CentOS 7上管理防火墙
- 在CentOS 7上安装eSpeak
- 如何在CentOS 7上安装Automad CMS
- 在Ubuntu 18.04上配置Ubuntu防火墙(UFW)
- 如何在Ubuntu 18.04上安装Apache 2.4,MariaDB 10.3和PHP 7.2
- 使用OpenSSH进行端口转发和代理
- 在Ubuntu 16.04 LTS上设置Express.js Web服务器
- 如何在CentOS 7上安装和配置Memcached