Centos8与华为USG建立GRE over ipsec隧道

拓扑

需求:centos8与防火墙建立gre over ipsec

GRE-linux端配置:

[root@localhost ~]# cat set_gre.sh 
#!bin/bash

interface_name="gre1"
local_ip="10.0.2.2" #本端地址,注意这里nat环境的话,是写内网接口地址
remote_ip="201.1.1.2" #对端公网地址
ipaddress="10.10.10.1"  #本端gre tunnel口ip
peer_address="10.10.10.2/32" #对端gre tunnel口ip
route_net="192.168.10.0/24"  #添加路由

modprobe ip_gre #加载gre模块
ip tunnel  add $interface_name mode gre remote $remote_ip local $local_ip ttl 255 #gre隧道
ip add add $ipaddress peer $peer_address dev $interface_name #设置gre接口IP
ip link set $interface_name up #设置接口up
ip route add $route_net dev $interface_name #添加路由

GRE-华为USG配置


interface GigabitEthernet1/0/0
 ip address 201.1.1.2 255.255.255.0
#
interface Tunnel0
 ip address 10.10.10.2 255.255.255.0
 tunnel-protocol gre
 source 201.1.1.2 
 destination 1.1.1.2 #对端nat后的地址
#
firewall zone trust
 add interface Tunnel0
#
firewall zone untrust
 add interface GigabitEthernet1/0/0
#
security-policy
 rule name permit_any
  action permit
#
ip route-static 0.0.0.0 0.0.0.0 201.1.1.1
#

建立Ipsec加密数据

华为端ipsec配置:

ip address-set net1 type object
 address 0 192.168.10.0 mask 24
#
ip address-set net2 type object
 address 0 192.168.11.0 mask 24
#
acl number 3000
 rule 5 permit ip source address-set net1 destination address-set net2
#
ipsec proposal prop2824463376
 encapsulation-mode auto
 esp authentication-algorithm sha2-256
 esp encryption-algorithm aes-256
#                       
ike proposal 1
 encryption-algorithm aes-256
 dh group14
 authentication-algorithm sha2-256
 authentication-method pre-share
 integrity-algorithm hmac-sha2-256
 prf hmac-sha2-256
#
ike peer ike2824463376
 exchange-mode auto
 pre-shared-key %^%#7HCS,w2^w&e-A-H<sFY9m#ZM9{A})*B@iF"Ac0I5%^%#
 ike-proposal 1
 remote-id-type none
 local-id 10.10.10.2
 dpd type periodic
 remote-address 10.10.10.1
#
ipsec policy ipsec2824462928 1 isakmp
 security acl 3000
 ike-peer ike2824463376
 proposal prop2824463376
 tunnel local applied-interface
 alias ipsec1
 sa trigger-mode auto                     
 sa duration traffic-based 10485760
 sa duration time-based 3600
#
interface LoopBack0
 ip address 192.168.10.1 255.255.255.0
#
interface Tunnel0
 ip address 10.10.10.2 255.255.255.0
 tunnel-protocol gre
 source 201.1.1.2
 destination 1.1.1.2
 ipsec policy ipsec2824462928  
#
ip route-static 192.168.11.0 255.255.255.0 10.10.10.1


centos ipsec配置

1.开启流量转发

cp -pv /etc/sysctl.conf{,.old}
 vim /etc/sysctl.conf
    ## Controls IP packet forwarding
    net.ipv4.ip_forward = 1
    ## Controls source route verification
    net.ipv4.conf.default.rp_filter = 0

禁用send_redirects

sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}'
sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' >> /etc/sysctl.conf

保存sysctl.conf
sysctl -p

setenforce关闭
setenforce 0

安装配置
yum install -y libreswan

检查环境,要全部Ok
ipsec verify

有一个报错:临时解决:
echo "0" >/proc/sys/net/ipv4/conf/all/rp_filter

配置文件:/etc/ipsec.d/test-vm.conf

[root@localhost ~]# cat /etc/ipsec.d/test-vm.conf
conn test-vm-test
        ### phase 1 ###
        authby=secret 
        #指定认证类型预共享秘钥
        ike=aes256-sha256;dh14 
        #指定第一阶段ike的算法
        keyexchange=ike 
        # 指定ike

        ### phase 2 ###
        esp=aes256-sha256 
        # 指定是否压缩
        compress=no 
        # 指定是否加密
        pfs=yes 
        # 指定连接添加类型。start 为开机自启,add为添加 不主动连接
        auto=start 
        # 指定模式类型为隧道模式|传输模式
        type=tunnel  

        #本端发起连接的ip
        left=10.10.10.1 
        #匹配本地要加密的网段
        leftsubnet=192.168.11.0/24 
        #本端id
        leftid=10.10.10.1 
        #会自动将本地网络流量通过系统的默认路由(即默认网关)转发到远程网络。简化配置:无需手动指定具体的下一跳 IP 地址,系统会自动使用默认路由。
        leftnexthop=%defaultroute 

        #对端ip
        right=10.10.10.2 
        #匹配对端要加密的网段
        rightsubnet=192.168.10.0/24
        #对端端id 
        rightid=10.10.10.10.2  
        rightnexthop=%defaultroute 

共享秘钥:/etc/ipsec.d/test-vm.secrets

[root@localhost ~]# cat /etc/ipsec.d/test-vm.secrets 
0.0.0.0  0.0.0.0 : PSK "123456789"

启动ipsec
systemctl restart ipsec

添加路由

ip a a 192.168.11.1/24 dev ens4
ip route add 192.168.10.0/24 dev gre1

验证
ipsec status

ipsec status全部日志
[root@localhost ~]# ipsec status
000 using kernel interface: xfrm
000  
000 interface lo UDP [::1]:500
000 interface lo UDP 127.0.0.1:4500
000 interface lo UDP 127.0.0.1:500
000 interface ens3 UDP 10.0.2.2:4500
000 interface ens3 UDP 10.0.2.2:500
000 interface virbr0 UDP 192.168.122.1:4500
000 interface virbr0 UDP 192.168.122.1:500
000 interface gre1 UDP 10.10.10.1:4500
000 interface gre1 UDP 10.10.10.1:500
000  
000 fips mode=disabled;
000 SElinux=disabled
000 seccomp=disabled
000  
000 config setup options:
000  
000 configdir=/etc, configfile=/etc/ipsec.conf, secrets=/etc/ipsec.secrets, ipsecdir=/etc/ipsec.d
000 nssdir=/etc/ipsec.d, dumpdir=/run/pluto, statsbin=unset
000 dnssec-rootkey-file=/var/lib/unbound/root.key, dnssec-trusted=<unset>
000 sbindir=/usr/sbin, libexecdir=/usr/libexec/ipsec
000 pluto_version=4.4, pluto_vendorid=OE-Libreswan-4.4, audit-log=yes
000 nhelpers=-1, uniqueids=yes, dnssec-enable=yes, logappend=yes, logip=yes, shuntlifetime=900s, xfrmlifetime=30s
000 ddos-cookies-threshold=25000, ddos-max-halfopen=50000, ddos-mode=auto, ikev1-policy=accept
000 ikebuf=0, msg_errqueue=yes, crl-strict=no, crlcheckinterval=0, listen=<any>, nflog-all=0
000 ocsp-enable=no, ocsp-strict=no, ocsp-timeout=2, ocsp-uri=<unset>
000 ocsp-trust-name=<unset>
000 ocsp-cache-size=1000, ocsp-cache-min-age=3600, ocsp-cache-max-age=86400, ocsp-method=get
000 global-redirect=no, global-redirect-to=<unset>
000 secctx-attr-type=32001
000 debug:
000  
000 nat-traversal=yes, keep-alive=20, nat-ikeport=4500
000 virtual-private (%priv):
000 - allowed subnets: 192.168.0.0/16, 172.16.0.0/12, 25.0.0.0/8, 100.64.0.0/10, fd00::/8, fe80::/10, <unset-subnet>
000  
000 Kernel algorithms supported:
000  
000 algorithm ESP encrypt: name=3DES_CBC, keysizemin=192, keysizemax=192
000 algorithm ESP encrypt: name=AES_CBC, keysizemin=128, keysizemax=256
000 algorithm ESP encrypt: name=AES_CCM_12, keysizemin=128, keysizemax=256
000 algorithm ESP encrypt: name=AES_CCM_16, keysizemin=128, keysizemax=256
000 algorithm ESP encrypt: name=AES_CCM_8, keysizemin=128, keysizemax=256
000 algorithm ESP encrypt: name=AES_CTR, keysizemin=128, keysizemax=256
000 algorithm ESP encrypt: name=AES_GCM_12, keysizemin=128, keysizemax=256
000 algorithm ESP encrypt: name=AES_GCM_16, keysizemin=128, keysizemax=256
000 algorithm ESP encrypt: name=AES_GCM_8, keysizemin=128, keysizemax=256
000 algorithm ESP encrypt: name=CAMELLIA_CBC, keysizemin=128, keysizemax=256
000 algorithm ESP encrypt: name=CHACHA20_POLY1305, keysizemin=256, keysizemax=256
000 algorithm ESP encrypt: name=NULL, keysizemin=0, keysizemax=0
000 algorithm ESP encrypt: name=NULL_AUTH_AES_GMAC, keysizemin=128, keysizemax=256
000 algorithm AH/ESP auth: name=AES_CMAC_96, key-length=128
000 algorithm AH/ESP auth: name=AES_XCBC_96, key-length=128
000 algorithm AH/ESP auth: name=HMAC_MD5_96, key-length=128
000 algorithm AH/ESP auth: name=HMAC_SHA1_96, key-length=160
000 algorithm AH/ESP auth: name=HMAC_SHA2_256_128, key-length=256
000 algorithm AH/ESP auth: name=HMAC_SHA2_256_TRUNCBUG, key-length=256
000 algorithm AH/ESP auth: name=HMAC_SHA2_384_192, key-length=384
000 algorithm AH/ESP auth: name=HMAC_SHA2_512_256, key-length=512
000 algorithm AH/ESP auth: name=NONE, key-length=0
000  
000 IKE algorithms supported:
000  
000 algorithm IKE encrypt: v1id=5, v1name=OAKLEY_3DES_CBC, v2id=3, v2name=3DES, blocksize=8, keydeflen=192
000 algorithm IKE encrypt: v1id=8, v1name=OAKLEY_CAMELLIA_CBC, v2id=23, v2name=CAMELLIA_CBC, blocksize=16, keydeflen=128
000 algorithm IKE encrypt: v1id=-1, v1name=n/a, v2id=20, v2name=AES_GCM_C, blocksize=16, keydeflen=128
000 algorithm IKE encrypt: v1id=-1, v1name=n/a, v2id=19, v2name=AES_GCM_B, blocksize=16, keydeflen=128
000 algorithm IKE encrypt: v1id=-1, v1name=n/a, v2id=18, v2name=AES_GCM_A, blocksize=16, keydeflen=128
000 algorithm IKE encrypt: v1id=13, v1name=OAKLEY_AES_CTR, v2id=13, v2name=AES_CTR, blocksize=16, keydeflen=128
000 algorithm IKE encrypt: v1id=7, v1name=OAKLEY_AES_CBC, v2id=12, v2name=AES_CBC, blocksize=16, keydeflen=128
000 algorithm IKE encrypt: v1id=-1, v1name=n/a, v2id=28, v2name=CHACHA20_POLY1305, blocksize=16, keydeflen=256
000 algorithm IKE PRF: name=HMAC_MD5, hashlen=16
000 algorithm IKE PRF: name=HMAC_SHA1, hashlen=20
000 algorithm IKE PRF: name=HMAC_SHA2_256, hashlen=32
000 algorithm IKE PRF: name=HMAC_SHA2_384, hashlen=48
000 algorithm IKE PRF: name=HMAC_SHA2_512, hashlen=64
000 algorithm IKE PRF: name=AES_XCBC, hashlen=16
000 algorithm IKE DH Key Exchange: name=MODP1024, bits=1024
000 algorithm IKE DH Key Exchange: name=MODP1536, bits=1536
000 algorithm IKE DH Key Exchange: name=MODP2048, bits=2048
000 algorithm IKE DH Key Exchange: name=MODP3072, bits=3072
000 algorithm IKE DH Key Exchange: name=MODP4096, bits=4096
000 algorithm IKE DH Key Exchange: name=MODP6144, bits=6144
000 algorithm IKE DH Key Exchange: name=MODP8192, bits=8192
000 algorithm IKE DH Key Exchange: name=DH19, bits=512
000 algorithm IKE DH Key Exchange: name=DH20, bits=768
000 algorithm IKE DH Key Exchange: name=DH21, bits=1056
000 algorithm IKE DH Key Exchange: name=DH31, bits=256
000  
000 stats db_ops: {curr_cnt, total_cnt, maxsz} :context={0,0,0} trans={0,0,0} attrs={0,0,0} 
000  
000 Connection list:
000  
000 "test-vm-test": 192.168.11.0/24===10.10.10.1<10.10.10.1>---10.0.2.1...10.10.10.2<10.10.10.2>===192.168.10.0/24; erouted; eroute owner: #2
000 "test-vm-test":     oriented; my_ip=unset; their_ip=unset; my_updown=ipsec _updown;
000 "test-vm-test":   xauth us:none, xauth them:none,  my_username=[any]; their_username=[any]
000 "test-vm-test":   our auth:secret, their auth:secret
000 "test-vm-test":   modecfg info: us:none, them:none, modecfg policy:push, dns:unset, domains:unset, cat:unset;
000 "test-vm-test":   sec_label:unset;
000 "test-vm-test":   ike_life: 28800s; ipsec_life: 28800s; replay_window: 32; rekey_margin: 540s; rekey_fuzz: 100%; keyingtries: 0;
000 "test-vm-test":   retransmit-interval: 500ms; retransmit-timeout: 60s; iketcp:no; iketcp-port:4500;
000 "test-vm-test":   initial-contact:no; cisco-unity:no; fake-strongswan:no; send-vendorid:no; send-no-esp-tfc:no;
000 "test-vm-test":   policy: IKEv2+PSK+ENCRYPT+TUNNEL+PFS+UP+IKE_FRAG_ALLOW+ESN_NO;
000 "test-vm-test":   v2-auth-hash-policy: none;
000 "test-vm-test":   conn_prio: 24,24; interface: gre1; metric: 0; mtu: unset; sa_prio:auto; sa_tfc:none;
000 "test-vm-test":   nflog-group: unset; mark: unset; vti-iface:unset; vti-routing:no; vti-shared:no; nic-offload:auto;
000 "test-vm-test":   our idtype: ID_IPV4_ADDR; our id=10.10.10.1; their idtype: ID_IPV4_ADDR; their id=10.10.10.2
000 "test-vm-test":   dpd: action:hold; delay:0; timeout:0; nat-t: encaps:auto; nat_keepalive:yes; ikev1_natt:both
000 "test-vm-test":   newest ISAKMP SA: #1; newest IPsec SA: #2; conn serial: $1;
000 "test-vm-test":   IKE algorithms: AES_CBC_256-HMAC_SHA2_256-MODP2048
000 "test-vm-test":   IKEv2 algorithm newest: AES_CBC_256-HMAC_SHA2_256-MODP2048
000 "test-vm-test":   ESP algorithms: AES_CBC_256-HMAC_SHA2_256_128
000 "test-vm-test":   ESP algorithm newest: AES_CBC_256-HMAC_SHA2_256_128; pfsgroup=<Phase1>
000  
000 Total IPsec connections: loaded 1, active 1
000  
000 State Information: DDoS cookies not required, Accepting new IKE connections
000 IKE SAs: total(1), half-open(0), open(0), authenticated(1), anonymous(0)
000 IPsec SAs: total(1), authenticated(1), anonymous(0)
000  
000 #1: "test-vm-test":500 STATE_V2_ESTABLISHED_IKE_SA (established IKE SA); EVENT_SA_REKEY in 26150s; newest ISAKMP; idle;
000 #2: "test-vm-test":500 STATE_V2_ESTABLISHED_CHILD_SA (IPsec SA established); EVENT_SA_REKEY in 26391s; newest IPSEC; eroute owner; isakmp#1; idle;
000 #2: "test-vm-test" esp.b884094@10.10.10.2 esp.a2f63cd4@10.10.10.1 tun.0@10.10.10.2 tun.0@10.10.10.1 Traffic: ESPin=420B ESPout=420B! ESPmax=0B 
000  
000 Bare Shunt list:
000
华为USG ipsec sa
[USG6000V2]dis ipsec sa 
2025-02-28 15:10:00.720 +08:00

ipsec sa information:

===============================
Interface: Tunnel0
===============================

  -----------------------------
  IPSec policy name: "ipsec2824462928"
  Sequence number  : 1
  Acl group        : 3000
  Acl rule         : 5
  Mode             : ISAKMP
  -----------------------------
    Connection ID     : 16777381
    Encapsulation mode: Tunnel
    Holding time      : 0d 0h 29m 42s
    Tunnel local      : 10.10.10.2:500
    Tunnel remote     : 10.10.10.1:500
    Flow source       : 192.168.10.0/255.255.255.0 0/0-65535
    Flow destination  : 192.168.11.0/255.255.255.0 0/0-65535

    [Outbound ESP SAs] 
      SPI: 2734046420 (0xa2f63cd4)
      Proposal: ESP-ENCRYPT-AES-256 ESP-AUTH-SHA2-256-128
      SA remaining key duration (kilobytes/sec): 0/603019
      Max sent sequence-number: 6         
      UDP encapsulation used for NAT traversal: N
      SA encrypted packets (number/bytes): 5/420

    [Inbound ESP SAs] 
      SPI: 193478804 (0xb884094)
      Proposal: ESP-ENCRYPT-AES-256 ESP-AUTH-SHA2-256-128
      SA remaining key duration (kilobytes/sec): 0/603019
      Max received sequence-number: 1
      UDP encapsulation used for NAT traversal: N
      SA decrypted packets (number/bytes): 5/420
      Anti-replay : Enable
      Anti-replay window size: 1024

ike sa
[USG6000V2] dis ike sa 
2025-02-28 15:19:09.480 +08:00

IKE SA information :
 Conn-ID    Peer                                          VPN              Flag(s)               Phase  RemoteType  RemoteID        
------------------------------------------------------------------------------------------------------------------------------------
 16777381   10.10.10.1:500                                                 RD|A                  v2:2   IP          10.10.10.1      
 16777380   10.10.10.1:500                                                 RD|A                  v2:1   IP          10.10.10.1      

  Number of IKE SA : 2
------------------------------------------------------------------------------------------------------------------------------------

 Flag Description:
 RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT
 HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP
 M--ACTIVE   S--STANDBY   A--ALONE  NEG--NEGOTIATING

验证测试

ping测试:

抓包:

linux主机抓包
tcpdump -n -i gre1 esp or udp port 500 or udp port 4500

posted @ 2025-02-28 11:27  KuangZhuMing2  阅读(223)  评论(0)    收藏  举报