🛜 VPN (Virtual Private Network, 가상 사설망)
✅ VPN이란?
- (원래는 안 그럼 마치 내가 다른 사설네트워크에 존재하는 것처럼 여겨질 수 있도록 하는 메커니즘임
- VPN은 공개된 인터넷을 통해 사설 네트워크에 안전하게 연결하는 기술이야.
- 예를 들어, 집에서 회사 네트워크에 접속하려면 VPN을 사용해서 회사 내부 네트워크와 연결할 수 있어.
- 암호화를 사용해서 데이터를 보호하기 때문에 보안이 강화됨.
🏛 VPN 사용 사례
✅ 회사에서 원격 근무할 때, 내부 네트워크에 안전하게 접속할 수 있도록 VPN을 사용함.
✅ 공공 Wi-Fi(카페, 공항) 사용 시, 해커가 데이터를 가로채는 것을 방지하기 위해 사용함.
✅ 특정 국가에서 차단된 웹사이트를 우회하기 위해 사용됨.
📌Legacy Network (레거시 네트워크)
✅ Legacy Network란?
- 오래된 방식으로 구축된 네트워크를 의미해.
- 보안성이나 확장성이 낮고, 최신 기술(VPN, SDN, Overlay Network)과 비교하면 비효율적일 수 있음.
🎯 Legacy Network의 특징
✅ 전통적인 네트워크 구조 (고정된 라우팅, 수동 설정 필요).
✅ 네트워크 장비(스위치, 라우터) 중심의 운영.
✅ 확장성이 떨어지고, 클라우드 환경과의 호환성이 낮음.
🏛 Legacy Network 사용 사례
- 기업이 수십 년 전에 구축한 네트워크를 그대로 사용하는 경우.
- 최신 네트워크 기술(SDN, 클라우드)로 전환하지 않은 시스템.
- 하드웨어 기반 네트워크에서 수동으로 설정해야 하는 네트워크 구조.
📌Overlay Network (오버레이 네트워크)
✅ Overlay Network란?
- 기존의 legacy 네트워크(underlay) 위에 존재하는 가상의 네트워크 overlay
- 기존의 물리적 네트워크 위에 가상 네트워크를 추가적으로 구축하는 방식이야.
- 기존 네트워크(Underlay)와 독립적으로 동작하며, IP 주소 체계가 달라도 연결할 수 있어.
🎯 Overlay Network의 특징
✅ 기존 네트워크(Underlay)와 별도로 작동함.
✅ 여러 지점을 가상 네트워크로 연결할 수 있음.
✅ SDN(소프트웨어 정의 네트워크), VPN, VXLAN 등이 오버레이 네트워크의 예시임.
🏛 Overlay Network 사용 사례
- 클라우드 데이터센터에서 가상 머신(VM)끼리 연결할 때.
- SD-WAN(소프트웨어 기반 WAN)에서 기업 네트워크를 효율적으로 관리할 때.
- VPN이 대표적인 Overlay Network의 한 예시
📌Tunneling (터널링)
Tunneling이란?
- 두 개의 스위치를 하나의 스위치로 소통 가능하도록 구현하는 것
- 터널링은 네트워크 프로토콜을 다른 프로토콜 안에 캡슐화(encapsulation)하는 기술이야.
- 예를 들어, 일반적인 인터넷 트래픽을 암호화된 VPN 터널로 감싸서 보낼 수 있음.
- 보안이 중요한 네트워크 연결에서 사용됨.
🎯 Tunneling의 특징
✅ 데이터를 암호화하여 보안 강화.
✅ 기존 네트워크 프로토콜을 변경하지 않고도 새로운 네트워크 구축 가능.
✅ VPN, GRE, IPsec 등이 대표적인 Tunneling 기술.
🏛 Tunneling 사용 사례
- VPN 연결(내부 사설 네트워크로 안전하게 접속).
- IPv6 네트워크를 IPv4 네트워크에서 사용할 때.
- 클라우드 환경에서 가상 네트워크를 구축할 때.
📌Server-client VPN
레거시 네트워크? (lagacy: 구닥다리, 물리적(서버, 네트워크 장비)) <---> 가상화 or 클라우드
Server-Client VPN을 종합해서 설명하면?
- 기존 네트워크(Legacy Network) 위에 Overlay Network(VPN 전용 네트워크)를 만듦.
- 예를 들어 회사 내부 네트워크(192.168.1.0/24) → VPN 내부 네트워크(10.10.10.0/24)
- 인터넷을 통해 VPN 클라이언트가 VPN 서버에 연결하면, 터널(Tunneling)이 생성됨.
- 데이터는 VPN 터널을 통해 암호화되어 안전하게 전달됨.
- 클라이언트는 VPN을 통해 회사 네트워크에 접속한 것처럼 동작
- VPN 내부 네트워크는 Overlay Network로 동작하여, 기존 네트워크와 별도로 관리됨.
- VPN 사용자는 VPN 내부의 가상 IP(10.10.10.X)를 할당받아 통신함.
- 기존 인터넷(192.168.X.X)과는 별개로 동작
🔥 Server-Client VPN vs. Site-to-Site VPN 차이점 정리
실습)
eth0 IP 211.183.3.250 /24
2 core 2GB 5GB로 만들어보세요!
vyos@vyos# set vpn ipsec ipsec-interfaces int eth0
# ipsec 암호화를 할 인터페이스
- IPsec (Internet Protocol Security) = 암호화 방식
- VPN Underlay를 연결할 eth0에 할당해서 외부와 내부 연결
- eth0: 외부에서 들어오는 VPN 연결을 받을 네트워크 인터페이스
vyos@vyos# set vpn ipsec nat-traversal enable
# VPN을 통해 패킷의 헤더가 변조되더라도 이를 허용
- IPsec VPN을 사용할 때, NAT(Network Address Translation) 환경에서도 통신이 가능하도록 설정
vyos@vyos# set vpn ipsec nat-networks allowed-network 0.0.0.0/0
# VPN을 허용할 대상 = vpn server에 접속하는 대상은 전체
vyos@vyos# set vpn l2tp remote-access client-ip-pool start 10.20.30.200
# vpn을 통해 내부로 진입하는 client가 받게 될 시작 아이피(dhcp의 range랑 비슷함.)
- L2TP (Layer 2 Tunneling Protocol): 터널링 방식
vyos@vyos# set vpn l2tp remote-access client-ip-pool stop 10.20.30.210
# vpn을 통해 내부로 진입하는 client가 받게 될 마지막 아이피(dhcp의 range랑 비슷함)
# 만약에 vpn에 성공했다면 client는 10.20.30.200 ~ 210 사이의 아이피를 부여받을 것
vyos@vyos# set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret
- 사전 공유 키(Pre-Shared Key, PSK)를 이용한 인증 방식 사용할 것이라고 선언하는 것
- 클라이언트가 VPN 서버에 접속할 때 미리 정해진 공유 키를 입력해야 함
vyos@vyos# set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret chan
- 사전 공유 키(PSK) 값 설정
- PSK 방식으로 인증하겠다고 설정했으니. 실제 사용할 키를 지정해야 함
- 공유 키 값은 "chan"
- 클라이언트가 VPN에 연결할 때 "chan"을 입력해야 함
vyos@vyos# set vpn l2tp remote-access authentication mode local
- VPN 접속 시 사용자 인증을 로컬(Local)에서 처리
- 중앙 인증 서버(예: RADIUS)가 아니라 VyOS 자체에서 사용자 ID/PASSWORD를 관리
*** local에 대해 조금 더 쉽게 자세하게 설명하자면?
- 💡 즉, VPN 접속할 때 로그인 정보를 중앙 서버가 아닌 VyOS에서 직접 확인하겠다는 뜻
vyos@vyos# set vpn l2tp remote-access authentication local-users username min password min
# 사용자 ID / PASS = min / min
vyos@vyos# set vpn l2tp remote-access outside-address 211.183.3.250
# vpn client들이 접속할 VyOS의 eth0(외부) 주소 = 내 거 eth0 ip
vyos@vyos# commit
- 민트서버에 IP변경해서 확인해 보기
- eth0이랑 외부로 핑이 잘 가는 것을 확인할 수 있음
- 내부 네트워크 구성을 위해 NIC추가
vyos@vyos# set int eth eth1 add 10.20.30.250/24
vyos@vyos# commit
- varwp가 vm5에 잘 존재하고 vyos와 통신이 되는지 확인
- vpn을 실행시키기 위해 mint서버에 설치해 줘야 됨
apt install -y network-manager-l2tp-gnome
# network-manager = IP설정하는 GUI
***정확하게 network-manager가 하는 게 뭘까?
- 리눅스 기반 시스템에서 네트워크 연결을 쉽게 관리하도록 도와주는 서비스
- 주로 GUI 환경이 있는(mint, GUI-OS) 데스크톱 리눅스 배포판에서 많이 사용되지만, 서버 환경에서도 설정할 수 있음.
vpn 설정
- vpn을 위해 받아야 할 패키지가 있으므로 GW는 211.183.3.2로 하고, DNS는 8.8.8.8로 원상복구 함
- local 인증 = min/ min
*** ifconfig가 뭘까?
- 리눅스 및 유닉스 계열 운영체제에서 네트워크 인터페이스(ip, mac 주소)를 설정하고 관리하는 명령어임
- lo: loopback은 원래 있던 유선 이더넷 네트워크 인터페이스
- 새로운 가상의 인터페이스(ppp0)가 생성되어 아이피를 부여받음
- 왜 새로운 NIC가 생겼을까? = vpn을 통해서 접속한 네트워크에 속해있기 위해 새로운 NIC가 생김
- vpn 내부 네트워크의 스위치에 연결될 NIC가 필요하니까. 가상의 NIC가 하나 생성
- vyos에서 pat 설정함
- varwp에서 패키지를 받기 위해 설정해야 외부 핑이 갈 수 있음
vyos@vyos# set nat source rule 10 outbound-interface eth0
[edit]
vyos@vyos# set nat source rule 10 source address 10.20.30.0/24
[edit]
vyos@vyos# set nat source rule 10 translation address masquerade
[edit]
vyos@vyos# commit
- varwp에서 실제로 패킷을 받는 건지 확인해 보기 위해 vyos에서 varwp로 ssh 접속하자
vyos@vyos# ssh root@10.20.30.80
# vyos에서 varwp로 접속. 우리는 GW를 10.20.30.250으로 했기 때문에 수정해 주자.
[root@was - db ~]# yum install -y tcpdump
# 패킷을 확인할 tcpdump라는 패키지를 설치하자
- mint에서 보낸 icmp패킷이 varwp로 잘 온 걸 확인 가능
- 모니터링할 인터페이스 (icmp)
실습)
각각 VPN 서버 및 클라이언트를 구성해서 서로의 VyOS의 내부네트워크에 VPN 연결을 해보세요.
1) 다른 팀에 해를 끼치지 마세요.
2) 맥주소 같은 걸 변경하거나 할 필요는 없어요.
와이파이를 활용해서 A와 B PC를 공유함
pre-shared-secret : ah
id / pass = aws / cloud
정리)
‘결국 광수와 옥순의 외부 인터페이스가 통신이 됐으면 좋겠다’ 우리의 목표이며 그러려면 각자의 VyOS가 같은 대역에 있으면 된다.
***각자의 VyOS가 같은 대역에 있으면 된다. = VyOS의 외부 인터페이스(eth0)가 같은 네트워크 대역에 있어야 함 = 와이파이에 연결하면 같은 대역에 있게 됨
1) 다른 팀에 해를 끼치지 마세요.
set int eth eth0 add <주소>가 eth0에 주소를 수동으로 넣는 방식이었고,
set int eth eth0 add dhcp 가 자동으로 부여받는 방식임.
자동으로 부여를 받아야 남한테 피해를 안 줄 수 있음.
2) 맥주소 같은 걸 변경하거나 할 필요는 없어요.
왜 그런 걸까?
예전 실습 때의 GNS3 외부 인터페이스도 사실은 ip add dhcp 만으로도 아이피를 부여받아야 정상인데, GNS3의 문제로 인해 못 받아왔고, 어쩔 수 없이 노트북의 맥주소로 변경을 했었음. 이게 특별한 케이스였음. 근데 이번에는 GNS3랑 상관없이 VM을 브릿지 대역에 두고 아이피를 잘 받아오면 되는 거였기 때문에 맥주소를 변경할 필요가 없었던 것.
- 비슷한 실습 사진을 가져온 거라서 ip가 다름
- 외부 pc로 핑이 가는 걸 확인할 수 있음
vyos@vyos:~$ conf
[edit]
vyos@vyos# set vpn ipsec ipsec-interfaces int eth0
[edit]
vyos@vyos# set vpn ipsec nat-traversal enable
[edit]
vyos@vyos# set vpn ipsec nat-networks allowed-network 0.0.0.0/0
[edit]
vyos@vyos# set vpn l2tp remote-access client-ip-pool start 10.20.31.100
[edit]
vyos@vyos# set vpn l2tp remote-access client-ip-pool stop 10.20.31.110
[edit]
vyos@vyos# set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret
[edit]
vyos@vyos# set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret chan
[edit]
vyos@vyos# set vpn l2tp remote-access authentication mode local
[edit]
vyos@vyos# set vpn l2tp remote-access authentication local-users username min password min
[edit]
vyos@vyos# set vpn l2tp remote-access outside-address 192.168.3.3
[edit]
vyos@vyos# commit
[edit]
- mint 서버에서도 dhcp 받아오기 가능
good!
'AWS Cloud School 8기 > 서버가상화_클라우드 이미지' 카테고리의 다른 글
VyOS 실습 (코드만) (0) | 2025.02.11 |
---|---|
VyOS Firewall (0) | 2025.02.11 |
ACL(ACcess-List) (0) | 2025.02.09 |
VyOS/ (VyOS nat 해제) (0) | 2025.02.06 |
web + db + tomcat 실습(코드만) (3) | 2025.02.06 |