通过 GRE 隧道 实现 VPC 互通方案介绍

背景

不同 VPC 之间或者是云下 IDC 机房和 VPC 网络之间互通,可以通过高速通道、自建 Site to Site VPC 和 GRE 隧道 3 种方式实现互通。

本介绍如何使用 GRE 实现互通并对相关问题进行分析。

部署架构和环境介绍

部署图拓扑图:
通过 GRE 隧道 实现 VPC 互通方案介绍
杭州节点:

  • 网段:172.16.0.0/24
  • 部署 GRE ECS:172.16.0.1 绑定 EIP:121.196.208.175 系统:Centos6.5
  • 隧道互联地址:192.168.1.1
  • 测试主机:172.16.0.136 系统:Centos6.5

北京节点:

  • 网段:10.10.10.0/24
  • 部署 GRE ECS:10.10.10.1 绑定EIP:60.205.187.39 系统:Centos6.5
  • 隧道互联地址:192.168.1.2
  • 测试主机:10.10.10.118 系统:Centos6.5

部署步骤


一、杭州 VPC 部署


1、在虚拟路由器上添加去往 10.10.10.0/24 指向 ECS:172.16.0.1
通过 GRE 隧道 实现 VPC 互通方案介绍
2、在杭州 VPC 的虚拟路由器上增加去往互联地址的路由:
通过 GRE 隧道 实现 VPC 互通方案介绍


3、在 ECS:172.16.0.1 上加载 GRE 模块
[[email protected] ~]# modprobe ip_gre
[[email protected] ~]# lsmod |grep ip_gre
9575 0 ip_tunnel 12661 1 ip_gre

4、在 ECS:172.16.0.1 上创建隧道 tun1
[[email protected] ~]# ip tunnel add tun1 mode gre remote 60.205.187.39 local 172.16.0.1

5、在 ECS:172.16.0.1 上**隧道 tun1
[[email protected] ~]# ip link set tun1 up

6、在 ECS:172.16.0.1 上为隧道配置互联地址
[[email protected] ~]# ip addr add 192.168.1.1 peer 192.168.1.2 dev tun1

7、在 ECS:172.16.0.1 上指路由,将访问 10.10.10.0/24 丢到 tun1 上
[[email protected] ~]# route add -net 10.10.10.0/24 dev tun1

8、在 ECS:172.16.0.1 上开启路由转发
[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/ip_forward


以上已经把 GER 在杭州的环境已经配置好
通过 GRE 隧道 实现 VPC 互通方案介绍


二、北京 VPC 部署

1、在虚拟路由器上添加去往 172.16.0.0/24 指向 ECS:10.10.10.1
通过 GRE 隧道 实现 VPC 互通方案介绍

2、在杭州 VPC 的虚拟路由器上增加去往互联地址的路由:
通过 GRE 隧道 实现 VPC 互通方案介绍

3、在 ECS:10.10.10.1上加载 GRE 模块
[[email protected] ~]# modprobe ip_gre
[[email protected] ~]# lsmod |grep ip_gre
9575 0ip_tunnel 12661 1 ip_gre

4、在 ECS:10.10.10.1 上创建隧道 tun1
[[email protected] ~]# ip tunnel add tun1 mode gre remote 121.196.208.175 local 10.10.10.1

5、在 ECS:10.10.10.1 上**隧道 tun1
[[email protected] ~]# ip link set tun1 up

6、在 ECS:10.10.10.1 上为隧道配置互联地址
[[email protected] ~]# ip addr add 192.168.1.2 peer 192.168.1.1 dev tun1

7、在 ECS:10.10.10.1上指路由,将访问 172.16.0.0/24 丢到 tun1上
[[email protected] ~]# route add -net 172.16.0.0/24 dev tun1

8、在 ECS:10.10.10.1 上开启路由转发
[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/ip_forward


以上已经把 GER 在北京的环境已经配置好:
通过 GRE 隧道 实现 VPC 互通方案介绍

测试


1、在北京 VPC 下测试去往杭州 VPC

在 10.10.10.1上 ping 172.16.0.1 通

在 10.10.10.1上 ping 172.16.0.136 通

在 10.10.10.118 上 ping 172.16.0.136 通

在 10.10.10.118 上 ping 172.16.0.1 通

2、在杭州 VPC 下测试去往北京 VPC

在 172.16.0.1 上 ping 10.10.10.1 通

在 172.16.0.1 上 ping 10.10.10.118 通

在 172.16.0.136 上 ping 10.10.10.118 通

在 172.16.0.136 上 ping 10.10.10.1 通

总结


在搭建 GRE 隧道的时候,如果发现不通,要注意的地址是内核上要开启路由转发,相关路由要设置正确。如果检查配置没有问题还是不通,那么建议在各个节点上进行抓包。