bxm's IT Story

Easy_VPN (Final Version-Split tunnel) 본문

Network/VPN (KEDU)

Easy_VPN (Final Version-Split tunnel)

bxmsta9ram 2021. 8. 20. 16:45


공통]

en

conf t

no ip domain lookup

line c 0

  logg sy

  exec-timeout 0

  exit

line vty 0 4

  pass cisco

  exit

hostname ##

end

wr


## IP 넣기 ##

HQ]

conf t

int f0/0

  no shut

  ip add 10.10.10.254 255.255.255.0

  exit

 

int f0/1

  no shut

  ip add 10.1.10.1 255.255.255.0

  end

wr

 

HQ_VPN]

conf t

int f0/0

  no shut

  ip add 10.1.10.2 255.255.255.0

  exit

int f0/1

  no shut

  ip add 1.1.100.1 255.255.255.252

  end

wr

 

ISP]

conf t

int f0/0

  no shut

  ip add 1.1.100.2 255.255.255.252

  ip nat inside

  exit

int f0/1

  no shut

  ip add 2.2.2.254 255.255.255.0

  ip nat inside

  exit

int f1/0

  no shut

  mac-address 06ff.0010.06e8

  ip add dhcp

  ip nat outside

  end

wr


## OSPF ##

HQ]

conf t

router ospf 1

  router-id 1.1.1.1

  network 10.10.10.254 0.0.0.0 area 0

  network 10.1.10.1 0.0.0.0 area 0

  end

 

show ip ospf nei

wr

HQ_VPN]

conf t

router ospf 1

  router-id 2.2.2.2

  network 10.1.10.2 0.0.0.0 area 0

  default-information originate              ## default가 있을 경우에는 always를 안해도 된다.

  exit

 

ip route 0.0.0.0 0.0.0.0 f0/1 1.1.100.2

end

 

show ip ospf nei

wr


ISP]

conf t

access-list 10 permit 10.10.0.0 0.0.255.255

access-list 10 permit 2.2.2.0 0.0.0.255

 

ip nat inside source list 10 int f1/0 overload

 

## 도달성 체크...? ## ISP는 10.1.10.0/24 대역은 모르고, HQ의 아래쪽은 안다. 그래서 아래에서 Ping이 계속 안간것!

ip route 10.10.0.0 255.255.0.0 f0/0 1.1.100.1

ip route 0.0.0.0 0.0.0.0 f1/0 10.0.0.1

end

wr


 

HQ_VPN]

conf t

router ospf 1

  redistribute static subnets

  end

wr

 

HQ]

ping 1.1.100.2 (X)

 

ping 1.1.100.2 source f0/1 (O - 이렇게 Soruce Ping을 날려야한다.)

 

## HQ->HQ_VPN Default // HQ_VPN->ISP로 Default를 줬는데 왜 ISP->HQ로는 Ping이 가고,

    HQ->ISP로는 Ping이 가지 않는 것일까?

 

   A) ISP에서는 Routing Table에 10.10.10.0 대역이 있어서 일단 간 다음에, Default를 타고 HQ->HQ_VPN->ISP로

      다시 돌아올 수 있는데, HQ에는 자체 Routing Table에 ISP의 1.1.100.0 대역이 없기 때문에 아예 가질 못함.




## Remote Access VPN ##

- 원격지에서 출장, 재택 근무 중인 직원이 회사 내부자원에 안전하게 접근하기 위한 용도로 많이 사용되는 VPN 방식.

 

- Remote Access VPN은 사용되는 Protocol에 따라 다음과 같이 구분이 가능하다.

   1) IPSec VPN

   2) SSL 

   3) PPTP

   4) L2PT

 

 

## Easy VPN ##

- Cisco는 IPSec을 사용한 Remote Access VPN을 Easy VPN이라고 표현한다.

 

- Eay VPN은 다음과 같은 제한이 존재한다.

   1) ESP만 지원되고, AH는 지원되지 않는다.

   2) Tunnel만 지원되고, Transport 모드는 지원되지 않는다.

   3) Diffie-Hellman에서 Group 2부터 지원된다. (Group 1 사용불가)

 

HQ_VPN]

conf t

crypto isakmp policy 1

  authen pre-share

  encryp aes

  hash sha

  group 2

  exit

 

ip local pool EVPN_ADD 10.1.10.100 10.1.10.150

 

crypto isakmp client configuration group IT_SUPPORT

  key cisco123

  pool EVPN_ADD

  dns 10.10.10.250                     ## 이거 DNS Server 10.10.10.251인데 잘못쓴거임 ㅋㅋ 이따 수정하니까 걍 놔둠.

  domain nbcycling.com

  exit 

--> IKE Phase 1.5에서 Xauth(사용자 인증)을 통과한 경우 위에서 설정한 내용들이 Client PC에게 할당된다.

                                                                                                                     (Mode Config)

## 외부 PC에서 이 동네를 접근할 때라는 의미

 

crypto ipsec transform-set IPSEC_SA esp-aes esp-sha-hmac

  mode tunnel

  exit

--> Easy VPN의 경우 반드시 ESP와 Tunnel-mode를 사용해야 한다. 또한 crypto profile의 경우 Tunnel만

    보호하기 때문에 사용이 불가하므로, Dynamic crypto_map을 사용해야 한다.

 

crypto dynamic-map DMAP 1

  set transform-set IPSEC_SA

  reverse-route

  exit

## RRI를 재분배 ##

 

 

router ospf 1

  redistribute static subnets

  exit

--> RRI로 등록된 VPN Client의 경로 정보를 내부 OSPF로 재분배하여 VPN Client까지 도달성을 형성한다.

 

 

username user1 password cisco123

aaa new-model

aaa authentication login EVPN_XAUTH local

aaa authorization network EVPN_PRI local

 

crypto map VPN_T client authentication list EVPN_XAUTH

crypto map VPN_T isakmp authorization list EVPN_PRI

crypto map VPN_T client configuration address respond

 

crypto map VPN_T 1 ipsec-isakmp dynamic DMAP

## Dynamic과 일반 Crypto map을 묶는 역할을 수행함.

 

 

## 이제 적용.

int f0/1

  crypto map VPN_T

  end

wr

easy VPN.txt
0.00MB


## 아까 통신이 되나 안되나만 체크하려고 임시로 허용해 둔 도달성 체크 날리기. 원래 있으면 안되는 것임!! ㅎㅎ

ISP]

conf t

no ip route 10.10.0.0 255.255.0.0 f0/0 1.1.100.1

end

wr


CentOS] - VMnet 4번

vi /etc/sysconfig/network-scripts/ifcfg-ens32

systemctl restart network

ping 10.10.10.254

ifconfig


Host PC] 에서 아래의 경로를 통해 Download받고, 외근자 Win701에 옮기기.

[shared] - [App]

Win701] - VMNet 2번

## 접속해보기

접속이 되었다!

 

## Web Site 접속해보기

http://10.10.10.250

 

CentOS]

find / -name nbcycling.com.db        

## Name Server가 죽었나...?

vi /etc/named.conf

rpm -qa | bind

 


## DNS Server 구축 ##

## Win2016으로 만들기.

Win2016] - VMNet 5번



Win701]

## DNS 수정

 

## VPN list 삭제 후 다시 만들기 (DNS Server를 10.10.10.250으로 알음)

앗...! 250으로 만들어놔서 250으로 알았음. 251로 수정

 

HQ_VPN]

conf t

crypto isakmp client configuration group IT_SUPPORT

  no dns 10.10.10.250

  dns 10.10.10.251

  end

wr

 

 

Win701]

연결 완료.
VPN에 연결이 되어있음.
내부단에 접근되고 있다.
www.nbcycling.com Domain으로 접속이 된 것을 확인하였다!!


HQ_VPN]

show crypto map

외근자 노트북이 등록된 것을 확인하였다.

 

HQ]

show ip route

아까 위에 써놓은 것임!
RRI에 의해 재분배 된 것이다.

 

## 외근자는 아래와 같은 접속 환경을 가짐.


## 동작 원리 ##

- Web Server로의 접속 요청

New-IP ESP IP TCP HTTP
S:2.2.2.1    S:10.1.10.100    
D:1.1.100.1   D:10.10.10.251    

## 외근자 PC (2.2.2.1)의 IP가 EVPN_ADD를 통해 만들어준 POOL의 10.1.10.100 ~ 10.1.10.150 사이로 둔갑이 되고,

    VPN을 만들때 입력한 Host(1.1.100.1)가 IT_SUPPORT(10.10.10.251)과 매핑되어 DNS Server인 10.10.10.251으로 바뀜.

   그리고 DNS Server(10.10.10.251)이 Web Server(10.10.10.250)을 가리킨다. 이 구조임.

    

 

- 답변

New-IP ESP IP TCP HTTP
1.1.100.1   10.10.10.251    
2.2.2.1   10.1.10.100    

easy VPN.txt
0.00MB

 




## VPN 연결 후 본사 내부의 사설망과 정상적으로 통신되는 것을 확인할 수 있다. 하지만 Internet 망으로 통신을 

    시도하게 되면 실패하는 것을 확인할 수 있다. ==> 이유는 VPN 연결 후 Client가 전송하는 모든 트래픽이 IPSec으로

    처리되기 때문이다. 

    즉, 본사가 아닌 Internet 망으로 전송되는 트래픽도 ESP로 암호화되어 본사 VPN 장비에게 전달된다.

 

 

## HQ_VPN of configuration

   1) isakmp client configuration

      key cisco123

      pool EVPN_ADD                      ## 10.1.10.100 ~ 150

      domain nbcycling.com

 

   2) Routing-Table : RRI에 의해 생성되어 OSPF로 재분배된다.

     Static-Route

        S:10.1.10.100 ==> 2.2.2.1

 

   3) Crypto-map

     peer ==> 2.2.2.1

     ACL  ==> S: any -> D: 10.1.10.100

     IPSEC_SA ==> esp-aes esp-sha-hmac

 

  

 - Client PC에서 [Route print] 명령어로 확인해 보면, VPN 연결 후 모든 트래픽의 경로(0.0.0.0/0)가 실제 NIC가

   아닌 VPN 가상 NIC으로 전송되는 것을 확인할 수 있다.

 

[cmd] - [route print]

- 위와 같은 문제를 해결하기 위해서는 'Split-tunnel'을 추가적으로 설정해야 한다.

  'Split-tunnel'은 VPN 처리 트래픽을 정의해야 해당 트래픽만 VPN 가상 NIC로 처리하고, 그 외 모든 트팩은 실제

  물리적 NIC으로 처리하는 것이 가능하도록 한다.

접속이 되지 않음!!

 

1.1.100.0/30 대역으로 가게 되고, 암호화가 되기 때문에 인터넷망으로 나가지 못함.


## Split-tunnel ##

## 지정된 네트워크만 ESP Header를 달고 오갈 수 있게 만들어주는 Tunnel이다.

HQ_VPN]

conf t

ip access-list extended EVPN_ST

  permit ip 10.10.10.0 0.0.0.255 any

  permit ip 10.1.10.0 0.0.0.255 any

  exit

 

crypto isakmp client configuration group IT_SUPPORT

  acl EVPN_ST

  end

wr

 

Win701]

## 2차 DNS 주기

 

## VPN Disconnect -> Connect

 

[cmd] - [route print]

빨강(외근자 PC)에서는 바로 나가고, 파랑색을 보면 외근자 PC는 내부로 접근할 때 10.1.10.102(암호화)로 접근이 됨. 그 외에 것들은 암호화되지 않고 나감.

내부에서 나가는 것은 암호화 되고, 외근자 PC에서 나가는 것은 암호화 되지 않고 바로 게이트웨이로 나간다!!

이게 'Split-tunnel'이다!!

 

다시 한번 설명을 해보면,

 위의 사진처럼, 외근자 PC(2.2.2.1)은 (10.1.10.0/24) 대역으로 변경되어 내부로 들어오는데, 내부(10.10.10.0)와

 서로 통신을 할때 암호화를 하여 통신함.

 

NAVER로도 정상적으로 진입이 가능해졌음을 확인할 수 있다.

 


## 외근자 PC에서는 위에서 봤듯이 내부로도 들어가지고 외부와도 연결이 된다. 하지만 내부에서는?

CentOS]

NAVER로의 접속이 불가능함. 왜냐? 암호화 되었기 때문임!!



## 본사 내부 직원들도 인터넷 망과 통신이 가능하도록 HQ_VPN에서 PAT 설정하라 ##

HQ_VPN]

conf t

access-list 50 permit 10.0.0.0 0.255.255.255

ip nat inside source list 50 int f0/1 overload

 

int f0/0

  ip nat inside

  exit

 

int f0/1

  ip nat outside

  end

wr

 

 

ISP]

conf t

int f1/0

  shut

  mac-address 05ef.031e.1010

  

  no shut

  exit

 

no access-list 10

access-list 10 permit 10.10.0.0 0.0.255.255

access-list 10 permit 2.2.2.0 0.0.0.255

access-list 10 permit 1.1.100.0 0.0.0.3

end

wr

## HQ_VPN에서 NAT를 돌리는데, HQ_VPN의 오른쪽에 있는 1.1.100.0도 넣어줘야한다.

내부에서도 외부로 인터넷이 된다!!


하.지.만

- [HQ_VPN] 장비에서 PAT 설정 후 VPN Client에서 본사 VPN 통신이 정상적으로 동작하지 않는다. 

  이유는 VPN과 NAT를 동시에 사용하는 경우 NAT가 VPN 동작에 영향을 미치는지 확인해야 한다.

 

- [HQ_VPN] 장비가 본사에서 전송하는 응답 트래픽의 출발지 IP주소를 [1.1.100.1]로 변경하기에, VPN Client PC는

  응답 트래픽을 수신하지만 자신이 요청한 Server의 IP 주소가 아니기 때문에 해당 Packet을 처리하지 않는다.

 

- 이러한 문제를 해결하기 위해서는 IPSec과 NAT를 동시에 사용하는 장비에서 VPN 응답 트래픽에 대해서는 NAT가

  동작하지 않도록 설정해야 한다. 우선 내부단 DNS 서버의 캐시를 비운다.

 

ISP]

conf t

no access-list 10

access-list 10 permit host 1.1.100.1

access-list 10 permit 2.2.2.0 0.0.0.255

end

wr

 

HQ_VPN]

conf t

no ip nat inside source list 50 int f0/1 overload

no access-list 50

no ip nat inside source list 50 int f0/1 over

 

access-list 100 deny ip any 10.1.10.0 0.0.0.255

access-list 100 permit ip 10.0.0.0 0.255.255.255 any

ip nat inside source list 100 int f0/1 overload

end

wr


## 이제 내부에서도 인터넷 & VPN이 다 되는 상황이 만들어진다!!

Win701가 VPN이 동작하는 곳이 10.1.10.0/24인데 그 곳을 'deny ip any 10.1.10.0 0.0.0.255'를 통해서 NAT에서 배제!!

그래서 인터넷도 되고 VPN도 동작하는 것이다.

인터넷 연결은 그대로 가능.

 

Win701]

VPN도 잘 된다.

 

내부로도 잘 들어가진다.

 

외부로도 인터넷 접속이 잘 된다.
easy VPN.txt
0.01MB

 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 .... 

VPN 끝 ....