VPN

민콕이·2026년 3월 25일

VPN - Virtual Private Network

가상 사설 네트워크 -> Tunneling + Encrytion
Public Network를 Priavte Network처럼 사용하기 위한 기술
본사/지사(or 외부) 각각의 Network를 연결하여 하나의 전용선처럼 연결
Tunneling을 통해 논리적인 연결을 생성 인증/암호화/접근제어 등을 통해 보안성을 높임

구성 방법

VPN 전용 장비

VPN용으로 제작된 전용 H/W를 이용하여 구축

  • 장점: 확장이 용이
  • 단점: 별도의 H/W를 구매해야한다. (초기 구축 비용이 높다)

Router

Router(Access Server)에서 지원하는 VPN 기능을 이용하여 구축

  • 장점: 별도의 장비 구입이 필요하지 않고, Topology의 변화가 없다.
  • 단점: Router 자체 성능에 따라 VPN 성능이 결정. Router 자체의 보안 문제가 VPN에 영향을 준다.

Firewall

Firewall에 지원하는 VPN 기능을 이용하여 구축

  • 장점: 별도의 장비 구입 없이 기존 장비로 구축하기 때문에 관리 및 유지보수가 용이
  • 단점:병목현상(bottleneck) 발생 가능


터널링(Tunneling)

물리적으로 떨어진 특정 장소들을 논리적으로 하나로 연결하는 기술

  • 송신측 : Data Encapsulation
  • 수신측 : Data Decapsulation (De-Encapsulation)

목적

Protocol이 호환되지 않는 Network를 통해 Data를 전달
ex) IPX는 IP망에서 통신이 불가(Routing X)

  • Tunnel로 전달되는 Data를 암호화하여 보안을 높임

기능

Packet 암호화

  • 암호화 키 관리 -> 협상을 통해서 지정
  • Tunneling 생성 관리


용어 정리

Passenger Protocol

  • 원본 데이터를 담고 있는 Protocol

Encapsulation Protocol

  • src 에서 dst로 data를 전달할 때 Encapsulation/Decapsulation을 수행하는 Protocol
  • Layer2 Tunneling Protocol → PPTP, L2TP, L2F …
  • Layer3 Tunneling Protocol → Cisco GRE, 표준 GRE, IPsec(ESP) …

Carrier Protocol

  • Tunneling Protocol로 재 Encapsulation된 Data의 물리적인 src와 dst 정보를 지정하기 위해 추가되는 Protoco
  • Tunneling된 data를 물리적인 Network로 전송하기 위해 사용
  • 모든 장비에서 지원하는 범용적인 Layer3 Protocol을 사용 (IP)


GRE

GRE (Generic Routing Encapsulation)

  • CISCO에서 개발한 Tunneling Protocol -> 산업 표준으로 사용됨
  • 다양한 Passenger Protocol을 Encapsulation하여 전달
  • 단순한 Tunneling 기능만 제공 -> 암호화 x

GRE 실습

hostname
R0 - ISP / R1 - HQ / R2 - BR

기본 라우팅 작업

HQ(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.2
BR(config)#ip route 0.0.0.0 0.0.0.0 2.2.2.2

ISP(config)#ip route 192.168.53.0 255.255.255.0 1.1.1.1
ISP(config)#ip route 172.16.0.0 255.255.0.0 2.2.2.3


터널링 작업

HQ(config)#interface tunnel 0
HQ(config-if)#tunnel mode gre ip
HQ(config-if)#tunnel source g0/0
HQ(config-if)#tunnel destination 2.2.2.3
HQ(config-if)#ip address 10.0.0.1 255.0.0.0

BR(config)#interface tunnel 0
BR(config-if)#tunnel mode gre ip
BR(config-if)#tunnel source g0/0
BR(config-if)#tunnel destination 1.1.1.1
BR(config-if)#ip address 10.0.0.2 255.0.0.0

Tunnel로 Routing
HQ(config)#ip route 172.16.0.0 255.255.0.0 10.0.0.2
BR(config)#ip route 192.168.53.0 255.255.255.0 10.0.0.1

Before

After

TTL 값이 변경된것을 볼 수 있습니다



IPSec (IP Security)

Network Layer에서 동작하는 IP망에서 사용하는 표준 보안 Protocol

  • 3계층 Tunneling을 위한 방식
  • protocol suite : 여러개의 Protocol의 집합 (AH, ESP ..)
    • AH : 무결성 / ESP : 무결성 + 기밀성
  • 암호화 알고리즘을 위한 키 결정, 인증키 협상
    • Protocol
    • 무조건
  • IPSec에서 사용하는 알고리즘
    • 기밀성
      • 대칭키 알고리즘 → DES, 3DES, AES
      • Key 교환 알고리즘 → DH1, DH2, DH5
    • 무결성
      • HMAC-MD5, HMAC-SHA-1
    • 인증
      • PSK, 인증
  • Tunneling Mode
    • Transport Mode : 통신 대상이 암호화에 대한 설정
    • Tunnel Mode : 통신 대상에 암호화 설정 X

PPP, PPTP

PPP

  • VPN 인증, 암호화
  • Point-to-Point Protocol, 두 지점간 데이터 전송을 목적으로 사용하는 Protocol
  • Layer2에서 동작
  • 인증 방식 : PAP, CHAP 같은 인증 Protocol 내장
    • PAP (Password Authentication Protocol) : 단순 사용자명/비밀번호를 평문으로 전송
    • CHAP (Challenge Handshake Authentication Protocol) : 암호화된 Challenge/Response 방식

PPTP

  • PPTP
    • Point-to-Point Tunneling Protocol
    • Layer2에서 동작(MS에서 개발)
    • no-ip protocol들이 ip망에서 이동하도록 지원 → 별도의 IP헤더를 사용해서 Routing (Carrier)


실습 - IPSec Transport Mode

secpol.msc

IP 보안 정책 > IP 보안 정책 만들기
> IP 보안 정책 이름 : IPSec ICMP
> 보안 통신 요청 : 기본 응답 규칙 활성화 체크 해제된 상태로 진행
> IP 보안 정책 마법사 완료

IP 보안 정책 > IPSec ICMP 우클릭 > 속성
> 추가 마법사 사용 체크 해제 > 추가
> IP 필터 목록 > 추가 > 추가 마법사 시용 체크 해제 > 추가 > 새 IP 필터 목록 체크
> 원본/대상 주소 : 모든 주소, 프로토콜 : ICMP > 확인 > 확인
> 필터 동작 > 추가 마법사 사용 체크 해제 > 추가
> 보안 방법 > 보안 협상 > 추가 > 무결성 및 암호화 > 확인 > 적용 > 확인 > 새 필터 동작 체크
> 인증 방법 > 편집 > 이 문자열 사용 : ipsec@<<원하는번호>>
> 확인 > 적용 > 확인
> 적용 > 확인
> IPSec ICMP 우클릭 > 할당

wireshark icmp || esp || isakmp 로 필터 걸고 새로 패킷 잡기
다시 ping 보내서 패킷 확인
  • ISAKMP : 암호화 준비 과정, 협상 Protocol
    • Main Mode : 통신 대상 확인
    • Quick Mode : 암호화 Key 생성
  • ESP : 실제 암호화된 상태로 통신
    • icmp는 encapsulation되어 보이지 않는다.



실습 - IPSec Tunnel Mode

VM 구성

- window server 2022 - 00
    - vmnet0 : 10.x.0.100
    - vmnet1 : 192.168.x.1
- window server 2022 - 01
    - vmnet0 : 10.x.0.200
    - vmnet1 : 192.168.x+50.1
- window 10 - 00
    - vmnet1 : 192.168.x.100
- window 10 - 01
    - vmnet1 : 192.168.x+50.100

2022-00

  1. 방화벽 활성
  2. 인바운드 규칙 - IPv4 규칙 사용
  3. 연결 보안 규칙 → 새 보안 규칙
규칙 종류: 터널
터널 종류 : 사용자 지정 구성
요구사항 : 인바운드및 아웃바운드에 대한 인증 필요
터널 끝점
	끝점 1에 있는 컴퓨터~~ : 추가 > 작업중인 서버의 vmnet1에 설정한 대역
	끝점 1 가장 가까운 끝점 : 편집 > 작업중인 서버의 vmnet0에 설정한 IP
	끝점 2 가장 가까운 끝점 : 편집 > 연결할 서버의 vmnet0에 설정한 IP
	끝점 2에 있는 컴퓨터~~ : 추가 > 연결할 서버의 vmnet1에 설정한 대역
인증 방식
	고급 > 사용자 지정 > 첫번째 인증 방법 추가 > 미리 공유한 키(PSK) : ipsec@<<원하는번호>> > 확인 
이름 : IPSec Tunnel Mode

> 마침
  1. 라우팅 활성화
관리도구 > 서버 관리자 > 역할 및 기능 추가 > 역할 또는 기능 기반 설치 > 서버풀에서 서버 선택 
> 원격 액세스 체크  >  기능 : 그대로  > 
원격 액세스  
> 역할 서비스 라우팅 체크 , DirectAccess 도 같이 체크됨 
> 필요한 경우 다시 시작 체크 후 설치

관리 도구 
> 라우팅 및 원격액세스 >> 라우팅 및 원격 액세스 구성 및 사용 
구성 : 사용자 지정 구성
사용자 지정 구성 : LAN Routing 선택 



PPTP

  • TCP 1723, GRE 47
  • 암호화 : MS-CHAP v1/v2, 매우 취약함
  • 구성 단계
    • TCP 1723 port로 제어 연결을 연다
    • GRE Protocol을 통해 Data Tunneling
    • CHAP 방식으로 암호화 - 로그인 정보가 확인됨.

실습

VM 구성

win2022(Gateway), win10(Host) → G to H (Remote Access VPN)

win2022 - vmnet0(10.x.0.150), vmnet1(192.168.x.1)
win10 - vmnet0(10.x.1.150)

2022) VPN 기능 설정

관리도구 > 서버 관리자 > 역할 및 기능 추가 > 역할 또는 기능 기반 설치 > 서버풀에서 서버 선택 
> 원격 액세스 체크  >  기능 : 그대로  > 
원격 액세스  
> 역할 서비스 라우팅 체크 , DirectAccess 도 같이 체크됨 
> 필요한 경우 다시 시작 체크 후 설치

관리도구 > 서버 관리자 > 도구 > 라우팅 및 액세스 설정 > 2022-00(로컬) 우클릭 > 라우팅 및 원격 액세스 구성 및 사용
> VPN 액세스 및 NAT 선택 > VPN 연결 Ethernet0 선택 
> IP 주소 할당: 지정한 주소 범위에서 > 주소 범위 할당: 192.168.x.1 ~ 192.168.x.50
> 이름 및 주소 변환 서비스 : 나중에 설치
> 다중 원격 액세스 서버 관리 : 아니요,~~ 선택
> DHCP 릴레이 에이전트 속성 ~~ : 확인
> 마침
> 2022-00(로컬) 우클릭 > 속성 > 보안 > 인증 방법 > MS-CHAP v2만 남기고 확인

win+r > lusrmgr.msc > 사용자 > 사용자 추가
> 이름 : vpnuser / 암호 : P@ssw0rd / 암호 변경 체크 해제, 기간 만료 없음 체크
> vpnuser 우클릭 속성 > 전화 접속 로그인 > 액세스 허용

win10) VPN 연결 설정

관리도구 > 서버 관리자 > 역할 및 기능 추가 > 역할 또는 기능 기반 설치 > 서버풀에서 서버 선택 
> 원격 액세스 체크  >  기능 : 그대로  > 
원격 액세스  
> 역할 서비스 라우팅 체크 , DirectAccess 도 같이 체크됨 
> 필요한 경우 다시 시작 체크 후 설치

관리도구 > 서버 관리자 > 도구 > 라우팅 및 액세스 설정 > 2022-00(로컬) 우클릭 > 라우팅 및 원격 액세스 구성 및 사용
> VPN 액세스 및 NAT 선택 > VPN 연결 Ethernet0 선택 
> IP 주소 할당: 지정한 주소 범위에서 > 주소 범위 할당: 192.168.x.1 ~ 192.168.x.50
> 이름 및 주소 변환 서비스 : 나중에 설치
> 다중 원격 액세스 서버 관리 : 아니요,~~ 선택
> DHCP 릴레이 에이전트 속성 ~~ : 확인
> 마침
> 2022-00(로컬) 우클릭 > 속성 > 보안 > 인증 방법 > MS-CHAP v2만 남기고 확인

win+r > lusrmgr.msc > 사용자 > 사용자 추가
> 이름 : vpnuser / 암호 : P@ssw0rd / 암호 변경 체크 해제, 기간 만료 없음 체크
> vpnuser 우클릭 속성 > 전화 접속 로그인 > 액세스 허용

결과



L2TP

  • L2F + PPTP
  • PPTP의 단점인 보안을 향상 시킨 Protocol (+확장성)
  • 로그인 전까지 암호화가 되지 않는다.
  • 구성 단계
    • IPSec으로 인증 (Pre-Shared-Key)
    • 암호화
    • PPP로 사용자 인증

실습 - Windows VPN Gateway

  • PPTP 실습 구성이 되어있는 상태로 진행

2022) VPN 설정 변경

관리도구 > 서버 관리자 > 도구 > 라우팅 및 액세스 설정 
> 2022-00(로컬) 우클릭 > 속성 > 보안 > L2TP/IKEv2 ~~ 체크 > 미리 공유한 키: ipsec@<<원하는번호>>

win10) VPN 연결 정보 변경

설정 > 네트워크 및 인터넷 > VPN > VPN 연결 > 고급 설정
> 편집 > VPN 종류 : L2TP~~ 미리 공유한키 > 미리 공유한 키 : ipsec@<<원하는번호>> 
> 사용자 이름: vpnuser / 암호 : P@ssw0rd > 저장

설정 > 네트워크 및 인터넷 > VPN > VPN 연결 > 연결

실습 - Linux VPN Gateway

VM 구성

ubuntu22.04(Gateway), win10(Host) → G to H (Remote Access VPN)

ubuntu22.04 - vmnet0(10.x.0.150), vmnet1(192.168.x.1)

win10 - vmnet0(10.x.1.150)

ub2204) VPN 기능 구성 (PPTP)

# Routing 관련 패키지 설치
apt update
apt install -y iptables-persistent

# pptp 설치
apt install -y pptpd

# pptpd 설정
vi /etc/pptpd.conf
localip 192.168.x+50.1
remoteip 192.168.x+50.100-200

vi /etc/ppp/chap-secrets
vpnuser * P@ssw0rd *

cp /etc/ppp/pptpd-options /etc/ppp/pptpd-options.bak
vi /etc/ppp/pptpd-options
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
lock
nobsdcomp

# pptpd 실행
systemctl start pptpd

win10) VPN 연결

설정 > 네트워크 및 인터넷 > 네트워크 및 공유 센터
> 새 연결 또는 네트워크 설정
> 회사에 연결 > 내 인터넷 연결 사용
> 인터넷 주소 : ub2204의 IP > 만들기

ncpa.cpl
vpn 연결 우클릭 > 속성 > 보안 
> VPN 종류 : PPTP / 인증 - 다음 프로토콜 허용 : MS-CHAP만 선택 > 확인

설정 > 네트워크 및 인터넷 > VPN > VPN 연결 > 고급 설정
> 편집 > 사용자 이름: vpnuser / 암호 : P@ssw0rd > 저장

설정 > 네트워크 및 인터넷 > VPN > VPN 연결 > 연결

cmd
ipconfig > ppp 어뎁터 확인
ping 8.8.8.8 로 외부 통신 확인
tracert 8.8.8.8로 어느 환경에서 통신하는지 확

ub2204) VPN 기능 구성 (L2TP)

# PPTPD 중지
systemctl stop pptpd

# 패키지 설치
apt install -y strongswan xl2tpd ppp lsof

# IPSec 설정
cp /etc/ipsec.conf /etc/ipsec.conf.bak
vi /etc/ipsec.conf
config setup
    charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"

conn L2TP-PSK
    keyexchange=ikev1
    type=transport
    authby=secret
    ike=aes256-sha1-modp1024
    esp=aes256-sha1
    left=10.x.0.150
    leftid=10.x.0.150
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any
    auto=add

# IPSec PSK 설정
vi /etc/ipsec.secrets
%any %any : PSK "ipsec@출석번호"

# L2TP 설정
cp /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.bak
vi /etx/xl2tpd/xl2tpd.conf
[global]
port = 1701

[lns default]
ip range = 192.168.x+50.10-192.168.x+50.25
local ip = 192.168.x+50.1
require chap = yes
refuse pap = yes
require authentication = yes
name = L2TP-VPN
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

# ppp 설정
vi /etc/ppp/chap-secrets
vpnuser * P@ssw0rd *

vi /etc/ppp/options.xl2tpd
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 1.1.1.1
asyncmap 0
auth
hide-password
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

# service 시작
systemctl restart strongswan-starter
systemctl restart xl2tpd
profile
정리 블로그

0개의 댓글