linux的搭建gre隧道

Posted tom-blogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux的搭建gre隧道相关的知识,希望对你有一定的参考价值。

一、准备

  • VMware Workstation
  • 2台CentOS虚拟机

1、GRE介绍

GRE隧道是一种IP-over-IP的隧道,是通用路由封装协议,可以对某些网路层协议的数据报进行封装,使这些被封装的数据报能够在IPv4/IPv6 网络中传输。
Tunnel 是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel 的两端分别对数据报进行封装及解封装。 
一个X协议的报文要想穿越IP网络在Tunnel中传输,必须要经过加封装与解封装两个过程。

2、地址规划

 

  主机1 主机2
原主机ip(外网地址) 192.168.2.10 192.168.2.20
gre端ip(内网地址) 192.168.10.10 192.168.20.20

 

注:

  • 此处为了能让主机1和主机2能后相互通信,我们就配置成同一个网段;
  • gre端ip地址任意定,不需要同一网段地址。

 

二、配置网卡信息

用“桥接模式”来模拟真实环境的外网,及需要两台主机能够互(ping)通。

1、Linux主机1网卡配置:

[root@localhost network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=8e6777b6-11ef-46c3-a094-8f9d65db1ea8
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.2.10
GATEWAY=192.168.2.1
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=114.114.114.114

2、Linux主机2网卡配置:

[root@localhost network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=8e6777b6-11ef-46c3-a094-8f9d65db1ea8
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.2.20 
GATEWAY=192.168.2.1
NETMASK=255.255.255.0
DNS1=8.8.8.8
DNS2=114.114.114.114

 

三、配置隧道信息

1、Linux主机1隧道配置:

在/etc/sysconfig/network-scripts/目录下创建名为ifcfg-tun0文件并编辑,内容如下

DEVICE=tun0
BOOTPROTO=static
ONBOOT=yes
DEVICETYPE=tunnel
TYPE=GRE
PEER_INNER_IPADDR=192.168.20.20
PEER_OUTER_IPADDR=192.168.2.20
MY_INNER_IPADDR=192.168.10.10
MY_OUTER_IPADDR=192.168.2.10
  • DEVICE=tun0  # 服务名称,后面需要这个名称进行开启和关闭
  • BOOTPROTO=static
  • ONBOOT=yes
  • DEVICETYPE=tunnel
  • TYPE=GRE
  • PEER_INNER_IPADDR  # 对端隧道ip地址(内网)
  • PEER_OUTER_IPADDR  # 对端主机ip地址(外网)
  • MY_INNER_IPADDR  # 本端隧道ip地址(内网)
  • MY_OUTER_IPADDR  # 本端主机ip地址(外网)

2、Linux主机2隧道配置:

在/etc/sysconfig/network-scripts/目录下创建名为ifcfg-tun0文件并编辑,内容如下

DEVICE=tun0
BOOTPROTO=static
ONBOOT=yes
DEVICETYPE=tunnel
TYPE=GRE
PEER_INNER_IPADDR=192.168.20.20
PEER_OUTER_IPADDR=192.168.2.20
MY_INNER_IPADDR=192.168.10.10
MY_OUTER_IPADDR=192.168.2.10

 

四、重启网卡和tunnel服务

1、开启gre服务

[root@localhost ~]# modprobe ip_gre  // 加载gre模块
[root@localhost ~]# lsmod | grep gre  // 显示gre模块是否加载成功 
ip_gre                 22931  0 
gre                    13144  1 ip_gre
ip_tunnel              25163  1 ip_gre

2、重启网卡

[root@localhost network-scripts]# service network restart
Restarting network (via systemctl):                        [  OK  ]

3、关闭在启动tunnel

[root@localhost network-scripts]# ifdown ifcfg-tun0
[root@localhost network-scripts]# ifup ifcfg-tun0

4、查看配置情况

[root@localhost network-scripts]# ifconfig

技术图片

5、关闭放火墙

[root@localhost ~]# systemctl stop firewalld

6、然后直接测试ping对端隧道ip地址(内网),看能否通信

技术图片

能够ping通说明配置成功

以上是关于linux的搭建gre隧道的主要内容,如果未能解决你的问题,请参考以下文章

linux 下创建GRE隧道

基于centos6.x环境下GRE隧道的搭建及分析

OpenvSwitch的GRE隧道

配置GRE 隧道

公司与机房的GRE隧道配置实例

Linux GRE tunnel的构建原理