GRE Tunnel만 사용할 경우, 네트워크간 연결 자체에는 문제가 없으나 Tunneling을 위해서 Encapsulation되었을 뿐인 원본데이타 그대로가 외부 경로(이 경우에는 BGP로 연결된 구간이 해당된다.)를 지나가게 된다. 이는 중간단계에서 얼마든지 내용을 확인할 수 있고, 이를 변조시킬 수도 있다. 즉, Encapsulation만 되어 있어서 그 내용에 대한 보안에 문제가 있을 뿐더러, 그렇게 받은 내용을 신뢰할 수도 없다. VPN이 필요한 이유는 이러한 신뢰성과 보안성을 위해서이다.
IPSec VPN (여기서는 GRE Tunnel 동반)은 VPN(Virtual Private Networks : 가상 사설 네트워크)의 한 종류로,
IP기반의 3계층 보안형식이다.
여기서는 GRE Tunnel과 함께 사용한다. 볼드 처리한 부분은
변수/옵션/이름지정을 해야하는 부분들이다.
1. 먼저 ISAKMP정책을 설정한다.
A00A(config)# crypto isakmp policy
10 / 정책이 여러개면 숫자가 낮을 수록 우선시됨.
A00A(config-isakmp)# encryption
aes / 암호화 방식을 설정
A00A(config-isakmp)# authentication
pre-share / 인증은 사전에 설정한 키로 함.
A00A(config-isakmp)# hash
sha
A00A(config-isakmp)# group
5 /
Diffie Hellman groups 중 몇번을 사용할지 설정.
A00A(config-isakmp)# exit
encryption에서 사용 가능한 옵션은 아래의 세가지중 하나.
3des Three key triple DES
aes AES - Advanced Encryption Standard.
des DES - Data Encryption Standard (56 bit keys).
자세한 내용은
대칭키 암호화 - AES/DES/3DES 를 참조. 가장 최근것이 AES다.
authentication 항목에서 사용가능한 옵션을 다음과 같다.
pre-share Pre-Shared Key
rsa-encr Rivest-Shamir-Adleman Encryption
rsa-sig Rivest-Shamir-Adleman Signature
아래의 두 항목 관련 자료는
RSA (Rivest-Shamir-Adleman)를 참조.
lifetime 항목은 기본값으로 진행하였기에 별도로 설정하지 않았다.
(짧게 설정하면 보안에 좋지만... router 부하가 커진다.=GNS기동중인 컴퓨터 부하가 크다.)
2. 각 대상(여기서는 해당 Peer IP)에 대한 key값(Pre-Shared Key : PSK)을 입력하고
A00A(config)# crypto isakmp key 6
pword address 204.172.100.161
A00A(config)# crypto isakmp key 6
pword address 206.172.100.161
연결상태 유지 확인용 DPD(Dead Peer Detection) 설정.
A00A(config)# crypto isakmp keepalive 30
3. IPsec으로 보호할 대상 트래픽 지정.
ACL에서 GRE 대신 IP로 변경해도 됨.
A00A(config)# ip access-list extended
vpn12 / Tunnel 12와 연동할 ACL이라 12
A00A(config-ext-nacl)# permit
gre host 203.172.100.129 host 204.172.100.161
A00A(config-ext-nacl)# exit
A00A(config)# ip access-list extended
vpn13 / Tunnel 13과 연동할 ACL이라 13
A00A(config-ext-nacl)# permit
gre host 203.172.100.129 host 206.172.100.161
A00A(config-ext-nacl)# exit
4. IPsec SA를 지정한다. (여기서는 ts10번으로)
A00A(config)# crypto ipsec transform-set
ts10 esp-aes esp-md5-hmac
A00A(cfg-crypto-trans)# exit
뒤의 보라색과 파란색 부분에 지정 가능한 옵션은 아래와 같다.
ah-md5-hmac AH-HMAC-MD5 transform
ah-sha-hmac AH-HMAC-SHA transform
comp-lzs IP Compression using the LZS compression algorithm
esp-3des ESP transform using 3DES(EDE) cipher (168 bits)
esp-aes ESP transform using AES cipher
esp-des ESP transform using DES cipher (56 bits)
esp-md5-hmac ESP transform using HMAC-MD5 auth
esp-null ESP transform w/o cipher
esp-seal ESP transform using SEAL cipher (160 bits)
esp-sha-hmac ESP transform using HMAC-SHA auth
6. Cryto Map을 설정한다.
먼저 Cryto Map의 Peer 지정을 Loopback Interface로 하기 때문에 이를 선언.
A00A(config)# crypto map
GREVPN local-address loopback
0
그리고 Cryto Map의 새부설정을 지정.
A00A(config)# crypto map
GREVPN 10 ipsec-isakmp
A00A(config-crypto-map)# match address
vpn12
A00A(config-crypto-map)# set peer
204.172.100.161 / Tunnel 12의 Dst
A00A(config-crypto-map)# set transform-set
ts10 / 연결할 IPsec SA를 지정
A00A(config-crypto-map)# exit
A00A(config)# crypto map
GREVPN 20 ipsec-isakmp
A00A(config-crypto-map)# match address
vpn13
A00A(config-crypto-map)# set peer
206.172.100.161 / Tunnel 13의 Dst
A00A(config-crypto-map)# set transform-set
ts10
A00A(config-crypto-map)# exit
6. Cryto Map을 해당 인터페이스에 지정.
A00A(config)# int s1/0 / 외부에서 직접 오는 경로
A00A(config-if)# crypto map
GREVPN
A00A(config)# int f2/0 / 네트워크 구조상 우회할 수 있는 경로
A00A(config-if)# crypto map
GREVPN
작업을 마치고 상태 확인은 아래의 명령어로 진행하면 된다.
clear ip access-list counters / ACL 기록 초기화
show ip access-list / ACL 적용 내역 조회 (초기화 후 좀 기다렸다 하는게 좋음.)
clear crypto session / VPN 세션 초기화
show crypto isakmp sa / 현재 VPN 관련 SA(Security Association) 정보
show crypto ipsec sa / IPsec SA상태 조회
show crypto session detail / 세션의 암호화/복호화 내역
관련 링크
설정방법(단, 실제 설정 자체는 이 내용보다는
피터전의 책을 더 참고하였다.)
Configuring VPNs Using an IPSec Tunnel and Generic Routing Encapsulation
관련 이론이나 자료, 정보
rfc 2408 isakmp
실제 진행하다 문제생긴 경우 참고할 곳.
IPsec Troubleshooting: Understanding and Using debug Commands
Proposal with ESP is missing cipher
실제 설정에서 각 라우터별 공통 부분은 아래와 같다.
conf t
crypto isakmp policy 10
encryption aes
authentication pre-share
hash sha
group 5
exit
각 라우터별 변동되는 부분은 아래와 같다.
#A00A
crypto isakmp key 6 pword address 204.172.100.161
crypto isakmp key 6 pword address 206.172.100.161
crypto isakmp keepalive 30
ip access-list extended vpn12
permit gre host 203.172.100.129 host 204.172.100.161
exit
ip access-list extended vpn13
permit gre host 203.172.100.129 host 206.172.100.161
exit
crypto ipsec transform-set ts10 esp-aes esp-md5-hmac
exit
crypto map GREVPN local-address loopback 0
crypto map GREVPN 10 ipsec-isakmp
match address vpn12
set peer 204.172.100.161
set transform-set ts10
exit
crypto map GREVPN 20 ipsec-isakmp
match address vpn13
set peer 206.172.100.161
set transform-set ts10
exit
int s1/0
crypto map GREVPN
exit
int f2/0
crypto map GREVPN
exit
#A00B
crypto isakmp key 6 pword address 204.172.100.161
crypto isakmp key 6 pword address 206.172.100.161
crypto isakmp keepalive 30
ip access-list extended vpn22
permit gre host 205.172.100.129 host 204.172.100.161
exit
ip access-list extended vpn23
permit gre host 205.172.100.129 host 206.172.100.161
exit
crypto ipsec transform-set ts10 esp-aes esp-md5-hmac
exit
crypto map GREVPN local-address loopback 0
crypto map GREVPN 10 ipsec-isakmp
match address vpn22
set peer 204.172.100.161
set transform-set ts10
crypto map GREVPN 20 ipsec-isakmp
match address vpn23
set peer 206.172.100.161
set transform-set ts10
int s1/0
crypto map GREVPN
int f2/0
crypto map GREVPN
#A10A
crypto isakmp key 6 pword address 203.172.100.129
crypto isakmp key 6 pword address 205.172.100.129
crypto isakmp keepalive 30
ip access-list extended vpn12
permit gre host 204.172.100.161 host 203.172.100.129
exit
ip access-list extended vpn22
permit gre host 204.172.100.161 host 205.172.100.129
exit
crypto ipsec transform-set ts20 esp-aes esp-md5-hmac
exit
crypto map GREVPN local-address loopback 0
crypto map GREVPN 10 ipsec-isakmp
match address vpn12
set peer 203.172.100.129
set transform-set ts20
crypto map GREVPN 20 ipsec-isakmp
match address vpn22
set peer 205.172.100.129
set transform-set ts20
int s1/1
crypto map GREVPN
#A20A
crypto isakmp key 6 pword address 203.172.100.129
crypto isakmp key 6 pword address 205.172.100.129
crypto isakmp keepalive 30
ip access-list extended vpn13
permit gre host 206.172.100.161 host 203.172.100.129
exit
ip access-list extended vpn23
permit gre host 206.172.100.161 host 205.172.100.129
exit
crypto ipsec transform-set ts30 esp-aes esp-md5-hmac
exit
crypto map GREVPN local-address loopback 0
crypto map GREVPN 10 ipsec-isakmp
match address vpn13
set peer 203.172.100.129
set transform-set ts30
crypto map GREVPN 20 ipsec-isakmp
match address vpn23
set peer 205.172.100.129
set transform-set ts30
int s1/1
crypto map GREVPN