본문 바로가기
네트워크

IPSec VPN 실습

by CBROJIN 2025. 6. 6.

🧩 본사 ASA ↔ 지사 AllinOne 듀얼  IPSec VPN 설정


구성 목적 및 개요

본사 ASA(이중화: KT/SKT)와 지사 라우터(AllinOne) 간 이중 IPSec VPN 터널을 구축하여,
장애 시에도 안정적으로 본사-지사 간 내부망, DMZ, 관리망이 통신 가능하도록 하기 위한 실습입니다.


🧩 ASA 구성 (본사)

Step 1. 주소 정의 및 오브젝트 생성 (ASA 측)

object network obj-REMOTE
 subnet 192.168.12.0 255.255.255.0
object network obj-VLAN
 subnet 192.168.10.0 255.255.254.0
object network obj-DMZ
 subnet 192.168.50.0 255.255.255.0

# 본사 내부망(VLAN), DMZ망, 지사망(REMOTE)을 오브젝트로 등록하여 NAT 및 VPN 트래픽에 활용

 

Step 2. ACL 설정 (트래픽 식별)

access-list VPN-TRAFFIC extended permit ip 192.168.10.0 255.255.254.0 192.168.12.0 255.255.255.0
access-list VPN-TRAFFIC extended permit ip 192.168.50.0 255.255.255.0 192.168.12.0 255.255.255.0

# 본사 VLAN/DMZ --> 지사망 간 통신을 허용하는 VPN 트래픽 정의 ACL

 

Step 3. NAT 예외 구성

nat (inside,outside-KT) source static obj-VLAN obj-VLAN destination static obj-REMOTE obj-REMOTE no-proxy-arp route-lookup
nat (DMZ,outside-KT) source static obj-DMZ obj-DMZ destination static obj-REMOTE obj-REMOTE no-proxy-arp route-lookup
nat (inside,outside-SKT) source static obj-VLAN obj-VLAN destination static obj-REMOTE obj-REMOTE no-proxy-arp route-lookup
nat (DMZ,outside-SKT) source static obj-DMZ obj-DMZ destination static obj-REMOTE obj-REMOTE no-proxy-arp route-lookup

# VPN 대상인 지사망(192.168.12.0)으로의 트래픽에 대해 NAT을 예외 처리 (IPSec 무결성 보장 필요)

 

Step 4. IKEv2 정책 및 인터페이스 활성화

crypto ikev2 policy 10
 encryption aes
 integrity sha
 group 5
 prf sha
 lifetime seconds 86400

crypto ikev2 enable outside-KT
crypto ikev2 enable outside-SKT

# IKEv2 Phase 1에서 사용할 암호화/무결성/그룹 정의 및 KT, SKT 인터페이스에서 IKEv2 수신 대기 활성화

 

Step 5. IPSec Proposal 설정

crypto ipsec ikev2 ipsec-proposal AES-SHA
 protocol esp encryption aes
 protocol esp integrity sha-1

# IKEv2 Phase 2(IPSec)에서 사용할 ESP 암호화/무결성 알고리즘 설정

 

Step 6. Tunnel Group 생성 (Pre-shared Key 기반)

tunnel-group 55.55.55.1 type ipsec-l2l
tunnel-group 55.55.55.1 ipsec-attributes
 ikev2 remote-authentication pre-shared-key cisco
 ikev2 local-authentication pre-shared-key cisco

tunnel-group 65.65.65.1 type ipsec-l2l
tunnel-group 65.65.65.1 ipsec-attributes
 ikev2 remote-authentication pre-shared-key cisco
 ikev2 local-authentication pre-shared-key cisco

# 각 지사(KT, SKT) 장비와의 터널을 위한 사전 공유키 구성

 

Step 7. Crypto Map 설정 및 인터페이스 바인딩

crypto map OUTSIDE-KT 10 match address VPN-TRAFFIC
crypto map OUTSIDE-KT 10 set peer 55.55.55.1
crypto map OUTSIDE-KT 10 set ikev2 ipsec-proposal AES-SHA
crypto map OUTSIDE-KT interface outside-KT

crypto map OUTSIDE-SKT 10 match address VPN-TRAFFIC
crypto map OUTSIDE-SKT 10 set peer 65.65.65.1
crypto map OUTSIDE-SKT 10 set ikev2 ipsec-proposal AES-SHA
crypto map OUTSIDE-SKT interface outside-SKT

# VPN 트래픽 식별 → Peer 지정 → 암호화 프로파일 지정 → 인터페이스 연결

 

Step 8. SLA + Track 구성 (KT 우선 사용, 장애 시 SKT 우회)

sla monitor 1 
 type echo protocol ipIcmpEcho 50.50.50.10 interface outside-KT
 num-packets 5
 frequency 5
sla monitor schedule 1 life forever start-time now

track 1 rtr 1 reachability

# SLA 모니터로 ISP 회선 감시 → KT 회선 장애 시 SKT 우회

 

Step 9. 정적 경로 우선순위 구성 (KT 우선, SKT 백업)

route outside-KT 192.168.12.0 255.255.255.0 50.50.50.9 1 track 1
route outside-SKT 192.168.12.0 255.255.255.0 60.60.60.9 250

# 지사망으로 향하는 경로를 SLA track과 연동하여 경로 우선순위 지정


🧩 AllinOne 구성 (지사)

Step 1. IKEv2 Proposal 설정

crypto ikev2 proposal AES-SHA
 encryption aes-cbc-128
 integrity sha1
 group 5

# ASA와 동일한 암호화/무결성/그룹으로 IKEv2 정책 일치시킴

 

Step 2. Keyring (Pre-shared key) 등록

crypto ikev2 keyring KT-KEY
 peer KT-ASA
  address 50.50.50.1
  pre-shared-key cisco

crypto ikev2 keyring SKT-KEY
 peer SKT-ASA
  address 60.60.60.1
  pre-shared-key cisco

# ASA에서 설정한 tunnel-group과 동일한 IP와 키 등록 필요

 

Step 3. IKEv2 Profile 생성 및 바인딩

crypto ikev2 profile KT-PROFILE
 match identity remote address 50.50.50.1 255.255.255.255
 identity local address 55.55.55.1
 authentication remote pre-share
 authentication local pre-share
 keyring local KT-KEY

crypto ikev2 profile SKT-PROFILE
 match identity remote address 60.60.60.1 255.255.255.255
 identity local address 65.65.65.1
 authentication remote pre-share
 authentication local pre-share
 keyring local SKT-KEY

# KT/SKT 각각 ASA와 연결할 고유 프로파일 생성 및 Keyring 바인딩

 

Step 4. Transform-set 및 IPSec Profile 생성

crypto ipsec transform-set ESP-AES-SHA esp-aes esp-sha-hmac
 mode tunnel

crypto ipsec profile KT-PROFILE-IPSEC
 set transform-set ESP-AES-SHA
 set ikev2-profile KT-PROFILE

crypto ipsec profile SKT-PROFILE-IPSEC
 set transform-set ESP-AES-SHA
 set ikev2-profile SKT-PROFILE

# 실제 데이터 암호화(IPSec) 설정을 위한 구성. IKEv2 프로파일과 묶어 적용

 

Step 5. VPN 트래픽 정의 ACL

ip access-list extended VPN-TRAFFIC
 permit ip 192.168.12.0 0.0.0.255 192.168.10.0 0.0.1.255
 permit ip 192.168.12.0 0.0.0.255 192.168.50.0 0.0.0.255

# 지사 --> 본사 트래픽을 암호화 대상(VPN)으로 명시

 

Step 6. Crypto Map 설정 및 인터페이스 적용

crypto map KT-MAP 10 ipsec-isakmp
 set peer 50.50.50.1
 set transform-set ESP-AES-SHA
 set ikev2-profile KT-PROFILE
 match address VPN-TRAFFIC

crypto map SKT-MAP 10 ipsec-isakmp
 set peer 60.60.60.1
 set transform-set ESP-AES-SHA
 set ikev2-profile SKT-PROFILE
 match address VPN-TRAFFIC

interface Ethernet0/2
 crypto map SKT-MAP

interface Ethernet0/3
 crypto map KT-MAP

# 각각 KT/SKT 경로에 암호화 트래픽을 적용하고, 인터페이스에 매핑함

 

Step 7. NAT 예외 ACL 및 NAT 설정

ip access-list extended NAT-EXEMPT-KT
 deny ip 192.168.12.0 0.0.0.255 192.168.10.0 0.0.1.255
 deny ip 192.168.12.0 0.0.0.255 192.168.50.0 0.0.0.255
 permit ip 192.168.12.0 0.0.0.255 any

ip access-list extended NAT-EXEMPT-SKT
 deny ip 192.168.12.0 0.0.0.255 192.168.10.0 0.0.1.255
 deny ip 192.168.12.0 0.0.0.255 192.168.50.0 0.0.0.255
 permit ip 192.168.12.0 0.0.0.255 any

ip nat inside source list NAT-EXEMPT-KT interface Ethernet0/3 overload
ip nat inside source list NAT-EXEMPT-SKT interface Ethernet0/2 overload

# VPN 트래픽에 대해서는 NAT 예외 처리하여 IP 보존. 나머지 트래픽은 PAT 적용

 

Step 8. 경로 설정 및 SLA 연동

ip route 0.0.0.0 0.0.0.0 55.55.55.2 track 1
ip route 0.0.0.0 0.0.0.0 65.65.65.2 250

ip sla 1
 icmp-echo 50.50.50.10 source-interface Ethernet0/3
 frequency 5
ip sla schedule 1 life forever start-time now
track 1 ip sla 1 reachability

KT 우선 사용, SLA 실패 시 SKT 회선으로 자동 전환


🧩 구성 결과 요약

  • ASA ↔ AllinOne 이중 터널 정상 성립
show crypto ikev2 sa
show crypto ipsec sa

 

  • 본사 ↔ 지사 간 VLAN, DMZ, 내부망 통신 정상 확인

 

  • KT망 다운 후 SKT 백업망으로 전환 확인
KT(config)#int e0/0
KT(config-if)#shut

 

🧩 VPN 협상 실패 사례 해결: peer 경로 누락

왜 ASA는 peer IP를 '정확히' 알고 있어야 할까?

  • crypto map은 인터페이스 단위로 바인딩 된다고 합니다.
  • 그런데 peer IP가 어느 인터페이스에 있는지 ASA는 라우팅 테이블로 판단 합니다.
  • 라우팅 테이블에 해당 peer IP가 없으면 --> ASA는 interface를 찾지 못함 --> IPSec 시작 불가

 

그래서 아래처럼 명확히 지정해야 합니다:

route outside-KT 55.55.55.0 255.255.255.252 50.50.50.9
route outside-SKT 65.65.65.0 255.255.255.252 60.60.60.9
# 위 명령어로 “55.55.55.1  IP는 KT망(50.50.50.9)을 통해 나가야 해” 라는 것을 ASA에게 알려줘야 합니다.

왜 default route만으로 안 되는가?

ASA는 암호화 대상 트래픽을 먼저 암호화한 후, 해당 암호화된 패킷(ESP 패킷)을 peer public IP로 전송해야 합니다.
이 전송은 평범한 라우팅이기 때문에, 그 IP로 나가는 경로(route)가 ASA에 없으면 패킷을 보낼 방법이 없다고 판단해서 터널을 시작하지조차 않습니다.

 

🧩 결론 요약

  • 인터넷에 연결돼 있어도 ASA는 peer를 자동으로 추적하지 않습니다
  • IPSec 트래픽은 최종적으로 라우팅 테이블을 통해 전송 경로를 판단 합니다
  • peer IP에 대한 명시적 route가 없으면 --> IKE 수립 실패

 

 

참고자료 : IPSec VPN 쉽게 이해하기 #1 , IPSec VPN 쉽게 이해하기 #2 , IPSec VPN 쉽게 이해하기 #3 , IPSec VPN 쉽게 이해하기 #4

'네트워크' 카테고리의 다른 글

Zabbix server <-> ASA SNMP 구축(with gmail 연동)  (0) 2025.06.21
SSL VPN(anyconnect) 이론 #2  (0) 2025.06.08
SSL VPN(Anyconnect) 실습  (0) 2025.06.02
BGP #3(weight,local preference,MED)  (0) 2025.04.12
BGP #2(Next Hop,Split Horizon)  (0) 2025.04.10