跳至主要內容

GRE-over-IPSEC

Change Lee...大约 3 分钟大杂烩greipsec

配置 GRE over IPSEC 隧道

⼀. 技术介绍
IPsec
主要作⽤是对数据进⾏加密,因为他能提供所有有时候被单独⽤作实现加密的⼀种⽅法!IPsec建⽴的是⼀个逻辑隧道,并不是真正意义上的隧道!并且不能提供路由功能,因为IPsec不⽀持⾮ip流量,也不⽀持⼴播(组播)!
GRE
(通⽤路由封装)能很好的提供⼀个真正意义上的点对点的隧道,GRE是⼀种三层VPN封装技术。GRE可以对某些⽹络层协议(如IPX、Apple Talk、IP等)的报⽂进⾏封装,使封装后的报⽂能够在另⼀种⽹络中(如IPv4)传输,从⽽解决了跨越异种⽹络的报⽂传输问题,虽然⽆法提供加密,但是能很好的⽀持⾮ip流量和⼴播!
GRE over IPSec(使⽤IPsec来加密隧道进⾏传输
GRE封装可以让你的私有IP地址封装在全球可路由的 new IP header GRE header,实现在不同site 之间的互联,但是GRE本⾝是明⽂⽅式,所以需要IPSec来加密保护,⼀般⽤传输模式即可,因为是GRE接⼝,所以⽀持组播,常⽤的⼀般就是这种模式。
IPSec over GRE(加密数据流后从隧道传输
这种⽅式在现实中很少⽤到,⼀般是通过crypto map ⽅式建⽴IPsec, 然后再⽤GRE来增加⼀个新的IP header, 因为这种模式IPSec 不是⼀种接⼝,只是⼀种映射,所以不能⽀组播。
⼀些区别
GRE over IPSEC:ipsec中acl匹配的是tunnle流,源和⽬的是隧道的源和⽬的
IPSEC over GRE:acl匹配的就是业务流
GRE over IPSEC:ike对等体中remote-address地址是对⽅公⽹⼝的物理地址
IPSEC over GRE:ike对等体中remote-address地址是对⽅tunnel接⼝地址
GRE over IPSEC:ipsec policy应⽤在本地物理接⼝上
IPSEC over GRE:ipsec policy应⽤在本地tunnel接⼝上

准备环境

服务器A

  • IP: 192.168.100.50
  • GRE: 10.10.10.1

服务器B

  • IP: 172.17.100.10
  • GRE: 10.10.10.2

配置GRE

#加载ip_gre 模块
modprobe ip_gre
#查看是否安装模块
lsmod | grep ip_gre

服务器A
GRE 不支持 gre0 这个名
vim /etc/sysconfig/network-scripts/ifcfg-gre01

DEVICE=gre01
ONBOOT=yes
TYPE=GRE
PEER_OUTER_IPADDR=172.17.100.10
MY_OUTER_IPADDR=192.168.100.50
PEER_INNER_IPADDR=10.10.10.2/30
MY_INNER_IPADDR=10.10.10.1
BOOTPROTO=none

服务器B
GRE 不支持 gre0 这个名
vim /etc/sysconfig/network-scripts/ifcfg-gre01

DEVICE=gre01
ONBOOT=yes
TYPE=GRE
PEER_OUTER_IPADDR=192.168.100.50
MY_OUTER_IPADDR=172.17.100.10
PEER_INNER_IPADDR=10.10.10.1/30
MY_INNER_IPADDR=10.10.10.2
BOOTPROTO=none

添加路由

配置IPSEC

服务器A

[root@izcf705gcdvyec6fp7dbasz ~]yum install libreswan -y
[root@izcf705gcdvyec6fp7dbasz ~]## ipsec initnss
Initializing NSS database
[root@izcf705gcdvyec6fp7dbasz ~]## ipsec newhostkey --configdir /etc/ipsec.d --random /dev/urandom --output /etc/ipsec.d/01.secrets --verbose
ipsec newhostkey warning: --configdir is obsoleted, use --nssdir
ipsec newhostkey warning: --random is obsoleted, using --seeddev
ipsec rsasigkey: adjusting nssdir to /etc/ipsec.d
ipsec rsasigkey: Initializing NSS
ipsec rsasigkey: Opening NSS database "sql:/etc/ipsec.d" read-write
ipsec rsasigkey: getting 64 random seed bytes for NSS from /dev/urandom...

Generated RSA key pair with CKAID bb9c39f695e22b519c7cd4ae839cc657302f1c7f was stored in the NSS database
ipsec rsasigkey: output...

[root@izcf705gcdvyec6fp7dbasz ~]## ipsec showhostkey --left --ckaid bb9c39f695e22b519c7cd4ae839cc657302f1c7f
        ## rsakey AwEAAbdcV
        leftrsasigkey=0sAwEAAbdcVfp9G+ijmxcY2wKpJcoo+b991gBxp1RtGY0Ii3svI/NZ2DCvb3aX7VZsheSib9cvSvj1onGkGWfK3Uzd03fILSaojP6dt5YmBcAG8E80QmIGuwOPR3ds5PtunE0aRE/VRoNaekgz5U4/jxFd7mpduSxz5RxjiRPf8lhhD4s+IJQ6ghJUZNG7XGgs8s2xjCJHybreeI3AKNDXZFEYOTFysFzf5jdxNQr4E2XRTqMLaDJKymv8TWmxwlko7RyLeu87K6Zv9YRfQbmzqlUp6k8Q8hT0krBs7xUDrOS2MG1ddwm1fEO9IdsbGusrXE2IPs+L45K4X0kdfAKUa+7ywspkj7fDUd0sY9Xy8Qh23dVkZm/arlxoLrhUa4mCxjJeDCqWwJNgZSfMaGQfTvaX0KO9U0JdwCbJPvKMslsOUQdLi5ZUwrebSkawpl9o9CqW0QryYPKPgKpcosUj2nw+un0nopIEz7xQ7st154ClOvX9D+9pZPhlA+EZi0a3zTB1fQ==
[root@izcf705gcdvyec6fp7dbasz ~]#

/etc/ipsec.d/ipsec.conf
手动修改一下 $leftrsasigkey$rightrsasigkey

conn gre01
    authby=rsasig
    auto=start
    type=transport
    left=192.168.100.50
    leftprotoport=gre
    leftrsasigkey=$leftrsasigkey
    right=172.17.100.10
    rightprotoport=gre
    rightrsasigkey=$rightrsasigkey

服务器B

[root@localhost ~]yum install libreswan -y
[root@localhost ~]## ipsec initnss
Initializing NSS database
[root@localhost ~]## ipsec newhostkey --configdir /etc/ipsec.d --random /dev/urandom --output /etc/ipsec.d/01.secrets --verbose;
ipsec newhostkey warning: --configdir is obsoleted, use --nssdir
ipsec newhostkey warning: --random is obsoleted, using --seeddev
ipsec rsasigkey: adjusting nssdir to /etc/ipsec.d
ipsec rsasigkey: Initializing NSS
ipsec rsasigkey: Opening NSS database "sql:/etc/ipsec.d" read-write
ipsec rsasigkey: getting 64 random seed bytes for NSS from /dev/urandom...

Generated RSA key pair with CKAID a6fb63a048925896a5b76d1b9fc3fa17c212059f was stored in the NSS database
ipsec rsasigkey: output...

[root@localhost ~]## ipsec showhostkey --left --ckaid a6fb63a048925896a5b76d1b9fc3fa17c212059f
        ## rsakey AwEAAeaSc
        leftrsasigkey=0sAwEAAeaSckpX43+I9Oh7C0nRXked2s/cdvSutZadD2W2FDhUBZYK4OEy2hYnjFyJ+rWrwxvw0kEvbMwXmKpvwqBOufuOMqvH3DLgOaB1csfftdJfefALkFz8/psqD8yTdEr+sa7bSHJXcgyB9pdB3fyaIyLUCm92IFec5TwC2JDB4imtGIBsxtu3MwFSNJvaH2+nAkuYEfttp8o4n8ENcUwdnQ0ijmzd1CWkjpN//DSTFPciQg+WYbQWVswRgTlmYKeZFC7vq9x71R/t9YGrrTGM26D0izDb/nNBqQqD7DsufAf5sNemVPnrHw/3CTQLP5DgEYr0qVy11RipIMfuu4r/ySBt43H9aJXhmMyTvonP69CkQKHEbaoD9i0WHlU+i8QZrprZ9AAh+8g+UXsYUUJNSYYF2Ned6A/zuHF8kN7+6jhYMU8JemQf9BuMWSMg4DCMiYVPpDl337PVXLB1q/g4uLS+nozBaVb4bXG4VQXh0PPnuhX6hH7cjs1JHf6RLD0ota3git3dDfEBLXHo5ZyLVwm7Ys/T4jZFakQhB7Lj2If/HyhBEbxnRldkYG2PkIVH9Vos4/RZrV2IXLlPXb7+ttxRYLmHIk1lC/gZaGXSBHx3gtcPAmNuq0nFEiFlO3bPDTFtlATfDYKoFneOJFzxFKotfqHDtJ0RhuvXIeE=
[root@localhost ~]#

/etc/ipsec.d/ipsec.conf
手动修改一下 $leftrsasigkey$rightrsasigkey

conn gre01
    authby=rsasig
    auto=start
    type=transport
    left=172.17.100.10
    leftprotoport=gre
    leftrsasigkey=$leftrsasigkey
    right=192.168.100.50
    rightprotoport=gre
    rightrsasigkey=$rightrsasigkey

配置路由及iptable nat

TIPS

如果是单向网络只需要配置出口服务器,如果是双向网络,则两台服务器都需要配置

#开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward
#或者编辑 /etc/sysctl.conf添加如下 
net.ipv4.ip_forward = 1

配置iptables
配置iptables nat 时,指定出口可以减少资源和开销也可以最小化打通网络,做到安全管控。

iptables -t nat -A POSTROUTING -s 10.10.10.5/30 -o enp0s3 -j MASQUERADE

添加路由:

route add 114.114.114.114 gw 10.10.10.5 dev gre01

如果需要设置成默认,则需要删除源有的默认路由,使用

route del 

验证

pingopen in new window
ping

加密后:

ipsecopen in new window
ipsec

未加密

noipsecopen in new window
noipsec
上次编辑于:
贡献者: change,lichangyangccm@163.com
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3