Skip to Content
05. Security20. Cisco IPsec Tunnel Mode Configuration

Cisco IPsec Tunnel 모드 구성

22_Cisco IPsec Tunnel Mode Configuration_img_p01_01

이 강의에서는 두 Cisco IOS 라우터가 IPsec Tunnel 모드를 사용하도록 구성하는 방법을 보여드리겠습니다. 이는 원본 IP 패킷이 새 IP 패킷에 캡슐화되고 네트워크 밖으로 전송되기 전에 암호화된다는 의미입니다. 이 시연을 위해 다음 세 라우터를 사용하겠습니다.

R1과 R3는 각각 서브넷이 있는 루프백 인터페이스를 뒤에 가지고 있습니다. 1.1.1.1/32에서 3.3.3.3/32로 가는 트래픽이 암호화되도록 두 라우터 사이에 IPsec 터널을 구성하겠습니다. R2는 R1과 R3가 직접 연결되지 않도록 중간에 있는 라우터입니다.


1. 구성

먼저 ISAKMP의 phase 1 정책을 구성합니다. 여기서 암호화(AES)를 구성하고 인증을 위해 사전 공유 키를 사용합니다. DH 그룹 2를 사용합니다.

R1(config)# crypto isakmp policy 1 R1(config-isakmp)# encryption aes R1(config-isakmp)# hash sha R1(config-isakmp)# authentication pre-share R1(config-isakmp)# group 2

각 피어에 대해 사전 공유 키를 구성해야 합니다. “MYPASSWORD” 같은 간단한 것을 선택하겠습니다.

R1(config)# crypto isakmp key 0 MYPASSWORD address 192.168.23.3

이제 transform-set으로 phase 2를 구성합니다.

R1(config)# crypto ipsec transform-set MYTRANSFORMSET esp-aes esp-sha-hmac

그리고 crypto map으로 모든 것을 통합합니다. 우리 피어는 192.168.23.3이고, transform-set은 MYTRANSFORMSET이라고 부르며, access-list 100과 일치하는 모든 것은 IPsec으로 암호화되어야 합니다.

R1(config)# crypto map CRYPTOMAP 10 ipsec-isakmp R1(config-crypto-map)# set peer 192.168.23.3 R1(config-crypto-map)# set transform-set MYTRANSFORMSET R1(config-crypto-map)# match address 100

access-list는 1.1.1.1과 3.3.3.3 사이의 모든 트래픽과 일치합니다.

R1(config)# access-list 100 permit ip host 1.1.1.1 host 3.3.3.3

라우터가 192.168.23.3에 도달하는 방법을 알고, 192.168.23.3을 통해 3.3.3.3에 도달할 수 있다는 것도 알도록 해야 합니다.

R1(config)# ip route 192.168.23.0 255.255.255.0 192.168.12.2 R1(config)# ip route 3.3.3.3 255.255.255.255 192.168.23.3

마지막으로, 인터페이스에서 crypto map을 활성화합니다.

R1(config)# interface gi0/1 R1(config-if)# crypto map CRYPTOMAP

R1에서 해야 할 일은 그게 전부입니다. 이제 R3에 비슷한 구성을 만듭니다.

R3(config)# crypto isakmp policy 1 R3(config-isakmp)# encryption aes R3(config-isakmp)# hash sha R3(config-isakmp)# authentication pre-share R3(config-isakmp)# group 2 ! R3(config)# crypto isakmp key 0 MYPASSWORD address 192.168.12.1 ! R3(config)# crypto ipsec transform-set MYTRANSFORMSET esp-aes esp-sha-hmac ! R3(config)# crypto map CRYPTOMAP 10 ipsec-isakmp R3(config-crypto-map)# set peer 192.168.12.1 R3(config-crypto-map)# set transform-set MYTRANSFORMSET R3(config-crypto-map)# match address 100 ! R3(config)# access-list 100 permit ip host 3.3.3.3 host 1.1.1.1 ! R3(config)# ip route 192.168.12.0 255.255.255.0 192.168.23.2 R3(config)# ip route 1.1.1.1 255.255.255.255 192.168.12.1 ! R3(config)# interface gi0/1 R3(config-if)# crypto map CRYPTOMAP

R1/R3의 ISAKMP 정책(암호화, 해시, DH group, 인증 방식)과 transform-set은 정확히 대칭이어야 합니다. 또한 “보호 대상” ACL은 서로의 관점에서 소스/목적지를 뒤집어서 작성해야 합니다. 한쪽이라도 다르면 phase 2가 성립되지 않고 #pkts encaps: 0으로만 멈춥니다.

참고: 이 구성에는 터널 인터페이스가 없습니다. 전통적인 crypto map + IPsec Tunnel Mode 방식은 물리 인터페이스에 crypto map을 바로 붙이고, ACL(crypto ACL)로 “어떤 트래픽을 보호할지”를 명시해 그에 매칭되는 패킷을 IPsec 헤더로 새로 캡슐화합니다. 따라서 ip route 3.3.3.3 ... 같은 라우팅의 next hop은 실제 외부 인터페이스 건너편의 IP(여기서는 192.168.23.3)이면 충분합니다. 터널 IP로 라우트를 거는 것이 아닙니다.


2. 검증

ISAKMP(Phase 1) SA부터 확인합니다.

R1# show crypto isakmp sa dst src state conn-id slot status 192.168.23.3 192.168.12.1 QM_IDLE 1 0 ACTIVE

QM_IDLE 상태가 보이면 phase 1이 정상적으로 완료된 것입니다.

다음으로 IPsec(Phase 2) SA와 카운터를 봅니다.

R1# show crypto ipsec sa interface: GigabitEthernet0/1 Crypto map tag: CRYPTOMAP, local addr 192.168.12.1 protected vrf: (none) local ident (addr/mask/prot/port): (1.1.1.1/255.255.255.255/0/0) remote ident (addr/mask/prot/port): (3.3.3.3/255.255.255.255/0/0) current_peer 192.168.23.3 port 500 PERMIT, flags={origin_is_acl,} #pkts encaps: 5, #pkts encrypt: 5, #pkts digest: 5 #pkts decaps: 5, #pkts decrypt: 5, #pkts verify: 5

보호 대상 트래픽을 발생시키면 #pkts encaps/decaps 카운터가 증가합니다. R1에서 R3의 루프백으로 핑을 보내봅니다.

R1# ping 3.3.3.3 source loopback 0 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds: Packet sent with a source address of 1.1.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/8/12 ms

핑이 성공하면서 동시에 위 SA의 카운터가 올라간다면 터널이 정상적으로 트래픽을 암호화하고 있다는 뜻입니다.

흔한 트러블슈팅 포인트

#pkts encaps: 0에서 멈춘다면 다음을 순서대로 확인합니다.

  • 라우팅: crypto map이 붙은 인터페이스로 실제로 패킷이 나가는 경로인가? (crypto map은 “어떤 인터페이스를 통해 나가는 트래픽”을 기준으로 동작합니다.) 보호 대상 소스 주소(여기서는 1.1.1.1 루프백)에서 보낸 트래픽이 해당 인터페이스로 라우팅되어야 합니다.
  • Crypto ACL: 두 피어의 ACL이 정확히 대칭인가? (한쪽이 host 1.1.1.1 host 3.3.3.3이면 반대쪽은 host 3.3.3.3 host 1.1.1.1)
  • ISAKMP/IPsec 파라미터: 암호화 알고리즘, 해시, DH 그룹, PSK, transform-set이 양쪽에서 완전히 동일한가?
  • SA 상태: show crypto isakmp sa 결과가 QM_IDLE인가? MM_NO_STATEMM_KEY_EXCH에 멈춰 있다면 PSK 불일치나 phase 1 파라미터 불일치일 가능성이 높습니다.
  • 그래도 원인이 잡히지 않으면 debug crypto isakmp, debug crypto ipsec으로 협상 로그를 직접 확인합니다.

이 구성은 두 라우터 간 고정된 사이트 대 사이트 구간에서 가장 전형적인 crypto map 기반 IPsec(일명 “플랫” IPsec) 방식입니다. 더 유연한 라우팅·QoS·멀티캐스트가 필요하면 다음 강의들에서 다루는 GRE over IPsec 이나 IPsec VTI로 자연스럽게 확장할 수 있습니다.


출처: networklessons.com - Cisco IPsec Tunnel Mode Configuration

태그: IPSec, Security