为了研究gre协议需要搭建gre隧道来进行测试,需要两个能通信的服务器
服务器A:
IP地址: 10.20.50.148
GRE内部IP地址: 203.0.113.1
服务器B:
IP地址: 192.168.4.2
GRE内部IP地址: 203.0.113.2
服务器A和服务器B可以通过IP地址ping通,但是不能通过GRE内部的IP地址ping通
GRE协议是在内部IP头前面添加了一个GRE头再加一个IP头
服务器A和服务器B都需要配置,配置步骤基本相似,只需要交换配置文件部分内容
服务器A配置
# 1.加载驱动 modprobe ip_gre # 2.创建gre隧道 cd /etc/sysconfig/network-scripts vim ifcfg-tun0 # 3.在ifcfg-tun0文件中添加 DEVICE=tun0 BOOTPROTO=none ONBOOT=yes DEVICETYPE=tunnel TYPE=GRE PEER_INNER_IPADDR=203.0.113.2 PEER_OUTER_IPADDR=192.168.4.2 MY_INNER_IPADDR=203.0.113.1 # 4.启动gre隧道 ifup tun0 # 5.关闭隧道(这一步只是提醒如何关闭,不需要操作) ifdown tun0
服务器B配置
# 1.加载驱动 modprobe ip_gre # 2.创建gre隧道 cd /etc/sysconfig/network-scripts vim ifcfg-tun0 # 3.在ifcfg-tun0文件中添加 DEVICE=tun0 BOOTPROTO=none ONBOOT=yes DEVICETYPE=tunnel TYPE=GRE PEER_INNER_IPADDR=203.0.113.1 PEER_OUTER_IPADDR=10.20.50.148 MY_INNER_IPADDR=203.0.113.2 # 4.启动gre隧道 ifup tun0
其中服务器B的配置主要是配置文件中交换了IP地址,倒数第二项换成了隧道另一端的IP地址
在服务器B上执行命令
ping 203.0.113.1
能ping通说明隧道搭建成功
通过tcpdump抓取通信网卡(不是tun0)可以获取gre隧道协议的数据包,可以通过ssh 203.0.113.1获取gre中携带tcp协议的数据包