📌 Site-to-Site VPN (사이트 간 VPN)
✅ 개념
- 이론적으로, 물리적으로 떨어져 있는 사설 네트워크끼리는 통신이 안됨, 하지만 tunneling을 통해 Overlay network 구성시 같은 지역(내부)에 있는 것처럼 간주할 수 있음.
- 회사 지점(본사-지사 등) 간에 VPN을 연결하여 하나의 네트워크처럼 동작하게 만드는 방식
→ 지점 간의 네트워크를 안전하게 연결하여 내부 시스템을 공유
✅ 특징
- 각 지점(회사 본사와 지사 등)에 VPN 장비(VyOS, Cisco, Fortinet 등)를 설치하여 자동으로 연결
- 직원들이 VPN을 따로 실행할 필요 없음 (네트워크 자체가 연결됨)
- 각 지점의 네트워크 대역이 다름 (예: 본사: 192.168.1.0/24, 지사: 192.168.2.0/24)
- 네트워크 트래픽이 자동으로 VPN 터널을 통해 전달됨
- 보안이 강력하고, 대규모 기업에 적합
✅ 예시
📍 본사와 지사가 네트워크를 공유하는 경우
- 본사(192.168.1.0/24)와 지사(192.168.2.0/24)를 VPN으로 연결
- 지사 직원이 본사의 내부 서버(예: ERP, DB 서버 등)에 자동으로 접근 가능
- 마치 한 회사 내부망처럼 동작
실습)
두 개의 VyOS를 구성할 예정.
각각 system GW와 ssh 접속되게 만들어보세요.
vyos1
2 core 2GB 5GB
eth0 - 211.183.3.10/24
vm이름 - vyos1
vyos2
2 core 2GB 5GB
eth0 - 211.183.3.20/24
vm이름 - vyos2
# 본사(vyos1)에 vmnet5 인터페이스 추가
# 지사(vyos2)에 vmnet6 인터페이스 추가
vyos@vyos1# set int eth eth1 add 10.20.30.250/24
vyos@vyos2# set int eth eth1 add 10.20.31.250/24
# 본사와 지사에서 각각 내부로 규정할 대역의 인터페이스 추가.
10.20.30.0/24 대역에 서버를 한대 두고(wp) IP를 10.20.30.80/24로 구성
10.20.31.0/24 대역에 서버를 한대 두고(dbdbd) IP를 10.20.31.33/24로 구성
# 테스트 용도로 사용할 서버를 각 대역에 한 대씩 두자
VPN 구성하면 가끔 제대로 했는데도 안되는 경우가 있습니다. 그런 경우에는 지웠다가 다시 하시면 됩니다.
<head>
ESP = 무결성, 암호화/ VPN 트래픽을 암호화하고 무결성을 보장하는 프로토콜임
vyos@vyos1# set vpn ipsec esp-group head-esp compression disable
# 무결성 확인 및 암호화 방식은 esp로 할 것이며 해당 설정의 이름은 head-esp
- VPN 패킷에 대한 데이터 압축을 비활성화함.
- 일반적으로 성능 및 보안상 비활성화하는 것이 좋음.
- IPsec(Internet Protocol Security)은 네트워크 계층에서 데이터를 암호화하고 보호하는 프로토콜
vyos@vyos1# set vpn ipsec esp-group head-esp lifetime 1800
# esp 정책을 유지할 기간은 30분이다.(1800)
vyos@vyos1# set vpn ipsec esp-group head-esp mode tunnel
# 터널 모드를 사용하여 두 네트워크 간 IP 패킷을 암호화
- 터널 모드는 VPN을 통해 전체 패킷을 보호.
- 일반적으로 Site-to-Site VPN에서 사용됨.
vyos@vyos1# set vpn ipsec esp-group head-esp pfs enable
# pfs = perfect key exchange 방식
-
- PFS는 매번 다른 키를 생성하여 보안을 강화하는 방식.
- 해킹 시 과거 트래픽 복호화 방지.
vyos@vyos1# set vpn ipsec esp-group head-esp proposal 1 encryption aes256
# 암호화는 aes256을 사용. vpn을 구성할 상대와 맞춰줘야 한다.
AES-256: 강력한 암호화 알고리즘.
vyos@vyos1# set vpn ipsec esp-group head-esp proposal 1 hash sha256
# 해쉬함수 = 무결성 검증 = 원본 데이터 복원이 불가능하지만, 적어도 변조가 되지 않았다는 사실을 알 수 있음.
SHA-256: 데이터 변조 방지 무결성 검증.
IKE = 터널링 구성/ VPN 연결을 설정하는 프로토콜
vyos@vyos1# set vpn ipsec ike-group head-ike ikev2-reauth no
# ike(Internet Key Exchange) 중에 version2가 아니라
vyos@vyos1# set vpn ipsec ike-group head-ike key-exchange ikev1
# version 1 로 하겠음.
vyos@vyos1# set vpn ipsec ike-group head-ike lifetime 1800
# 정책 유지 시간 30분
vyos@vyos1# set vpn ipsec ike-group head-ike proposal 1 encryption aes256
# 암호화 aes256
vyos@vyos1# set vpn ipsec ike-group head-ike proposal 1 hash sha256
# 무결성 검증 sha256
vyos@vyos1# set vpn ipsec ipsec-interfaces int eth0
# vpn을 연결한 외부 인터페이스
- VPN 트래픽을 처리할 네트워크 인터페이스 지정 (eth0)
Site-to-Site VPN 피어(상대방) 설정
vyos@vyos1# set vpn ipsec site-to-site peer 211.183.3.20 authentication mode pre-shared-secret
# 인증 방식은 사전공유키(Pre-Shared Key, PSK)
vyos@vyos1# set vpn ipsec site-to-site peer 211.183.3.20 authentication pre-shared-secret aws8
# 사전공유키는 aws8로 하겠음.
vyos@vyos1# set vpn ipsec site-to-site peer 211.183.3.20 ike-group head-ike
# 아까 정의해놓은 ike-group의 이름은 head-ike
vyos@vyos1# set vpn ipsec site-to-site peer 211.183.3.20 local-address 211.183.3.10
# vpn을 구성할 나의 외부 ip는 211.183.3.10
터널 설정
vyos@vyos1# set vpn ipsec site-to-site peer 211.183.3.20 tunnel 0 allow-nat-networks disable
# nat된 네트워크를 허용할지 특정하지 않겠음. = 모든 주소 변환된 트래픽을 허용하겠음. = nat-traversal 같은 기능.
vyos@vyos1# set vpn ipsec site-to-site peer 211.183.3.20 tunnel 0 esp-group head-esp
# tunnel 0에서 사용할 esp-group은 아까 구성해 놓은 head-esp
vyos@vyos1# set vpn ipsec site-to-site peer 211.183.3.20 tunnel 0 local prefix 10.20.30.0/24
# vpn을 구성할 나의 내부 네트워크는 10.20.30.0/24
vyos@vyos1# set vpn ipsec site-to-site peer 211.183.3.20 tunnel 0 remote prefix 10.20.31.0/24
# vpn을 구성할 상대 내부 네트워크는 10.20.30.0/24
vyos@vyos1# run sh vpn ipsec sa
# vpn 구성 확인.
<branch>
branch-esp
branch-ike
vyos@vyos2# set vpn ipsec esp-group branch-esp compression disable
vyos@vyos2# set vpn ipsec esp-group branch-esp lifetime 1800
vyos@vyos2# set vpn ipsec esp-group branch-esp mode tunnel
vyos@vyos2# set vpn ipsec esp-group branch-esp pfs enable
vyos@vyos2# set vpn ipsec esp-group branch-esp proposal 1 encryption aes256
vyos@vyos2# set vpn ipsec esp-group branch-esp proposal 1 hash sha256
vyos@vyos2# set vpn ipsec ike-group branch-ike lifetime 1800
vyos@vyos2# set vpn ipsec ike-group branch-ike proposal 1 encryption aes256
vyos@vyos2# set vpn ipsec ike-group branch-ike proposal 1 hash sha256
vyos@vyos2# set vpn ipsec ike-group branch-ike ikev2-reauth no
vyos@vyos2# set vpn ipsec ike-group branch-ike key-exchange ikev1
vyos@vyos2# set vpn ipsec site-to-site peer 211.183.3.10 local-address 211.183.3.20
vyos@vyos2# set vpn ipsec site-to-site peer 211.183.3.10 tunnel 0 allow-nat-networks disable
vyos@vyos2# set vpn ipsec site-to-site peer 211.183.3.10 tunnel 0 esp-group branch-esp
vyos@vyos2# set vpn ipsec site-to-site peer 211.183.3.10 tunnel 0 local prefix 10.20.31.0/24
vyos@vyos2# set vpn ipsec site-to-site peer 211.183.3.10 tunnel 0 remote prefix 10.20.30.0/24
vyos@vyos2# set vpn ipsec site-to-site peer 211.183.3.10 authentication mode pre-shared-secret
vyos@vyos2# set vpn ipsec site-to-site peer 211.183.3.10 authentication pre-shared-secret aws8
vyos@vyos2# set vpn ipsec site-to-site peer 211.183.3.10 ike-group branch-ike
vyos@vyos2# set vpn ipsec ipsec-interfaces int eth0
- 양쪽 다 해서 "up"된 걸 확인할 수 있음
터널링이 된 걸 확인할 수 있음
- 통신이 잘 되는 것을 확인할 수 있음.
자율과제)
나는 wp서버가 외부(8.8.8.8)로 통신이 됐으면 좋겠다. 그리하여 PAT를 구성했다. 하지만 PAT후에 외부로는 통신이 되는데 vpn을 구성한 dbdbd와는 통신이 안된다. PAT 해제 후에는 다시 dbdbd와 통신이 잘 된다.
- 왜그럴까?
- 해결하려면 어떻게 해야 할까?
정리)
1. wp 서버(WP) → 외부 인터넷(8.8.8.8) 통신을 허용하려고 PAT(포트 주소 변환) 적용
2. PAT 적용 후:
- WP 서버 → 외부 인터넷(8.8.8.8) ✅ (통신 가능)
- WP 서버 → VPN을 통해 연결된 dbdbd ❌ (통신 불가능)
3. PAT 해제 후:
- WP 서버 → VPN을 통해 연결된 dbdbd ✅ (통신 가능)
# 통신을 하면, 두 개의 케이스가 존재
1. 실제외부와 통신하는 경우
2. 원래는 외부에 있지만, 논리적으로는 내 옆에 있는 것처럼 여겨지는 dbdb와 통신.
=> 실질적으로 둘 다 ‘외부’ 통신이기 때문에 PAT가 발생한다. 근데 논리적으로 dbdb는 나와 같은 내부네트워크에 있는 것처럼 여겨지기 때문에 이 트래픽은 PAT가 되면 안 됨
PAT 정책
1. 목적지가 10.20.31.0/24인 경우에는 PAT을 안 함.
2. 그 이외에는 PAT가 되게 함.
# 두 트래픽이 전부 PAT가 되어버려서, 10.20.31.33과는 통신이 안 되는 상황
10.20.31.0/24와 통신을 할 때는 PAT가 안되게 하면 될 것 같음.
PAT 정책
1. 목적지가 10.20.31.0/24인 경우에는 PAT를 안 하겠음
=> 2번보다 따른 룰로 PAT를 제외시키는 정책을 하나 더 추가.
vyos@vyos1# set nat source rule 9 destination address 10.20.31.0/24
vyos@vyos1# set nat source rule 9 source address 10.20.30.0/24
vyos@vyos1# set nat source rule 9 outbound-interface eth0
vyos@vyos1# set nat source rule 9 exclude
vyos@vyos1# commit
2. 그 이외에는 PAT가 되게 하겠음
=> VyOS의 일반적인 PAT 설정
# 외부 및 remote site와 통신이 잘 됨
오류/ 해결
- 비슷한 파일을 하나 잘못 만들었음 허허
- 그 파일 지워주니까 restart 잘 됨
'AWS Cloud School 8기 > 서버가상화_클라우드 이미지' 카테고리의 다른 글
KVM(CLI) (2) | 2025.03.05 |
---|---|
KVM(Kernel-Based Virtual Machine)/ kvmnet (5) | 2025.02.20 |
Server-Client VPN/ 와이파이 대역 활용한 실습 (0) | 2025.02.13 |
VyOS 실습 (코드만) (1) | 2025.02.11 |
VyOS Firewall (0) | 2025.02.11 |