设置IPSec over GRE的加密隧道

我看了一些材料,发现IPSec over GRE虽然配置起来不难,但材料比较难找。故此,我这边记录一下设置过程。

首先说明的是,我这里采用的是CentOS 7系统。其他系统步骤都差不多,差别比较大的会额外说明。

在IPSec中,源头和目的地分别叫left和right,就是左侧源和右侧目的地。我们就拿这个观点来说明两台机器吧。以下操作均在root下进行。

机器信息

左源头:

公共IP: 1.2.3.4

GRE内网IP: 192.168.168.1

 

右目标:4.3.2.1

GRE内网IP: 192.168.168.2

设置GRE

设置GRE其实是一个极其简单的过程,CentOS 7的网络配置文件就已经完全支持GRE配置了。在此之前我们要在/etc/sysctl.conf开启内核的IP转发功能。

执行sysctl -p生效。

另外你的机器需要加载ip_gre模块才能使用GRE Tunnel。如果没有的请执行以下命令:

这样你的机器就会自动加载gre模块了。

(CentOS用户)接下来我们要分别在左和右机器上写网络配置文件。

左:

右:

最终,在两台机器上都执行以下命令启用GRE:

非CentOS系列的机器可以通过命令添加GRE线路(左):

右机器只要把俩ip互换位置,把内网ip改成.2即可。

我们要测试这两台机器是否能成功互ping。如果左机能ping右机的内网地址,以及反方向也可以,那么说明我们的GRE网络配置成功。

如果你有防火墙配置,则需要让防火墙允许对GRE1的NAT。

IPSec安装与配置

安装libreswan:

执行以下命令生成一个新的NSS数据库。

设置允许开机启动

添加防火墙端口。IKE需要用到UDP 500端口,IKE NAT-Traversal需要UDP 4500端口,Encapsulated Security Payload (ESP)需要用到50端口,以及Authenticated Header (AH)需要用到51端口。最后防火墙需要开启对gre1的nat。

配置IPSec

本篇文章里我们要使用RSA加密方式来对隧道进行加密。

首先,在2台机器上都创建一个key pair。

然后,找出左右机的public key

会出现一个类似right/leftrsasigkey=0sAQOw3XLeYw3q4….的东西,记下。

最后把public key写进配置:/etc/ipsec.d/mytunnel.conf,两边机器可以用同一个文件。系统会自动判断自己是左边右边。

启用IPSec

未来重启IPSec无需执行最后上面两条命令。

检查IPSec

在右侧机开启tcpdump:

左侧ping右侧机:

如果发现ESP包通过,则加密成功。

设置路由

临时设置流量走GRE,比如Google的DNS服务。

如果要重启自动实现,可以在服务器上添加静态路由/etc/sysconfig/network-scripts/route-gre1

参考资料

  1. http://wiki.frantech.ca/doku.php/gre_tunnel
  2. https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Securing_Virtual_Private_Networks.html

设置IPSec over GRE的加密隧道》有2个想法

  1. 如果一端是VPS,一端是局域网中一台centos,网络配置文件应该如何写,谢谢

发表评论