GRE隧道搭建及分析

一、网络拓扑
这里写图片描述
二、环境介绍
所有服务器系统均是centos6.5,内核:2.6.32-431.el6.x86_64
centos1:一张网卡eth1:192.168.10.10,gw:192.168.10.1,仅主机vmnet1
R:两张网卡eth0:192.168.20.1,仅主机vmnet2
eth1:192.168.10.1,仅主机vmnet1
centos2:两张网卡eth0:192.168.20.10,gw:192.168.20.1,仅主机vmnet2
eth1:202.100.2.2,仅主机vmnet3
此时centos1(192.168.10.10) ping不通centos2(202.100.2.2)
三、GRE隧道配置
3.1、centos1端配置
[root@centos1 ~]# modprobe -l |grep ip_gre.ko ##查看内核模块文件
kernel/net/ipv4/ip_gre.ko
[root@centos1 ~]# modprobe ip_gre ##加载内核模块文件
[root@centos1 ~]# lsmod|grep gre
ip_gre 9575 0
ip_tunnel 12693 1 ip_gre
[root@centos1 ~]# ip addr show |grep gre
4: gre0: mtu 1476 qdisc noop state DOWN
link/gre 0.0.0.0 brd 0.0.0.0
5: gretap0:

!/bin/bash

modprobe ip_gre
ip tunnel add tunnel0 mode gre remote 192.168.20.20 local 192.168.10.10 ttl 255
ip link set tunnel0 up mtu 1400
ip addr add 172.16.1.1/30 peer 172.16.1.2/30 dev tunnel0
或者这样建立隧道(二选一)
[root@centos1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-tunnel0
DEVICE=tunnel0
BOOTPROTO=none
ONBOOT=yes
TYPE=GRE
MY_OUTER_IPADDR=192.168.10.10
PEER_OUTER_IPADDR=192.168.20.20
MY_INNER_IPADDR=172.16.1.1
PEER_INNER_IPADDR=172.16.1.2
ip route add 202.100.2.2/32 dev tunnel0 ##这一步很关键
[root@centos1 ~]#chmod +x /etc/init.d/gre
[root@centos1 ~]# echo ‘/etc/init.d/gre’>>/etc/rc.local

centos2:
[root@centos2 ~]# vim /etc/init.d/gre

!/bin/bash

modprobe ip_gre
ip tunnel add tunnel0 mode gre remote 192.168.10.10 local 192.168.20.20 ttl 255
ip link set tunnel0 up mtu 1400
ip addr add 172.16.1.2/30 peer 172.16.1.1/30 dev tunnel0
或者这样建立隧道(二选一)
[root@centos2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-tunnel0
DEVICE=tunnel0
BOOTPROTO=none
ONBOOT=yes
TYPE=GRE
MY_OUTER_IPADDR=192.168.20.20
PEER_OUTER_IPADDR=192.168.10.10
MY_INNER_IPADDR=172.16.1.2
PEER_INNER_IPADDR=172.16.1.1
[root@centos2 ~]#chmod +x /etc/init.d/gre
[root@centos2 ~]# echo ‘/etc/init.d/gre’>>/etc/rc.local
四、测试连通性
[root@centos1 ~]# ping 202.100.2.2
PING 202.100.2.2 (202.100.2.2) 56(84) bytes of data.
64 bytes from 202.100.2.2: icmp_seq=1 ttl=64 time=1.89 ms
64 bytes from 202.100.2.2: icmp_seq=2 ttl=64 time=0.718 ms
^C
— 202.100.2.2 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1805ms
rtt min/avg/max/mdev = 0.718/1.308/1.898/0.590 ms
五、深入理解GRE
这里写图片描述
我对gre的理解如下:
5.1、gre的turnel的打通
这个过程就是双方建立turnel的过程。
5.2、局域网路由过程
主机pc1发送一个源为192.168.10.10,目的为202.100.2.2的包
5.3、封装过程
1、根据内网路由,可能是你的默认路由网关将之路由至192.168.10.1
2、192.168.10.1第一次封装包,增加增加gre包头,说明包的目的地址172.16.1.2和 源地址172.16.1.1。
3、192.168.10.1第2次封装包,增加公网的包头(否则在公网上无法路由),说明包的 目的地址192.168.20.1和源地址192.168.10.1。
4、192.168.10.1把所有到202.100.0.0/24的包,都地址转换为从172.16.1.1出(snat)
5.4、公网路由过程
1、经过n个路由设备,该包最终路由到192.168.20.1
5.5、拆包过程
1、B端的路由器检测到是到达自己的ip,就开始拆包
2、拆包之后发现有GRE协议,就进一步拆包
3、拆包之后发现目的地不是自己的ip、发现自己本地有路由转发,就将至源ip替换为 192.168.20.10
5.6、局域网路由
1、实际上从192.168.20.10出发的包,到达目的地为202.100.2.2的包,无需路由,直接转 发。202.100.2.2的机器确定是发送给自己的包,就接收。然后进一步处理了。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值