본문 바로가기
1.A. High Level Computing/On Premise Computing

VPN서버 (재)구축기 - OpenVPN (feat. Dedicated HW)

by Never Settle Down 2023. 3. 11.
반응형

 

At first I was afraid, I was petrified
Kept thinking I could never live without you by my side
But then I spent so many nights thinking how you did me wrong
And I grew strong
And I learned how to get along
And I am a big fan of Evan Fong (lol the rhyme)

 
 
웹 개발 환경 구축하느라 며칠간 헛짓거리를 좀 많이했다.
지루하고 쓸데없는 것 만 같은 이 과정을 견뎌내는데 에너지를 많이 썼다. 

 

학원인지 코딩캠픈지 가면 되지만.. 그런데 돈쓰기도 아깝고

 

지나가는 개코원숭이도 바나나 대신에 키보드만 주면

HTML이랑 Perl정도는 코딩하는게 웹 스크립팅 수준인데 ㅜㅜ

(앞에서 웹 "프로그래밍"이라고 말하면 열폭하는 사람 중 하나이다. JavaScript랑 Java랑 비겨하지 마라. ㅇㅈㄹ.)

 

공과대학 다녔고 다니는 입장에서
괜히 자존심 상하는 것도 있고... 아 윌 서바iv.
 
But then I spent so many nights thinking how you did me wrong

하우 유 딛 미 뤙.... 유 썬 오브 빗치
 
 
그와중에 내 블로그 방문자 수는 제대로 작동을 안 한다 ㅋ

macOS 와 Ubuntu, Opera/Chrome/Firefox/Safari(mac) 7개 다 안 된다.
마치 내가 구축할 웹사이트를 보는 듯 하다.
 
조만간 블로그 호스트 사이트를 바꿔야겠다.
티스토리 신뢰가 안감.
 
 
 

목차

1. 서론

2. VPN 프로토콜의 종류

3. OpenVPN 서버 설치

4. OpenVPN 클라이언트 구성

5. 네트워크 사이드 구성

6. 현업 투입

 
 
 
 
 
 
 
 
 
 

1. 서론

 
여튼,
이전에 구축하여 잘 쓰고있는 VPN서버가 있다.

L2TP로 Ubuntu에 미들웨어를 깔아서 썼다.
 
그 전엔 ipTime의 내장 VPN 서버를 썼으나,
한 번 컴퓨터 작업하면 6-7대가 VPN 붙어서
"Send All Traffic"으로 방대한 통신을 사용하다보니..
 
저가형 공유기 (A2004X)의 허접한 900MHz 듀얼코어 ARM 프로세서로는
내 트래픽 암호화를 감당하질 못했다.
랩탑 1대 붙이면 초당 1MB/s수준 속도.
 
 

그래서 IA32 아키텍쳐 프로세서에 베어메탈로 깔아서 써야겠군! 하고

남는 컴퓨터 더미를 뒤적거렸다.

요런 저렴한 미니PC를 사서 한동안 썼다가 유휴상태로 처박아둔 것이 있다.
 
15W 셀러론 듀얼코어 1.5GHz + 12GB 램 + 64GB SSD
(노트북 램 업글하면서 남는 8기가 램을 증설해줌)
 
 
우분투 서버 미니멀 + L2TP 서버로 깔아서 썼다.
미들웨어는 패키징해서 제공된건 아니고, git에서 스크립트를 찾아서 깔았다.

(스완슨인가 스완인가 뭔가 있긴 했음)


 
허접한 RISC 프로세서가 아닌,
(물론 셀러론 따위지만) 막강한 CISC 프로세서의 2GHz 연산성능을 가져다 쓰니
컴퓨터와 모바일 기기 동시에 6-7대가 접속해서
I/O를 어마어마하게 뿜어내도 다 받아준다.
심지어 CPU점유율은 평균 10% 미만대.
(맥에서 ISO파일 몇개 올린다고 100 ~ 110MB/s, 기가인터넷 & 기가빗 랜포트의 최대속도,를 끌어다 쓰면서
센트오에스 노트북의 잦은 파일접속 IO도 무슨 일 있냐는듯 받아주었다.)
 
 
 
 
최근에 Xeon E3 (짭제온) + ECC램 서버로 L2TP 서버를 옮기면서
별 문제 없이 만족하고 있으나..
 
- git에서 받은 스크립트인점.

- 초기 접속이 매-우 오래 걸리는 점 (특히 macOS는 잠자기때 VPN을 다 끊어버린다)
- 내 KT 5G Egg에서 VPN 패스스루가 안 되는 점.
- Windows는 어김없이 설정이 실패하며 VPN사용을 못 하는 점.

   (윈도 컴도 Windows 10 **H2, ** 버전마다 달랐다. (18H2에서 되면 21H2에서 안됨)
- 리눅스 역시 OS 설치 초기상태 (순정?)에서 L2TP 설정이 번거롭다는점.
 
을 고려하여 다른 VPN 솔루션을 고려하게 되었다.
 
 
https://thewanderer.tistory.com/3

 

KT 5G 에그 USB 테더링 안됨 (macOS, Linksys BKE-500)

결론: 본인의 3개 맥 모두 안된다. macOS 상에서는. 2015 Early 맥북프로 13인치 2017 맥북 에어 13인치 2014 맥 미니 인포시스 LTE 장치, 친구의 삼성 안드로이드폰 + 테터링 둘 다 멀쩡히 잘 되는데. 아예

thewanderer.tistory.com

망할 KT 5G 에그는

프로세서가 퀄컴 스냅드래곤으로 박혀있길래 샀더니만

옵션에서 뭐 만질 수 있는게 없다.

 

심지어 링크시스 호갱센터에 문의하면

지네 회사에 저런 제품이 있는지조차 모름.

 

하...

 

 


 
 
내가 원하는 특성즈:
- macOS 지원 (필수)
- Linux, 레드햇 + 데비안 계열 OS 지원 (필수, 최소한 우분투와 센트오에스 스트림만큼은)
- iOS, iPadOS 지원 (필수, 네이티브 우선, 불가시 서드파티 앱)
- 강력한 암호화를 사용할 것. (필수, 굉장히 추상적이다.)
- Windows 10 지원 (옵셔널, { 버전!=10 } 은 지원 안해도 됨.)
- 스플릿 터널링올 트래픽 모두 지원할 것. (옵셔널이지만 중요한 기능)
 
 
서버는 일단 Proxmox 가상화 서버 상에서
1코어 CPU + 2GB RAM
20GB HDD or SSD로 테스트서버를 만들어 테스해볼 예정이다.
 
쓸만하다 판단하면 내 베어메탈 서버에 깔아서 서비스할 예정.

 

 

4코어 8스레드 제온 E3, 그것도 구형 CPU인데

1코어 2GB램 VM에서도 성능이 아주 만족스럽게 잘 나온다.

그냥 써야겠다.

(인텔 제온 하이퍼바이저에 올렸을 때 얘기)

 

 


솔직히 지금 개인용 서비스 서버도 가상화하여 서비스별로 VM이나 컨테이너를 만들어주고 싶으나
파일서버 성능이 너무 안 나와서 그냥 쓰고 있다.
https://thewanderer.tistory.com/20

 

무료 하이퍼바이저 (Proxmox) 관련 토막 Log

제온 E3 4C8T ~ 4C4T + DDR3 ECC Unbffd + C칩셋 (224랑 뭐였지) 서버 HW를 중고로 저렴하게 가져와 쓰고있다. 요즘에는 하드베이 (특히 3.5인치)를 없애고 워터블럭을 달 수 있게 하는게 트렌드인가보다. 라

thewanderer.tistory.com

 
 
 
내가 아는 프로토콜즈:
- PPTP
- L2TP
- IPSec
- OpenVPN
- IKEv2
 
프로토콜을 하나씩 찬찬히 뜯어보자.
 
아, 시작하기 앞서,
보안은 꼭 뚫기 어려운 것이 좋은것은 아니다.
프랙티컬 엔지니어링 입장에서 "적절한"보안은 
[크랙하는데 드는 Cost] > [크랙해서 탈취할 수 있는 정보의 Price]
이면서 [크랙하는데 드는 Cost]을 적정 선으로 맞추는 것이다
 
해시키로 1TB짜리 키를 쓸 수 있다. 8e+12개. (8 곱하기 10의 12승)
그걸 실시간으로 연산/처리할 수 있는 슈퍼컴퓨터를 공유기로 둔다고 생각해보자.
 
친구집 화장실에서 내 집 VPN을 통해 Vanoss나 Kallmekris 영상을 보는데 그만한 비용을 내는건 전혀 프랙티컬하지 않찮은가?
 
아. 이번 글이랑은 전혀 상관없는 토막글이다.
정보보안 한 학기 전공과목 듣고 아는척좀 해보고 싶었다.

한 3개월 팬이었다. 벌써 질려버림.

 

 

19th (ons.) Jul 2023

미래에서 왔다.

하이퍼바이저 VM에 구축하고나서

아무런 문제 없이 아주 잘 쓰고 있었다.

 

중간에 공유기를 바꾸면서 변경작업이 조금 있었지만 별다른 hiccup 없이 서비스가 잘 되었다.

2023.07.01 - [Electronics log/Electronics Log (as Consumer)] - [토막글] 링크시스 E7350 공유기 (WPA3) Log (Feat. 통신단자함)

 

[토막글] 링크시스 E7350 공유기 (WPA3) Log (Feat. 통신단자함)

노르웨이어를 배우려고 책을 드디어 샀다. 2023.04.05 - [In Progress/Brainstormed but that's it.] - 노르웨이지언을 배워볼까. (탐색중) 노르웨이지언을 배워볼까. (탐색중) 한 10년? 12년? 전에 유툽에서 (당시

thewanderer.tistory.com

 

그러나

 

서버의 망분리 작업을 진행하면서

VLAN to WAN (MAC 주소 기반 VLAN)으로는 부족하다고 느꼈다.

2023.06.15 - [Engineering Log/On Premise Computing] - 개인 서버 망분리 고민 log (Feat. NAT & Sniffing) - 작업중

 

개인 서버 망분리 고민 log (Feat. NAT & Sniffing) - 작업중

나는 사생활 보호에 극도로 민감한 편이다. 게다가 I 성향이 매우 강해서.. 다른 사람들이랑 어울리는걸 별로 안 좋아한다. 한국의 집단주의적인 문화때문에 여행지 가서 '한국인이다' 하며 반기

thewanderer.tistory.com

 

VLAN를 안전상 격리용으로 쓰기엔 한계가 있는듯 하다.

적어도 저렴한 하드웨어로는.

 

 

VPN 서버가 서버망에 위치하는 문제도 있고

VPN VM만 일반망에 VLAN으로 내보내도 좀 뭔가 잘 안되고 그래서

 

에라이씨! 하고 베어메탈 서버를 다시 구하기로 결정.

(기존에 쓰던 MSI 미니PC는 당근으로 매각해버렸다. 전력소모량이 하이퍼바이저 VM보다 많다 ㅜ)

 

당근에서 띵크센터를 4만원 주고 사왔다.

새제품으로 20만원정도 줬다고 한다 (19년)

 

프로세서는 셀러론 N3050, 2코어 2스레드 1.6 GHz

메모리는 so-dimm 1채널 4GB DDR4.

 

하이퍼바이저 서버에서 ECC메모리 (unbuffered)와 Xeon의 프로세싱 파워를 얻었지만

서버망 내에 VPN 서버를 위치하는건 위험해서 결국 포기했다.

 

어차피 수많은 네트워크 장비들은 ECC 메모리의 보호를 받지 못하고

네트워크 패킷에 비트에러 체크섬이 있으며 (L1)

데이터가 오래 머무는 장비가 아니며 (단순히 VPN 서버를 거쳐갈 뿐)

VPN이 생각보다 프로세싱파워를 그-렇게 많이 쓰진 않았다.

 

 

셀러론 장비 수준으로도 충분해 보인다.

AVX와 그 이상의 고급 명령어는 지원하질 않고

SSE도 3.1까진가밖에 지원을 안 한다. (요즘은 4.x인가 그렇다)

 

에이 뭐 AES 명령어 지원하면 됐지 뭐.

CPU의 메인 페이로드는 암복호화인데, 이게 하드웨어로 구현되어있으면

나머지 오버헤드는 충분히 감당하지 싶다.

 

TDP가 6W라서 매우 마음에 든다.

내 하이퍼바이저 서버의 보드 칩셋 C224 이었나, 고놈이랑 TDP가 엇비슷하다.

고만고만한 칩셋들 발열이 딱 이정도 됨.

 

 

 

 

블로워 팬이 하나 있는데 단순히 Exhaust로 공기만 뺴낼 뿐이고

CPU는 직접 바람이 가지 않는 패시브 쿨러가 달려있다.

좀 큼지막한 보드 칩셋 (C224나 B365같은 사우스브릿지 칩셋) 방열판 느낌ㅋㅋ

 

램은 싸구려를 박아놨다.

 

비피(wifi)랑 엠닷투, 총 2개의 PCIe 잉여 슬롯이 있지만

비피 안테나는 없고 nvme ssd를 쓸 필요는 전혀 없어서

둘 다 unoccupied로 내버려둘 예정이다.

딸려온 SSD (WD Green 256)

사용할 SSD (Sandisk 32GB)
 
 

리눅스 깔고 apt update를 수행하는데

한세월 걸렸다.

 

 

진짜 어휴 한세월 걸린다.

지원하는 x86 (AMD64) 명령어가 적은게 분명하다.

 

설치만 간신히 마치고나서

자려고 누웠다.

 

ㅅㅂ 잠이 안와서 술 한잔 땡기고

아바타 보는데

끝나고 나니까 새벽 6시다.

 

핳하...

구축 후 4개월만에 아래 글을 따라가면서 다시 작업을 시작한다.

 

내부망에서 VPN을 붙일 수가 없어서 (공유기가 막아버린다)

5G 에그를 통하여 1GB짜리 OS 설치 이미지를 끌어와봤다.

(맥북 1기만 접속)

 

ack 패킷 등 오버헤드가 좀 있다만

순수한 페이로드로 80Mbps로 뽑아낼 때 속도가 저렇다.

 

나쁘지 않다.

 

아마 802.11ac 866으로 에그랑 붙어서

속도가 저렇게 나왔지 싶다.

 

기가빗 이더넷으로 붙였으면 CPU 풀 로드로 당겼을듯.
 

 

성능이 진짜 애매하다..

전성비때문에 참고 쓴다.

 

 

2. VPN 프로토콜의 종류

Mar 22nd 2024

미래의 나놈이 글을 조금 재정렬하려 한다.

 

이 글을 처음 쓸때만 하더라도 보안에 대한 지식이 부족하였다.

 

 

Avril 6th 2024

2024.04.06 - [1.A. High Level Computing/Network] - VPN의 작동기제, 사용 목적, 안전한 구성 (feat. OpenVPN)

 

VPN의 작동기제, 사용 목적, 안전한 구성 (feat. OpenVPN)

I still don't have a reason and you don't have the time And it really makes me wonder if I ever gave a fa'en about you 요즘 너무 바쁘다. 집 밖에서 생활을 하다 보니; - 집 서버가 뻗어버리거나 - NAS 아카이브가 갑자기 필요

thewanderer.tistory.com

아래 프로토콜의 종류 부분은

내용을 좀 정리해서 다음 글로 갈음...

하기엔 주제만 같고 배타적인 내용이 좀 있다.

 

ㅠㅠ

몰라 ㅅㅂ 알아서 읽겠지.

ㅋㅋ

 

 

...

 

 

 

VPN은 크게 3가지 종류로 나눌 수 있다:

- SSL

- IPSec

- PPTP

 

PPTP는 VPN이 만들어지게 된 이유 (원격으로 망 연결) 외에

VPN의 주요 순기능 (통신구간 암호화) 부분의 취약점으로 인해

Deprecated된 프로토콜이다.

 

 

그럼 SSL이랑 IPSec 기반 VPN 프로토콜

2가지로 나눌 수 있다.

 

OpenVPN은 SSL 기반이다.

 

 

Layer2

   L2F (layer 2 forwarding)

   PPTP (Point to Point Tunneling Protocol)

   L2TP (Layer 2 Tunneling Protocol)

Layer3

   GRE + IPSec

   (General Routing Encapsulation + Internet Protocol Security)

   (IPSec에는

         - IKE (피어 간 인증, 키 및 보안관련 파라메터 네고시에이션)

         - ESP (Data의 기밀성, 무결성, 인증 관련)

         - AH (Data의 무결성, 인증 관련)

   등의 프로토콜이 하위로 들어있다.)

Layer4

   SSL/TLS

   (넷스케이프의 자체 프로토콜이었던 SSL이 TLS(국제표준)으로 승격되었다.

    넷스케이프가 뭔지 모르는 친구들도 많이 있을 것이다. 여튼.

    이에 SSL은 3.0에서 지원종료되었다. 그러나 SSL과 TLS를 동칭으로 쓰고 있는 실정

    TLS는 이름부터가 Transport Layer Security이다. 트렌스포트 레이어임.)

 

 

맥 OS 내장된 VPN 프로토콜은 아래와 같다.

L2TP over IPSec의 경우 내용은 L2TP이지만

암호화를 IPSec으로 하겠다는 의미이다보니

L3 VPN이라고 볼 수 있겠다.

 

나머지 두 놈 다 IPSec 기반이다.

 

반면 OpenVPN의 경우 TCP/UDP 수준인

L4 수준 VPN이다.

 

L4 VPN의 경우 OS의 커널단에서 IP 헤더와 내용을 조작하기 때문에

각 OS별로 전용 클라이언트가 필요하다.

 

장점으로는 TCP/UDP단에서 데이터를 조작하여 전송하기 때문에

하위 레이어에서는 (L1~L3) 이게 VPN 트래픽인지

일반 트래픽인지 알 수 가 없다.

 

대표적으로 RDP가 있는데,

회사에서 집 망으로 VPN을 붙인 상황에서도

회사에 있는 다른 PC로 RDP를 붙일 수가 있다.

 

원래 안 되어야하는거 아닌가?

IP + port로 접속하기 때문에

VPN을 붙여버리면 (나는 스플릿 터널링이 아니라 올트래픽으로 쓰고 있다)

접속이 끊어져야 한다.

 

근데 VPN 통한 집 서비스 + 회사 컴퓨터 접속

둘 다 사용이 가능하다.

 

 

솔직히 지금의 나도 전문가급은 아닌 것 같다.

 

나중에 와이어샤크로 아예 트래픽을 다 뜯어보든지

해야겠다.

 

 

...돌아와서...

 

 

- PPTP, Point to Point Tunneling Protocol

https://www.expressvpn.com/what-is-vpn/protocols/pptp

 

What Is PPTP (Point-To-Point Tunneling Protocol)? | ExpressVPN

Learn more about Point-to-Point Tunneling Protocol (PPTP) and about its pros and cons as one of the oldest VPN protocols still in use.

www.expressvpn.com

 
TCP 1723 포트를 사용하는 오오래된 프로토콜이란다. Win95시절.
물론 안 쓸거지만, 뭔지 한 번 찾아보자.
 
개발: 한 MS 이니시에이티브. MS(망하진않았는데이상함) + 3com(망함) + 노키아(망해가고있음)
Authentication Protocol: usually MS-CHAP-v1/v2
요 인증프로토콜이 출시하자마자 뚫렸단다. 취약하다네.
 
위키에 따르면 (아 위키 쓰고싶지 않은데 젤 편한 소스ㅜ)
- MS CHAP v1은 스니핑한 NT 패스워드 해시를 추출하는 툴이 있단다.
  RC4 세션키를 가지고 암호화하는데, 양방향 스트림을 XOR하는 방법으로 암호문 분석이 된다고 한다. RC4 가 뭔지 모르겠다만, 단순 XOR로 뚫리는건 좀 심각하다. -> 강의자료를 찾아보니 RC4는 스트림기반 대칭키 암호화 알고리즘이다.
- MS CHAP v2는 딕셔너리 어택에 취약하다고 한다. 
   DES 키에 브루트 포스 공격하는 것과 동일한 방법으로 크랙이 가능하다.
   대칭키 알고리즘 - 블록 기반 (스트림 X)인 DES는 취약하다고 판단되어 더이상 사용되지 않는 알고리즘이다.
   아마 내기억에 프로세서 (CPU와 GPU)의 성능이 엄청나게 올라가면서 브루트포스로 단시간에 풀어버릴 수 있는 것으로 알고있음.
 
 
관련된 인크립션인 MPPE, Microsoft Point-to-Point Encryption 설명을 뜯어보면
40-56비트 키 (스탠다드) - 128비트 키 (스트롱)을 쓴다고 되어있다.
2022년 작년기준 안전한 알고리즘의 "최소" 키 길이가 256비트인걸 보면 그럴만 하다 싶다.

현재 머물고 있는 공간의 주인인 내 친구의 동의를 받고
네트워크 장비 관리페이지의 접속권한을 부여받았다.
(i.e. id와 pw를 넘겨받음)
 
아이피타임 VPN 설정화면이다.
MPPE, 인크립션이 옵션이다. ㅋㅋ;
 
 
 
Pros & Cons
- 빠르다. 암호화 컴퓨팅 사용량 낮음.
- 구형 장비 호환.
- 구축하는게 어렵진 않았다.
but
- 보안이 취약하다. 없다고 봐도 된다.
 
 
Next!


- L2TP, Layer 2 Tunneling Protocol

 
이른바 OSI 7계층에서 데이터링크계층 (맞나?) 암호화 프로토콜
https://www.expressvpn.com/what-is-vpn/protocols/l2tp

 

Layer 2 Tunneling Protocol L2TP/IPsec | ExpressVPN

Get superior security using L2TP paired with IPsec. Together they provide a more secure option to PPTP, but come with the same easy setup.

www.expressvpn.com

역시 VPN 팔아먹는 회사에서 설명을 이상하게 잘 해줬다.
1999년 L2FP(포워드)와 PPTP의 업그레이드판으로 제안되었다고 한다.
 
(회사서 지겹게 만졌던) Cisco의 L2F와 MS의 PPTP의 장점을 따서 기술적 결합.
 
 
 
"LT2P 역시 강력한 암호화나 인증을 제공하지 않기 때문에 IPSec과 함께(컨졍션) 사용되..."
아 구렇구나.
 
"IPSec과 함께 써도 L2TP는 암호화 보호보다는 익명화를 위해 사용되는 ㅍ..."
"L2TP는 가끔 방화벽때문에 막힐 때가 있다. Port 500번을 쓰는데, 일부 방화벽은 이걸 막아버림."
 
막힌사람, 저, 저요?

KT 에그 (벨킨)이 WPA3PSK도 지원하고 다 좋은데
방화벽설정이 (VPN 패스스루 같은거) 없어서 L2TP가 턱하니 막힌다.
포트포워딩은 됨. 에그에서 굳이 포트포워딩을.. 여튼.
 
 
위키에 따르면,
L2TP는 컨피덴시알리티 (기밀이 깨지지 않았는지)와 인크립션 (암호화)에 대해 신경쓰지 않는다.
IPSec이 L3 암호화 프로토콜이라 같이 쓴다고 하는구만.
 
전체 패킷(헤더와 데이터)을 UDP 데이터그램에 담아서 보낸다. 이로 TCP 멜트다운 증상을 피할 수 있다고 한다.
 
https://www.ibm.com/docs/en/i/7.4?topic=concepts-layer-2-tunnel-protocol 

 

Layer 2 Tunnel Protocol

Layer 2 Tunneling Protocol (L2TP) connections, which are also called virtual lines, provide cost-effective access for remote users by allowing a corporate network systems to manage the IP addresses assigned to its remote users. Further, L2TP connections pr

www.ibm.com

다른 설명도 주절주절있는데, 읽어봤지만 잘 모르겠다. 그런가보다 싶다.
LNS와 LAC 어쩌고 저쩌고 하는데, 암호화 알고리즘이나 다른 메커니즘 관한 얘기는 별로 없다.
 
 
프리 셰어드 키 (공용 비번?)나 rsa 인증서를 쓰는걸로 알고있는데,
나는 PSK만 쓰고 있다.
아마 대칭키 블록 알고리즘을 쓰지 않을까 싶어 나는 불안했다.
그래서 나는 VPN용으로 비밀번호를 따로 팠다.
 
 
일단 지금 쓰고 있는데, 조만간 L2TP서버 밀어버려야겠다.
 
 
Pros & Cons
- PPTP보단 쫌 안전하다.
- 구축하는게 어렵진 않았다.
but
- 안전하지 않다. 특히 단독으로는.
- apt로 설치할 수 있는 서버 미들웨어를 찾지 못했다. git 다운로드 스크립트만 알고 있음.
 


- IPSec

https://www.ibm.com/docs/en/i/7.4?topic=concepts-ip-security-protocols 

 

IP Security protocols

IP Security (IPSec) provides a stable, long lasting base for providing network layer security. IPSec supports all of the cryptographic algorithms in use today, and can also accommodate newer, more powerful algorithms as they become available. IPSec protoco

www.ibm.com

요건 SW 개발 보안 과목에서 접했다. 근데 VPN의 프로토콜로 배운건 아니다. VPN 프로토콜은 배운적이 없다.
아닌가? IPSec은 회사에서 접했나? 회사 생각하니 짜증이 난다. 이로 인해 갑자기 A0 받은게 짜증이 난다. 중간기말리포트 등 합치면 96/100점인데.
이의제기는 하지 않았다. 못했다. 깜빡했다 ㅜ
(ADHD 모멘트)
 
 
https://aws.amazon.com/what-is/ipsec/

 

IPSec란 무엇입니까? - Amazon Web Services 기반 IPSec

IPSec 암호화는 데이터를 스크램블하여 권한이 없는 당사자로부터 콘텐츠를 보호하는 소프트웨어 기능입니다. 데이터는 암호화 키로 암호화되며, 정보의 스크램블을 해제하려면 복호화 키가 필

aws.amazon.com

 
IPSec은 (네트워크 상 시큐어 커넥션을 지원하기위한) 프로토콜 / 커뮤니케이션 룰의 집합입니다.
 
- 퍼블릭 인터넷을 통해 데이터를 주고받을 때 라우터의 시큐리티를 제공
- 애플리케이숀 데이터 암호화
- 수신한 데이터의 찐 발송지 확인, 퀵클리
- IPsec 터널이라 부르는, 암호화된 통로를 제공항하여 네트워크 데이터를 보호함. 엔드포인트 간.
 
리플레이 어택, 또는 맨 인 어택,으로부터 IPSec을 통해 보호할 수 있다. 리플레이/맨인어택은 진행중인 트랜스미숀을 가로채 다른 곳으로 통신방향을 바꿔버리는 형태의 공격이다.
 
 
IPSec Encryption?
아이피섹 암호화는 데이터를 보호 ... 인크립션 키를 사용해서 ... 그 키로는 AES, Blowfish, Triple DES, ChaCha, DES-CBC를 서포트함...
 
SW 개발보안 강의자료 중,
안전한 암호화 알고리즘 (1) 대칭키
- 112bit 보안강도 이상의 AES, SEED 등 권장
- DES, 112 bit 미만 blowfish는 사용제한

IPSec도 대칭키를 쓰는구나.
 
IPSec uses asymmetric and symmetric encryption to provide speed and security during data transfer.
... IPSec은 비대칭과 대칭 암호화를 사용한다... 죄송합니다 아마존님.
 
"
비대칭을 쓰면 안전한 연결을,
대칭키를 쓰면 높은 데이터 전송속도를 
누릴 수 있읍니다.
"
 
아 예 예.
 
IPSec도 하나의 옵션이 될 수 있겠다.
문제는, 나는 비대칭키를 쓰고 싶은데 그걸 설정할 수 있는지,
가능하면 RSA를 쓸 수 있는지 (*닉스 에서 RSA 만드는게 익숙함) 궁금하다.
 
 
지금 보니 상기 AWS 링크를 타고 들어가면 한글로 뜬다.
번역할 필요 없구나.
 
영문 스크립트 그대로 박아도 되겠다.
 

How does IPSec work? 

Computers exchange data with the IPSec protocol through the following steps. 

  1. The sender computer determines if the data transmission requires IPSec protection by verifying against its security policy. If it does, the computer initiates secure IPSec transmission with the recipient computer. 
  2. Both computers negotiate the requirements to establish a secure connection. This includes mutually agreeing on the encryption, authentication, and other security association (SA) parameters. 
  3. The computer sends and receives encrypted data, validating that it came from trusted sources. It performs checks to ensure the underlying content is reliable. 
  4. Once the transmission is complete or the session has timed out, the computer ends the IPSec connection. 

 
1. IPSec필요? 그러면 수신측에 "IPSec" 하실?
2. 두 컴퓨터는 시큐어 커넥션 이스타블리시먼트를 위해 네고를 함. 5천원만 까주시면 안될까요. 이 과정엔 암호화/인증/다른 SA 파라메터 설정.
3. 암호화덴 데이터를 주고 받아본다. 스푸핑이 있었는지 벨리데이트 함.
4. 트랜스미션 끝나거나 세션 타임아웃이 나면 아이피섹 커넥션 끝내버림.
 

IPSec 프로토콜 일부는 아래와 같다:

- 아-
- 이스페셜리 (e.s.p.)
- 이케아 빼기 아
 
IKEv2가 저 인터넷 키 익스체인지 관련인가보다.
 
 
왓 이즈 IPSec VPN?

SSL은 브라우저. 알겠고.
IPSec Protocol: 네트워크 레이어 & 트랜스포트 레이어
SSL: 애플리케이션 레이어.
 
..? 이걸 왜 써놨지. 헷갈리지 말라고??
여튼.
 
 
https://computingforgeeks.com/build-ipsec-vpn-server-with-ipsec-l2tp-and-cisco-ipsec-linux/
IPSec + L2TP 프로토콜 사용. 포트넘버 500번을 써야하기 때문에 나는 패스
(KT 에그에서 사용 불가)
 
다들 L2TP + IPSec으로 구성하는 방법을 올려놨다.
 
패스.

 


OpenVPN

https://namu.wiki/w/OpenVPN

 

OpenVPN - 나무위키

이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권

namu.wiki

https://openvpn.net/

 

Business VPN | Next-Gen VPN | OpenVPN

OpenVPN provides flexible business VPN solutions for an enterprise to secure all data communications and extend private network services while maintaining security.

openvpn.net

내가 이 VPN을 쓰려고
잡다한 이 글을 썼다.
 
막상 어떤 암호화 방식을 쓰는지,
어떤 인증 방식을 쓰는지 자료는 공홈에 없다.
 

이렇다는데... 어디 나와있는거지.
 
나무위키도 위키 기본인 유저 참여 형태라 100% 다 신뢰할 수는 없다.
 
일단 가상머신에 OpenVPN 서버를 생성해서 써볼 예정이다.
 
 
https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-an-openvpn-server-on-ubuntu-20-04

 

How To Set Up and Configure an OpenVPN Server on Ubuntu 20.04  | DigitalOcean

www.digitalocean.com

와우 좋은 정보 감사합니다.
 
처음 클라이언트 - 서버 연결시
- 비대칭 키 사용 암호화 (세션키 교환을 위한 작업)
-  TLS 핸드셰이크 수행 (비대칭 키 교환 및 세션키 (대칭키) 옵션 협상, 세션키 교환)
 
연결 후 클라-서버 데이터 통신시
- 대칭키 사용 암호화 (Shared Key, 악수하면서 교환한 세션키를 가지고 대칭키 암호화를 한다.)
굿굿.
 


- IKEv2

아이폰에 옵션이 있어서 찾아보게 되었다.
 
https://www.expressvpn.com/what-is-vpn/protocols/ikev2

 

IKEv2 Protocol for VPN: What is IKEv2? | ExpressVPN

IKEv2 is fast and secure, and works on devices such as iOS, Mac, and Windows. Get ExpressVPN with IKEv2 today.

www.expressvpn.com

- UDP만 쓰기 때문에 방화벽에서 막힐 수있다.
- 속도는 좋다. 단 OpenVPN보다 떨어진다.
- 보안은 L2TP+IPSec보다 좋다.
 

다양한 암호화 방식을 지원하고,
속도도 빠르고,
안정적인 커넥션을 지원하지만
 
UDP 500번 포트를 쓴다.
이거 100% 내 에그에서 막힌다. 고 본다.
 
애플 계열에서만 네이티브로 지원해도 OpenVPN보단 나을걸?
 
OpenVPN가즈아.
 

 

 

 

 

19th Jul 2023

Wireguard라는 프로토콜? 서비스? 도 있는 듯 하다.

OpenVPN처럼 비교적 신식??인가보다.

 

Wireguard보다 OpenVPN이 보안성이 높다고 한다.

(와이어가드는 쓰루풋이 좋다고 함)

나는 OpenVPN의 쓰루풋도 전혀 부족함이 없다고 느끼기 때문에 거른다.
 
-> 이 부분은 VPN의 모든것이었다

다른 글에서 조금 더 다루었다.
 
 

 

 

3. OpenVPN 서버 설치

 

OpenVPN Serverside Setup

우분투 공식 홈페이지에서 하우투를 올려두었다.
https://ubuntu.com/server/docs/service-openvpn

 

Service - OpenVPN | Ubuntu

Ubuntu is an open source software operating system that runs from the esktop, to the cloud, to all your internet connected things

ubuntu.com

솔직히 뭔소리 하는지 모르겠다.

ㅅㅂ

 

아래 아티클을 전적으로 참고하여 구축하였다:
https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-an-openvpn-server-on-ubuntu-20-04

 

How To Set Up and Configure an OpenVPN Server on Ubuntu 20.04  | DigitalOcean

www.digitalocean.com

이 인스트럭션이 훨 깔끔한듯.

1월에 시작해서
3월 중순에야 다시 돌아온 이 글은...
기억이 안 난다.
도큐멘테이숀도 제대로 안 되어있고...
 
기존 VM 전부 파기하고 새로 시작하기로 했다.
 

설치하는동안
갈갈갈갈 소리가 나서 보니
케이스 팬이 맛이 가버렸다.
 
기존 팬은 제거하고
CPU전원부와 램에 바람을 쐬어줄
120mm 팬을 허공에 매달아 주었다.
 

리눅스를 깔고 있는데
유툽이 스타크래프트 1 테마송을 틀어준다.
 
분위기는 갑자기 서버 하나로 황량한 사막행성 위에 우주군기지를 세우고
열등한 저그를 처치해버릴 것 같은 느낌을 가져다 준다.
 
이 기똥차게 소름끼치는 녀석.
svc good to go sir.

sudo
sudo apt update
sudo apt upgrade
sudo apt autoremove
sudo apt install net-tools
sudo ufw enable
sudo ufw allow ssh
sudo reboot
 
스냅샷 찍어주고..
전원 종료 명령어가 뭐더라?
 
sudo shutdown now
 

다시 부팅...
 

아하.
프리리퀴짓츠를 먼저 끝내고 와야겠다.
 

OpenSSH 얼라우 하구..
(22번 포트 SSH랑 뭐가 다른거지?)
 

CA서버를 별도로 두고,
임포트 / 사인 / 리보크 하는 서비스만 운용해라.
다른 서비스는 돌리지 마라.
CA 관련 워킹을 하지 않을때는 네트워크와 연결을 끊어두거나 완전히 종료시키는게 이상적이다.
 
흠.
 

https://m.blog.naver.com/techtrip/221804965536

 

디지털 인증서(Digital Certificate)의 원리와 생성 과정

보안(security)이 필요한 인터넷상의 네트워크 통신에서 특히 상대방에게 데이터를 인터넷을 통해 전달할 ...

blog.naver.com

CA서버가 정확히 뭐하는 놈인지,
디지털 인증서는 뭐하는데 쓰는것인지
궁금했다.

 

 

사족을 좀 달자면

- 보통 기업의 CA서버는 Root와 밑에 다른 CA (용어 까먹음) 등 복잡한 PKI 시스템으로 구축되어있다.

- 보통 기업의 CA의 경우 인증서 인증, 발급, 갱신, 폐기 등에 대해 복잡한 체계 안에서 돌아간다

- 보통 기업의 인증서의 경우 그래서 인증서의 상태를 CA에게 물어본다.

- 이넘의 VPN은 그딴거 없다. TLS 인증서의 키 부분에만 관심있다.

- 그래서 CA서버는 인증서 발급만 해주고, 전원을 꺼둬도 (+ VPN서버랑 별도의 연동을 안 해도) VPN이 잘 붙는다.

 

 

 


일단 CA서버부터 구축을 해보자.
 
(일반 유저도 접근할 수 있어야 하므로 sudo로 하면 안된다. 고 한다.)
mkdir ~/easy-rsa
 
(링크를 걸어준다)
ln -s /usr/share/easy-rsa/* ~/easy-rsa/
 
(다른 사람은 접근할 수 없게 chmod를 걸어준다)
chmod 700 /home/(username)/easy-rsa
 
(rsa init.)
cd ~/easy-rsa
./easyrsa init-pki
 
nano vars

물론 오거나이제이숀이랑 메일은 그냥 쓴거고
주소는 딱히 넣을곳이 없어서 힐스보로로 했다.
 
ALGO가 뭐지
알고리즘인데 ec가 뭔지는 더 찾아봐야겠다.
 
 
저장하고, CA서버의 퍼블릭/프라이빗키를 만든다.
./easyrsa build-ca

for 편의성 sake, 빈칸으로 이름을 만든다.
ㅇㅋ
 

그렇구만.
 
 
더 진행하기전에
- CA서버 외부망 차단
- 하이퍼바이저 외부망 차단
- 파일서버 외부망 차단
세 개를 진행해야겠다.
 
...
진행했다.
 
취약점이 발견될경우 지원을 받기 전까진
위험에 노출될 수 있어
어느 회사의 공유기를 쓰는지는 기재하지 않는다.
 
갓수스 공유기 사고싶었는데
별로... 팅커보드 써보면서 마음이 사라졌다.
차라리 OpenWRT + 제온 서버로 자작하고 말지.
 

CA랑 OpenVPN 서버도 고정IP 할당 해주었다.
안그러면 또 IP 흔들릴라.
 
전에는 192.168.0.0 ~ 192.168.1.255로
서브넷 마스크를 255.255.254.0으로 주었다.
192.168.1.* 대역은 일반 디바이스 대역
192.168.1.* 대역은 서버/네트워크장치 대역
 
지금은 그렇게 할 수가 없는 구조인데...
서울 사육장이랑 촌집이랑 VPN으로 엮어놓고
이렇게 구축을 해버리니 바꿀 수가 없다. ㅜㅜ
손이 너무 많이 감.
 
254개 내부 IP를 반으로 쪼갰다.
앞부분, ~128까진 일반 동적 IP할당용
뒷부분은 고정IP 할당용.
 
... 그러고보니 NAT해주는 네트워크 장치랑 DHCP 서버 장치를 분리해서 쓸 수 있나?
i mean, 편하게 분리해서 쓸 수 있나??
망할 ipTime 허브 다 당근으로 갖다버리면서
한 번 싹 개편할거긴 한데.
 
cisco 제품으로 돌려쳐버리고 싶다...
 
 
 
잡설 그만하고 본론으로 돌아가자.

 

 

 

 

 

 

openvpn 서버로 돌아왔다.
 
sudo apt update
sudo apt install openvpn easy-rsa

앱트 인스톨이 저렇게 여러개를 붙여서 쓸 수 있는거였어??
ㅋㅋㅋㅋ;
 
mkdir ~/easy-rsa
ln -s /usr/share/easy-rsa/* ~/easy-rsa/
sudo chown sammy ~/easy-rsa
chmod 700 ~/easy-rsa

VPN 서버사이드 작업 내역.

nano vars

 

set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
 
아까보다 훨씬 짧다.
 

아 예예.
 

ECC (자꾸 내 서버의 램을 얘기하는 것같다 ㅋㅋ)를 쓰면 디피 헬맨보다 빠르다고 한다.
DH는 옵솔릿하지도 않나??
아닌가?
이번에 듣는 암호학에서 D-H는 대칭키이고, 이제 안쓴다고 들었던거같은데...
이따 강의 다시 틀어봐야겠다.

핸드셰이크 할 때는 비대칭 키를 쓰고,
데이터 전송할때는 대칭키를 쓴다고 한다.
타원 커브 디피 헬멘 알고리즘을 쓴다. (핸드셰이킹때)

 

아 그럼 세션키구나.

 

요즘 씨퓨엔 애리스메틱이 하드웨어로 내장되어있어 빠르다.
 
옥희.
 

 

 

./easyrsa init-pki

 

땡큐. 쓰파씨부엉.
 

아 예예.
여기가 설명과 주석을 꼼꼼하게 달아줘서
넘 좋다.
 

 

 

gen-req 옵션으로 실행.

 

여기서 이름을 "server"라고 하지 않으면

(아래 커맨드에서 괄호로 감싼 부분)

하단에서 이름을 바꿔줘야한다.

참고.

 

 

./easyrsa gen-req (server) nopass

 

sudo cp /home/sammy/easy-rsa/pki/private/(server).key /etc/openvpn/server/
생성된 푸라이빗 키를 복사해주시구요
(아까 서버 이름을 나처럼 다르게 먹였다면 ~.key 앞의 이름을 바꿔야겠쥬)

 


CA서버에 사인 요청을 하러...
팀장님 결재좀 해주세요...
 
 

 


scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp
 

여기까지는 VPN 서버사이드 작업. ca서버 tmp 디렉토리에 옮겨진게 보인다.


scp 한 번 도 안 써봤는데
알고나니까 가끔 쓸 일이 있을 것 같다.
 

 

 

 

 

CA서버사이드:
cd ~/easy-rsa
./easyrsa import-req /tmp/(server).req (server)
 

./easyrsa sign-req server (server)
 (괄호친 server는 변경했을 경우... )

 

CA server side 작업

팀장님이 승인을 해주셨다.
 
오호오옹
디스틩귀시드 네임~
ㅋㅋㅋㅋㅋ중절모쓴 영국인이 있는척하는 목소리가 귀에 들렸다.

(개소리 그만해라)


 
2025년에 인증서 만료.
그럼 그때 가서 다시 req생성하고, sign해주고, 이를 반환해야하는구먼.

-> 아마 필요 없지 싶다. 이 부분은 인증서 만료시점까지 써보고 아래 추가 기재할 예정이다.
 

 

 


 
생성된 인증서를 다시 vpn서버에게 전송해주자.
 
scp pki/issued/(server).crt sammy@your_vpn_server_ip:/tmp
scp pki/ca.crt sammy@your_vpn_server_ip:/tmp
 
cd /tmp
rm (server).req
팀장님컴 (CA서버) temp폴더에 있는 리퀘스트, 혹시 몰라서 지워줬다.
 

 

 

 

 

 

VPN 서버로 돌아와서 확인하니 잘 들어왔다.
 
sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server
 

탭이 안 먹어서
나는그냥 *으로 다 던져버렸다.
 
 


설명 친절한거보소.
 
공격자의 변조패킷이나 공격 그 자체 (포트스캔이나 도스 같은것) 패킷을
우수수 떨궈버리기 때문에 서비스 가용성을 뺏기는 일이 음슴.
좋아요.
 
 

업퓨스케이트가 어퍼스케이트가 뭔지 몰라서 찾아봤다.
ㅇㅎ.
옵스큐럴! 아하 알겠다.

연관된 단어는 아닌데, 뭔가 비슷해서 잘 기억날듯.
(해리포터의 순기능: 단어암기 ㅇㅈㄹ)
(근데 생각보다 라틴어랑 영국식 영어 해리포터 생각하면 바로 기억나는게 많음)
 
 
cd ~/easy-rsa

openvpn --genkey --secret ta.key

--secret은 디프리케이트 되었다고 한다.
--를 빼고 써달래서 덮어 씌웠다.
 
openvpn --genkey secret ta.key
 


 
옮겨주자.
sudo cp ta.key /etc/openvpn/server

 

 

 

 

ㅇㅎ 그런거였어?
스크립트로 클라이언트의 서티피킷을 자동생성해줄 수 있다고 한다.
 
귣귣
 
 
mkdir -p ~/client-configs/keys
chmod -R 700 ~/client-configs

 
cd ~/easy-rsa
./easyrsa gen-req (client1) nopass
./easyrsa gen-req (client2) nopass
./easyrsa gen-req (client3) nopass


cp pki/private/(client1).key ~/client-configs/keys/
cp pki/private/(client2).key ~/client-configs/keys/
cp pki/private/(client3).key ~/client-configs/keys/

(또는 *.key로 왕창 던진 다음에 server.key만 ~/c.../k../에서 제거.)

 


scp pki/reqs/*.req sammy@your_ca_server_ip:/tmp
(vpn서버의 req도 넘어간다. 주의)

 

 

클라용 인증서를 하나 더 만들고
팀장님한테 결재 받으러 한 번 더 가자.

 

 

-> 클라이언트 계정 하나로 여러 장비에서 사용할 수 없다.

핸드폰, 노트북 등등 장비 갯수만큼 잔뜩 만들고

왕창 보내서 왕창 결재받아 오는게 편하다.

 

나는 10개를 만들었다.

 

 

 
CA 서버로 넘어와서
아까랑 똑같이 진행.


 
cd ~/easy-rsa
./easyrsa import-req /tmp/client1.req client1
./easyrsa import-req /tmp/client2.req client2
./easyrsa import-req /tmp/client3.req client3
./easyrsa import-req /tmp/client4.req client4
 
./easyrsa sign-req client client1
./easyrsa sign-req client client2
./easyrsa sign-req client client3
./easyrsa sign-req client client4
 
 
 
...아 놔
리퀘스트가 아니라 키를 전송해버렸네 ㅋㅋㅋㅋ ㅜㅜ
 
 
 
scp pki/issued/*.crt sammy@your_server_ip:/tmp

(역시 vpn server의 서티피킷도 던져진다)

 


팀장컴에서 사인하고 다시 VPN 서버로 보내주자.
rm /tmp/*.req해서 지워주고.
 
 
이거야말로 혼자하니까
(Aussie 표현대로 ) circle jerk이다. ㅋㅋㅋㅋㅋ
EEVLOG 아저씨가 서클졐 얘기할 때 겁나 웃겼음.
이 아재 찐 호주사람이구만.
 
 

 

 

 

VPN Server Side:


cp /tmp/client1.crt ~/client-configs/keys/
 
cp ~/easy-rsa/ta.key ~/client-configs/keys/
sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
sudo chown sammy.sammy ~/client-configs/keys/*
 
 
 

 
이렇게 친절할수가.
digitalocean.com
강력 추천한다.
 
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/


 

위 사진보다 상단에 위치해있다.
설명엔 nogroup, 샘플엔 nobody. 샘플따라가야지

샘플에 group nobody로 되어있다.
group nogroup으로 하지 않으면 서비스 정상 실행이 안된다.

 
 
기본 세팅은 끝났고
 
스플릿 터널링 얘기가 나온다.

보통 나는 스플릿 터널링을 어떻게든 쓰므로
(안되면 물리적으로 어댑터 2개를 별개 인터넷에 연결해서 쓰는 것으로)
일단은 제끼는걸로.
 
굳이 유툽에서 노래 트는 트래픽까지
암호화해서 집으로 보낼 필요가 있나?
 
일단은 스킵.
 

 

스플릿이 기본값인데, 이렇게 해버리니까

모든 트래픽이 VPN밖으로 새어버려서

클라이언트 장비별로 설정을 다시 해줘야한다.

(내부망에 붙인 의미가 없어져버림)

 

라우팅 테이블을 조작해야되는데

껐다켜면 아마 원복되나? 그럴거다.

구찮다.

 

그래서 올 트래픽으로 작업헀다.

 

 

 

 

포트 443 (https아닌가) 를 쓰긴 ...
일단 참고만 하고
나중에 내 에그에서 VPN 패스스루가 안 되면 그 때
하는것으로..
 

KT 5G 에그에서 기존 1194로 패스스루가 안되서

443으로 바..

 

그건 NAT 네트워크 장비사이드 옵션이구나.

여기는 일단 그대로 1194 놔둬도 된다.

 

 

 


막히면 udp에서 tcp로 바꾸는것도 감안.

(443포트로 감싸니까 udp든 tcp든 잘 붙는 것 같다)

 

 


 

아, 이건 해야지

 

(server)로 아까 이름 바꿔 준 부분

반영하는 것이다.
 

 

VPN을 기냥 구축하면

10.8.0.0 대역으로 서브넷이 만들어진다.

 

바꾸고 싶으면 여기서 일단 바꾼다.

서브넷 마스크도 바꿀 수 있다.

 

 

 

 

이만하면 됐고 나가자.

Ctrl s, ctrl x.
 

 

 


 
다음차례로 넘어가자.
 
 

아 예예
IP 포워딩도 해드려야쥬 그럼유 예예
 

 


sudo nano /etc/sysctl.conf
 

 

 

맨 ~ 밑에 추가.
net.ipv4.ip_forward = 1

 
쎄이브 닫기
 

검증해주시고
 
빠이어왈 컨피규레이숀으로 ㄱㄱ.

 
이정도면 대학에서 실습으로 해도 되겠다.
엄청 상세하게 기술해놨네.
 
이래서 백인들이 잘나감.
 
나도 백인으로 태어났어야 되는데.
최소한 유럽이나 북미 문화권에서 동양문화권 접점 없이 컸어야 했음.
 
인종차별의 고통을 아냐고 교포들이 그러는데
아그들아 인생은 실전이야.
 
시바 나도 성인이 될때까지 심한 차별 13년 조온내 당하고 컸다.
회사가서도 차별받았다. 돈 많은집 자식은 저따위라고.
근데 문제는 내 집에 돈 없는데?? 열등감에 찬 병싄들이 지들끼리 상상해낸 결과로 차별을 했다.
ㅋㅋ 존나미샛기들 덤프에 깔려 디져라.
 
아부지의 출신대학으로 받은 간접차별,
경상-전라의 지역차별과 (나는 어릴때 경상도와 전라도 사투리를 둘 다 구사했다. 지금은 못한다)
외국에서 인종차별까지 합치면 (특히 유럽권에선 흑인 밑에 동양인, 그와 유사하겐 원숭이가 있다. 옐로몽키 십새들.)
내 인생 전체가 차별의 연속이었다.
(전라도) 헌병아저씨가 내 말투는(경상도) 나쁜거라고 존나 쿠사리 줬는데 나는 그게 뭔 뜻인지 성인이 되고 알았음.
 
이래서 나는 "삶은 고통의 연속, 그 위에 sprinkled 행복"이라고 생각한다.
베이스가 고통임.
그지같은 인생이 시밤 저주받았다 하 시밤.

 

 

 

 

 

 

 

 


 
 

나는 ifconfig를 선호하기 때문에

포르트 번호는 ens18.
십 팔...!
 
 
 
sudo nano /etc/ufw/before.rules
 

맨 위에 빈 공간을 만들어내주고나서

아래것을 붙여넣어주면 된다.

ens18이 아니라면 수정은 해야할거고.

 

복사할 내용:


# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to ens18 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o ens18 -j MASQUERADE
COMMIT
# END OPENVPN RULES

 

 

포스트 라우팅 뒤에 대역도

상단에서 변경하였으면 수정해준다.

 

이렇게 추가해주고 저장.
*프록스목스에서 복붙이 안 되는데 어떻게 붙여넣기르 한거지?...

아 터미널 SSH.

이런 멍청한 나놈자식.
 
 
sudo nano /etc/default/ufw

디폴트인 드랍을 억셉트로 바꾼다.
저장.
 
 
아옘병...
작업 시작하기 전과 중간중간에
스냅샷을 안 찍었다.
 
아 몰라
안되면 밀고 새로 하지 뭐...


 
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
sudo ufw disable
sudo ufw enable
 
나는 디스/인에이블 안 하고
껐다 켰다.
 
만약에 포트랑 프로토콜 바꿨으면
기존 1194 유디피 지우고
해당 포트 프로토콜 알라우.
 
sudo reboot
 
 
서버가 (재)기동될 때 vpn서비스가 실행되도록 설정
sudo systemctl -f enable openvpn-server@server.service
서비스 기동
sudo systemctl start openvpn-server@server.service
 

하... 스테이터스가 액티베이팅....
일단 서버 재기동해보자...ㅜㅜ
 
하... mainPID 스테이터스: 1, 페일류어.
 
뭐가 잘못된거지???
group을 nogroup으로 안 하고 nobody 벗 츄 로 해서 그런가.
 
sudo nano /etc/openvpn/server/server.conf

변경하고, 서비스 죽이고, 서비스 스텟을 찍어봤다.
 
이니셜라이즈 시퀀스 콤플리띠드...?
...?
 

아 놔
group을 nogroup으로 해야 정상작동된다.
 
샘플 server.conf 만든샛기 누구야.
한 대 뚜까 맞을라고 그냥.
 
 

 

프록스목스 부팅디스크가 깨져버리면서

새로 다시 구축하고 있는데

 

이번에도 에러가 났다.

journalctl -xeu openvpn-server@server.service

 

요놈을 해보니 어디서 어떻게 에러가 났는지 보인다.

 

AES를 ARS로 적어놨다.ㅋㅋ;

자동응답시스템이냐?

수정해줬다.

 


 
서버사이드 작업은 끝났다.
 
 
 
 
 

4. OpenVPN 클라이언트 구성

하나하나 구성하기가 cumbersome하니
컨피그 파일을 만들어서 뿌리자.
 

진짜 최고다.
 
이정도면 소규머 기업 it 담당자가 보고 만들어서
ipad preconfig로 뿌려도 되겠다.
 
감사합니다.
 
 
mkdir -p ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
nano ~/client-configs/base.conf

아니 이자식들
여기에도 노바디 노바디 벗 유를 박아놨네
원더걸스 팬이여??

노바디 노그룹으로 변경.
 

인증서부분은 주석처리해주고

tls-crypt는 나중에 추가해줄터이니 일단 주석처리하세요.
아 예예

 
 

기존 값 주석처리한 뒤 서버사이드 세팅값 입력.
 
 
 

키-디렉숀은 맨 하단에 넣어줌.
 

키 디렉숀 하단에 리눅스용 2개 주석문 넣어주었다.

(두번째 구축때는 안 했다)

(세 번째 구축때도 안 했다)

 

미래에서 과거로 돌아와 남긴다.

 

호스트의 도메인이나 공인 IP를 적어주고, 포트를 변경해준다.

 

아래에서 이 걸 안 해서 뻘짓을 했다.

 

 


세이브. 엑싯.
 

 

 


nano ~/client-configs/make_config.sh
셸 스크립트를 만들 차례.
 
 
 
#!/bin/bash
 
# First argument: Client identifier
 
KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
 
cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-crypt>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-crypt>') \
    > ${OUTPUT_DIR}/${1}.ovpn
 
 
 
하...
프록스목스에 복붙 안되는걸로 알고있는데
저거 언제 다 치냐.
이제 슬슬 짜증이 올라오기 시작한다.
 
 
ssh로 다시 붙으려니까
더 귀찮다.
 

ㅋㅋㅋㅋㅋ...
이짓거리를 하고 있다 ㅜㅜ
 

거으 다 했는데
오로라의 라이브나 들으며 마음을 다잡아보자.
 
샘 스미스 다음으로 목소리에 감정이 찐하게 담기는 가수이다.
한국 가수에서는 못느끼겠음.
 

노래 진짜 잘 부른다...

작은따옴표 하나 잘못넣은것 수정했다.
 
chmod 700 ~/client-configs/make_config.sh
 

클라이언트를 추가할 때마다
스크립트를 실행해서 키와 인증서를 맹글어야한다.
 
그래서 더욱 로그를 냄겨야 하는 것이다.
 
나중에 맥북이나 새 핸드폰 사면 추가해야지.
 

 
cd ~/client-configs
./make_config.sh (client1)
 
ls ~/client-configs/files
 
아 놔 상단에 작은따옴표는 왜 박혀있냐.
실행이 안된다.
 
수정하고 다시...

 
잘 된다.
 
끝이 보인다
겁나 힘들다 ㅋㅋㅋ ㅜ
손목아파 죽겠음.

 

 

 

.ovpn 파일을 접속할 기기에게 배포하면 된다.

 

나는 파일서버에 올려놓고

각각 장비별로 접속해서 자기 것을 가져오는 방식을 택했다.

 

scp에서 포트 변경하는건 -p가 아니고 -P였다.
뻘짓 겁나 했네...
 
 
 
모두가 접속할 수 있게
파일서버로 옮겨줬다.
 
 
맥에서 확인하고 아이폰을 연결했는데...
 

맥 미니에 꼽았는데
하...
장난까냐!!
 
맥이 세대나 있는데
하나에 종속시키면
나머지는 뭐가되냐
 
진짜 쿡이형도 한대 뚜들겨 맞을라고 어휴.
 
 

핸드폰에서 바로 파일서버로 접속해 파일을 가져왔는데...
 
 

 
아 맞다...
네트워크쪽도 손을 봐야지.. ㅜㅜ
근데 이건 컨피그 파일을 만들면
손을 못대네? ㅜㅜ
 
 
네트워크 사이드 구성 마치고
다시 돌아와서 셸스크립트 손봐야겠다.
 
내일 새벽에 나가야되는데 자땠다
 

 

 

 

 

 

5. 네트워크 사이드 구성

- VPN 서버 IP 고정
- DDNS 설정
- 포트포워딩 설정
 
 
 
- 내부 IP를 떠돌아다니지 않고, 하나의 내부 IP로 고정을 해줘야
포트포워딩을 할 수 있다.
 
 
- DDNS가 없으면 통신사쪽에 고정 IP를 배정받아야되는데
값이 비싸다.
외부에서 접근할 때 URL또는 공인IP가 있어야 되는 만큼
그냥 공유기 사면 딸려오는 DDNS 서비스를 이용하자.
 
유동 공인IP를 그냥 가져다 쓰면
언젠가 IP가 바뀌어버려서 다시 설정해야될 수 있다.
 
 
- 기본값 1194 UDP 포트포워딩을 외부 - VPN 서버로 연결해주자.
바꿨으면 바꾼대로.
 
나는 일단 외부 1194 - 내부 1194로 연결해서 테스트운용해보고,
나중에 포트번호를 공유기 쪽에서 바꿀 예정이다.
 
 
 
 
 

4. 서버사이드 사이드 구성 (스크립트 수정)

저 마이 서버란 놈은 어디서 기어나왔길래
수정이 안 되는것이여.
 
 
nano ~/client-configs/base.conf
 

 
이놈
이놈이다.
 
수정해줬다.
bullcrap.tistory.com 이런식으로.
 
cd ~/client-configs
./make_config.sh client1
 
셸로 ovpn 파일 다시 생성하고
파일서버로 푸수이.
 
scp -P 12345 ~/c../f.../cli... user@file.server.ip.addr:/dest_dir
(여기서 ...은 탭을 눌러 자동완성)
 
 

 
 
한참을 로딩뜨길래
 
아 왜 또 뭔데 이번엔! 하면서 미간을 찌푸리다가
 
방금 막 이것저것 테스트하면서
외부 포트 - 443 내부포트 1194로 세팅한게 생각났다.
 
급하게 11194 <-> 1194로 정책을 변경해줬다
변경 하자마자 바로 붙어버렸다.

 
 

 
기~~~~ 뻐하며 ~~~~정신승리의 노래를 부르리~~~
 
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
 
성당 청년성서모임에서 배워서
나중에 교회 반주 알바할때 지독하게 써먹었다.
 
목사님 설교 처음엔 ' 천주교와 개... 크흠. 개신교와 신학적 관점차 ' 에 대해 생각하면서 들었지만
나중엔 잤다.ㅋㅋㅋㅋㅋㅋㅋ
 
교회는 겁나 뽕빤 사람처럼 (성서모임 연수를 생각하면서) 찬양해주면
간사님? 집사님? 입이 귀에 걸려서 돈을 두둑하게 줬다.
ㅋㅋㅋㅋㅋㅋ 하"나"님 할때랑 중간에 개뜬금 "아멘!!" ㅇㅈㄹ할때마다 확 깨긴 했는데.
돈이 좋았다.
 
끝나고 술을 안 먹어서 아쉬웠지...뭐...
교회 사람들은 또 이렇구나 하면서 신기한 것도 있고
으른들의 사정도 옆에서 구경하고.
기타랑 보컬도 신나게 놀면서 돈받고 연습하고. (나는 신나는거 묻어가고 싶은데 가끔 잔잔한거 보컬시키면 진짜 부담..)
건반 자매님한테 팁도 쏠쏠하게 얻어가고. 그녀의 어장에 걸린 형제들의 눈총을 존내 받아가고.ㅋㅋㅋㅋㅋ
(공대 출신이지만 공대 아름이 어장보다 더 무서운게 교회 반주자 어장.)
 
 
뭐 나는 돈 두둑하게 받아서 좋지.
그들은 신실한 청년신자(를 가장한 피고용 외부인)를 앞에 두어 상품성 좋은 디스플레이를 대여하지.
윈윈아닌가.
 
 
 
전심으로~~~ 기뻐하리~~~~~~~~~
코딩의 왕~~~ 함께하시네~~~ ㅋㅋㅋㅋㅋㅋㅋㅋ
 
되니까 기분이 급 좋아졌다.
 
 
 
 
아직 방심은 금물.
A. 내부망 (유무선랜)에서 되는지 했고,
B. LTE 망에서 되는지
C. Egg에서 되는지 (에그의 패스스루)
D. 카페 인터넷과 같이 저품질 커넥션에서 되는지.
E. 같은 cert 파일로 여러 디바이스에서 동접이 되는지??
 
 
 
 
A. 내부망 접속 확인, 통과
B. LTE망 접속 확인, 통과

기뻐외치며~~ 폰께 두 손들리~~~
춤을 추며~~ 컴께 찬양해~~~
 
C. KT 에그...
 

아시바
야 노래 꺼. 손내려! 시끄럽따!!! 임마!
 
ㅜㅜ
패스스루가 안 된다.
 
라우터:
기존 UDP 1194 <-> 1194 정책 아래에
TCP/UDP 443 <-> 1194 정책을 추가해보았다.
 
 
서버:
일단은 붙으니까
내일 해봐야지...
 
 

 

 

 

 

6. 현업 투입

Troubles:

A. Split tunneling시 내부망 서비스 연결 불가

B. 끊김증상

C. 같은 profile 동시접속시 문제

D. KT Egg VPN Passthrough

 

 

A. Split tunneling시 내부망 서비스 연결 불가

올 트래픽이 아니라 스플릿 터널링을 하다 보니

안되는 서비스가 너무 많다.

 

올 트래픽으로 바꿔줘야겠다.

(상단 참조)

sudo nano /etc/openvpn/server/server.conf

 

기존의 ; 주석을 제거해줬다.

 

 

저 DNS 서버는 뭔지 몰라서 찾아보니

Cisco의 OpenDNS 서버 주소였다.

 

국내는 KT망을 통해 국외 트래픽이 돌아다니므로

KT DNS를 쓰려 했지만, 그냥 Cisco의 DNS를 쓰기로 결정.

 

 

 

포트랑 프로토콜은 일단 기본을 유지하기로 했다.

어차피 NAT 장비에서 포트포워딩으로 변경해줄 수 있는 부분이니까...

 

 

 

다음은 ovpn 파일을 다시 만들 차례.

 

nano ~/client-configs/base.conf

 

포트만 변경해 주었다.

일단은 테스트용으로 443 (https)포트.

 

나중에 23(텔넷)이나 25 (SMTP, 심플 메일) 포트로 바꾸든지.

 

 

 

저장.

 

 

 

cd ~/client-configs
./make_config.sh client1_adjusted

 

스크립트 실행.

... crt랑 key파일 이름이 같아야되는구나.

ㅜㅜ

 

 

./make_config.sh client1

 

 

ovpn이 새로 만들어졌으니

scp로 파일서버에 올려보자.

 

 

scp -P 22 ~/client-configs/files/client1.ovpn sammy@your_vpn_server_ip:/dir

 

포트를 까먹고 지정해주지 않았더니

무한히 기다린다.

 

 

테스트를 해볼까.

 

포트 443으로 바로 붙긴 했는데

트래픽이 여전히 샌다.

 

옆에 다른 VPN으로 붙은 맥북 에어는 내 서울 사육장 ip주소와 지역을 띄우는데

OpenVPN을 붙인 맥북 프로는 여기 지역 (지금 지방에 내려와있다)의 IP와 지명을 띄운다.

 

 

 

아.

서비스 재기동 안 헀구나...ㅋㅋㅋ;

 

sudo systemctl restart openvpn-server@server.service

서비스 재기동 하고 붙이니

바로 커넥션 스탯이 바뀐다.

고든램지가 얼굴을 감싸고 있다.

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

오우 퍽커프~~ 목소리 벌써 들린다.

 

 

잘되는구나!!

기존 VPN 서비스는 다시 죽이고

(오늘 급하게 지방내려오느라 집을 나서기 전에 부랴부랴 기존 서비스 살렸다)

완전히 갈아치우는 것으로.

 

 

같은 profile로 동시접속을 해도 잘 된다.

 

 

성능테스트를 해볼까?

...

 

 

B. 끊김증상

결론부터: 기기 별로 서티피킷을 다른 놈으로 써야된다.

같은 ovpn파일을 쓰면서 동시 접속을 하게 되면

제대로 붙지 않는다.

 

 

 

상당히 불안정하다.

 

 

Youtube에 들어갔더니만

트래픽이 (한 박자 느리긴 해도) 잘 들어오더니

갑자기 인바은트가 막혀버리질 않나... 무한로딩 ㅠㅠ

 

좀 전에는 아예 유툽 offline 메세지가 떴다.

 

 

 

VPN 커넥션 자체가 불안정한가보다.

흠..

 

 

스크린샷을 찍자마자 3분동안 인바운드 트래픽 0, 계속 무한로딩이 떠서

VPN을 끊었다 붙이니 (거의 즉시 붙는다)

갑자기 원활해졌다.

 

4K는?

 

 

4K로 영상을 틀고나니

15MB/s 트래픽이 한 3초간 surge하였다. 급상승.

 

 

또 버벅인다. VPN을 끊었다 붙여주면 바로 또 잘 붙는다.

 

아 왜이러지??

 

서버에서 Glances로 리소스 사용량을 모니터링하고 있는데 특이사항은 보이지 않는다.

 

맥쪽은 CPU 점유율과 온도가 급상승하긴 하나

그-렇게 심각하진 않는것같은데?

그냥 유툽 영상 디코딩로드정도 되는 것 같은데..

(특히 최근 1-2년동안 유투브의 클라이언트측 워크로드가 상당히 증가했다)

 

 

자꾸 끊긴다.

 

이거 VPN 서버쪽 네트워크에서 QoS를 걸어버려야되나.

한 10MB/s로? ㅜㅜ

 

 

1080p 영상은 또 잘 되네...

서버 자원을 넉넉하게 주고 해볼까

6코어 4기가RAM?

 

 

흠. 아니면 Proxmox 하이퍼바이저에서

이더넷 2개를 본딩해서 써서 그런가?

 

Proxmox 상에 VM으로 파일서버를 돌리면

옆에 다른 VM에서 접근할경우 Disk IO 최대치에 근접하는 (4~500MB/s) IO 속도를 보여주지만

하이퍼바이저 외부의 컴퓨터가 접근하면

 

113MB/s (기가빗 이더넷 한계치)의 절반도 안되는 40MB/s 근처에서 출렁출렁한다.

 

본딩을 풀어야되나?

 

아 그럼 일이 너무 커지는데... ㅠㅠ

 

 

 

확실한건

- 맥북 재부팅

- 서버 재기동

을 해도 여전히 불안불안하다.

 

프로토콜 문제인가? 흠...

 

아 포트포워딩 문제??

외부 1194 - 내부 1194

외부 443 - 내부 1194

두개 룰이 같이 살아있었다.

 

내부1194 룰을 disable해줬다.

 

이제 좀 괜찮으려나?

 

오로라 덕질을 좀 해보기로 했다.

 

 

6분의 덕질 동안 끊김없이 진행됐다.

 

포트포워딩 문제였나보다.

...아니네

 

 

가-끔씩 끊긴다.

 

하이퍼바이저의 이더넷 본딩을 풀어버리고

(원랜 라운드로빈을 쓰다가 이번엔 액티브 - 백업으로 했으나, 이슈는 동일했다)

VPN서버용으로 전용 1개,

나머지 VM용으로 공용 1개를 배정해야겠다.

 

Bonding sux.

스트레스 테스트를 위해 CentOS 스트림 설치 이미지를 다운로드 받아보았다.

 

- 클라이언트쪽 CPU로드가 어마어마하다. VPN, 파일전송 외에 다른 App은 모두 죽였음

- 애크놀로지 패킷 (빨간색 아웃바운드 패킷)이 초당 2메가씩 쏟아져나간다.

- 속도가 처참하다. 인간사육장과 이곳의 ISP와 계약한 속도는 모두 기가빗 인터넷이다.113mbps.

- 파일서버쪽 엄청난(?) 워크로드를 걸어도 8기가 전송 중 오류 없이 잘 받았다.

내 맥북 프로 사양이다.

은퇴 시점이 얼마 남지 않는, 초등학교에 입학할 나이인 낡은 노트북이지만

아직 잘 쓰고 있다.

2023.08.13 - [1.C. Geeky Customering/Apple Products] - 구형 맥북 SSD 교체 Log (15년 프로, 17년 에어)

 

구형 맥북 SSD 교체 Log (15년 프로, 17년 에어)

Pre-script ps.1. 2024.01.05 - [Electronics log/Electronics Log (as Consumer)] - 맥북에어 부품호환 Log (12 ~ 17년 맥북에어 13인치 파츠스왑) 맥북에어 부품호환 Log (12 ~ 17년 맥북에어 13인치 파츠스왑) 나는 고장난 맥

thewanderer.tistory.com

 

 

아 진짜 어디가 문제인걸까.

왜 테스트중에는 문제가 발생하지 않는 것이느뇨.

 

 

 

-> 어제 테스트할 때 메인폰에서도 같은 client1 프로필로 붙어있었나보다.

지금 보니까 (하단의 동접문제 해결을 위해 해당폰 전용 프로필 생성해줌)

기존 접속을 끊으시겠습니까? 문구가 나오길래

아... 어제 밤새도록 붙어있었구나...

 

 

 

 

 

 

C. 같은 profile 동시접속시 문제

같은 프로필로 동시접속.

-> 맥북 프로에서 Client1 프로필로 접속

-> 유툽 재생 (정상 재생됨)

-> 맥북 에어에서 Client1 프로필로 접속

-> 다른 영상 재생 (정상 재생됨)

-> 맥북 프로에서 더이상 패킷을 받지 못함.

-> 맥북 프로에서 VPN 끊고 재 접속시 에어쪽 버퍼링이 끊김.

 

private ip가 같게 나올때 이미 예상은 했지만..

 

 

하...

핸드폰 3개에 노트북 5개인데...

기기별로 프로필을 만들어야되는건가 ㅜㅜ

 

프로필 자동생성 스크립트는 없는건가 ㅜ

 

INFP, F성향은 원래 안 좋아하는데 오로라는 인정. (나는 극I N 극T J)

cd ~/easy-rsa
./easyrsa gen-req client2 nopass
./easyrsa gen-req client3 nopass
./easyrsa gen-req client4 nopass

...

 

엔터로 커먼네임 그대로 넣어주고

 

cp pki/private/client2.key ~/client-configs/keys/

cp pki/private/client3.key ~/client-configs/keys/

cp pki/private/client4.key ~/client-configs/keys/

...

 

 

scp -P 777 pki/reqs/client2.req sammy@your_ca_server_ip:/tmp

scp -P 777 pki/reqs/client3.req sammy@your_ca_server_ip:/tmp

scp -P 777 pki/reqs/client4.req sammy@your_ca_server_ip:/tmp

...

 

 

CA서버로 접속하자

ssh sammy@your_ca_server_ip -p 7777

 

cd ~/easy-rsa

./easyrsa import-req /tmp/client2.req client2

./easyrsa import-req /tmp/client3.req client3

./easyrsa import-req /tmp/client4.req client4

...

 

 

 

./easyrsa sign-req client client2

./easyrsa sign-req client client3

./easyrsa sign-req client client4

...

 

cd /tmp

rm -rfv client*

 

 

scp pki/issued/client2.crt sammy@your_server_ip:/tmp

scp pki/issued/client3.crt sammy@your_server_ip:/tmp

scp pki/issued/client4.crt sammy@your_server_ip:/tmp

...

 

 

VPN서버로 돌아와서

cp /tmp/client* ~/client-configs/keys/

 

sudo chown sammy.sammy ~/client-configs/keys/*

 

 

cd ~/client-configs
./make_config.sh client2
./make_config.sh client3
./make_config.sh client4

...

 

 

scp -P 333 ~/client-configs/files/client* sammy@your_file_server_ip:/tmp

 

핸드폰이랑 노트북에서 각자 자기 이름에 맞는 파일 다운로드 받은 뒤

(기존의 client 1 계정으로 붙어있는 맥북 프로가 에어드랍으로 뿌려줌)

프로파일을 덮어씌워줬다.

 

 

스트레스 테스트를 위해

- 아이폰 2대에서 동시에 앱스토어 업데이트 (각각 8개, 12개 앱 업데이트)

- 맥북에어에서 4K영상 재생

- 맥북프로에서 CentOS 이미지 다운로드 (8GB)

 

ㅋㅋㅋㅋ

가상머신이 헐떡거린다.

 

- 일단 OpenVPN 접속은 모두 해제하고

- 기존의 다른 VPN으로 접속한 뒤

- Proxmox 접속 (외부접속을 차단해둠)

- VM 종료.

- 하드웨어 구성에서 CPU를 3개 할당해주고

- VM 기동.

 

CPU 코어를 3개 주고 나니

IBRS와

noTSX 옵션이 보인다.

 

저게 뭐지??

 

 

 

IBRS - Indirect Branch Restricted Speculation

 

https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/indirect-branch-restricted-speculation.html

 

Indirect Branch Restricted Speculation

How to use Indirect Branch Restricted Speculation (IBRS) and Enhanced IBRS to help mitigate branch target injection and speculative store bypass transient execution attacks

www.intel.com

 

 

 

noTSX는 뭐지...

 

 

 

https://opennebula.io/selecting-the-right-cpu-model-on-kvm-x86-hosts/

 

Selecting the Right CPU Model on KVM x86 Hosts

Sometimes it can be hard to choose a CPU model for VMs. Here you can learn on selecting the right CPU model for your VM.

opennebula.io

이런 포스팅을 발견했다.

 

 

 

흠.

가상머신 재기동하기 전에

프록스목스 CLI를 띄워서 확인해봐야겠다.

 

https://qemu-devel.nongnu.narkive.com/ijhyke8a/patch-0-2-target-i386-haswell-notsx-and-broadwell-notsx-cpu-models

 

[Qemu-devel] [PATCH 0/2] target-i386: Haswell-noTSX and Broadwell-noTSX CPU models

Post by Eduardo Habkost With the Intel microcode update that removed HLE and RTM, there will be different kinds of Haswell and Broadwell CPUs out there: some that still have the HLE and RTM features, and some that don't have the HLE and RTM features. On bo

qemu-devel.nongnu.narkive.com

검색을 하다보니 자꾸 QEMU 어쩌고 저쩌고 하는데.

일단 QEMU는 뭐여? 퀘뮤?

 

QEMU is a free and open source emulator.

It emulates the machine's processor through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems. Wikipedia

 

Qemu를 찾아보니 VGA (PCIe) 패스뜨루도 나오고 하는걸 보니

좀 더 찾아볼 가치가 있는 것 같다.

 

 

일단 그럼 퀘뮤는 프로세서 에뮬레이터인데... 그럼 noTSX는 뭐냐고...

 

구형 CPU이다보니 (하스웰 제온, 하이퍼트레딩 on)

스펙터 같은 문제가 걱정이 된다.

 

 

일단은 두 옵션 빼버리고 그냥 줬다.

좀 더 찾아보고 설정하는 것으로.

 

CPU Flag중에 hv-evmcs (Improve performance for nested virtualisation. Only supported on Intel CPUs)를 켜줬다.

나머지 플래그들도 좀 찾아봐야겠다.

 

 

VM 재기동!

... 안된다.

CPU 관련 옵션을 초기화해줬다.

그냥 코어만 일단 3개 주는걸로..

 

흠..

 

스트레스 테스트 Again.

- 맥북 프로: CentOS 이미지 카피

- 맥북 에어: CentOS 이미지 카피 + 유투브 1080p 영상 스트림

- 아이폰 2대: 각각 디즈니플러스에서 다른 영화 스트림

 

VM에서 코어를 하나만 갈군다.

더 이상한건 core 2번을 갈구다가 갑자기 0번을 갈구다가 2번을 갈구다가...

 

OpenVPN 서비스가 멀티쓰레딩을 지원하지 않는건가?? 뭐지??

 

일단은 5개의 스트리밍 서비스가 아무런 이상 없이 잘 된다.

성능 최적화는 좀 더 찾아봐야겠다.

 

 

 

->

2023년 7월이 되서야

(구축 완료한지 4개월)

멀티쓰레딩에 대해 찾아보게 되었다.

 

OpenVPN은 기본적으로 싱글쓰레드라고 한다.

 

멀티 쓰레딩으로 하고싶으면

인스턴스를 여러개 띄우고, (포트도 여러개)

로드밸런싱을 하는 방법밖에 없다고 한다.

 

 

꺼지라고 했다.

 

네트워크 대역폭 (ISP측)을 최대로 갈궈도 잘 버틴다.

 

CPU 로드가 100% 고정이 뜨긴 하지만

스트레스 테스트 (또는 그 급의 작업) 중에 다른 서비스가 먹통이 되거나 하는 일은 없다.

 

 

 

D. KT Egg VPN Passthrough

어제 밤에 작업한 포트변경으로

벨킨 에그에서 VPN을 통과시킬 수 있을까?

 

ISP - 에그 - VPN - DNS Leak Test로 검사해봐야겠다.

 

깜빡하고 OpenVPN을 해제하지 않은채

기존 광랜 Wifi에서 에그로 접속을 변경했는데

VPN이 알아서 바로 붙어버렸다.

 

할렘루야.

 

https://www.dnsleaktest.com 

주소고 잘 나오고.

결과도 잘 나온다.

맘에 든다.

 

 

속도도 5G속도...는 안 나오지만 2-30mb/s로 잘 뽑힌다.

 

 

 

 

 

 

 

 

 

기존 VPN 포트 막고 서비스 내려야겠다.

OpenVPN 포트는 443으로 패스스루 되는걸 확인했으니

다른 well known port로 바꿔주는걸로.

어차피 내 사육장에서 해당 서비스를 외부에 오픈할 일은 없으니까.

 

끝!

 

 

 

 

 
 
 
...
 
 
2023. Jan. 19th 시작
2023. Mar. 11th 발간

2023. Mar. 24th 최종마무리 (1차 구축)

2023. ? 서버 재구축 (2차 구축)

2023. Jul. 19th 서버 재구축 (3차 구축)

2024. April 개념정리 + 글 다듬기 (SSL VPN vs IPSec VPN)
 
 
끝. End of Doc.

반응형

댓글