[네트워크 CS] VPN, 프록시, 게이트웨이

휘루·2023년 4월 13일
0

네트워크

목록 보기
1/2

VPN

VPN : Virtual Private Network
가상 사설망 네트워크입니다.

인터넷으로 집과 회사 사이에 통신을 하는데요.

집 - 회사 사이에 인터넷으로 데이터를 보내는 것들이 공개되어 있어서 보안에 문제가 생깁니다.
HTTPS로 보호는 가능하지만 어쨌든 공개되어 있는 네트워크로 데이터가 흐르는 상황입니다.

회사 입장에서는 Private한 망을 원하는데 이걸 구축해 사용하는 걸 사설망이라 합니다.

회사가 직원의 집까지 사설망을 깔기에는 비용이 어마어마하게 듭니다.
재택근무 한다고 직원 집에 일일이 깔 수는 없잖아요?

그래서 회사 - 회사 간에 사설망을 깔을 수 있어요.

공개되어 있는 인터넷에서 사설망처럼 동작할 수 있도록 하는 게 VPN인데요.
결론은 회사 입장에서는 비용이 많이 드니 가상의 사설망, VPN을 사용합니다.

VPN 프로그램 설치하면 집 - 회사간 데이터를 주고받을 수 있거든요.
또한 감시도 가능하고 필터링도 할 수 있습니다.

그리고 VPN은 같은 VPN에서 인증되지 않으면 외부로 공개가 안됩니다.
실제 사설망과 똑같다고 보면 됩니다.

VPN을 통해 데이터가 오간 걸 회사가 까볼 수 있습니다. 이런 건 조심해야 합니다.

또 다른 사용도는 개인 정보 이슈, 국가의 검열 이슈를 통해 피해가기 위해 사용하기도 합니다.

프록시

클라이언트 -> 프록시(포워드) -> 인터넷 -> 프록시(리버스) -> 서버

요청을 통해 인터넷으로 가기 전에 프록시를 거치기도 하고 안거치기도 합니다.
그럼 클라이언트는 왜 프록시를 거쳐서 서버로 갈까요?

포워드 프록시 : 불필요한 헤더 제거를 역할로 사용합니다.

브라우저로 요청 보내보면 IP나 불필요한 헤더들이 많은데 지우고 싶어도 못지우는 경우가 많아요.
브라우저가 직접 헤더들을 넣어서 보내버리기 때문이거든요.

그래서 포워드 프록시를 만들면 불필요한 헤더들을 지워버릴 수 있습니다.

혹시나 실수로 악성 서버에 요청을 보낸다던 지 이런 실수가 있거든요.
이런 것들도 포워드 프록시의 필터링을 통해 요청이 아예 안가게 할 수 있습니다.

그래서 포워드 프록시는 클라이언트에서 서버로 요청이 갈 때 진짜 가도 되는지 검열, 점검, 필터링을 해준다고 보면 됩니다.

리버스 프록시 : 불필요한 요청이 온 경우 필터링

리버스 프록시로 유명한 것들은 Apache나 Nginx가 역할을 해주거든요.
HTTPS를 적용해주는 역할도 해줍니다.

정적 파일 서빙 (Html, Css, Js, Image, Font) 이런 파일들의 요청은 진짜 서버를 거치지 않고 프록시에서 자체적으로 먼저 제공을 해줄 수 있습니다.

서버에서도 할 수 있는데 왜 리버스 프록시에서 하느냐? 할 수도 있습니다.
프록시가 대신 하는 이유는 서버보다 더 일처리를 잘 하기 때문입니다.
가장 큰 이유는 필터링을 해주기 때문입니다.

서버에서 100개 압축하면 리버스 프록시에서는 1,000개 할 수도 있기 때문에 리버스 프록시를 씁니다. gzip, br같은 압축을 리버스 프록시에서 사용하기도 합니다.

로드 밸런싱
리버스 프록시 뒤에 서버가 여러개(서버2, 서버3) 있을 수도 있는데요.
각 서버에 요청을 분배할 수도 있습니다. 이걸 요청 분배, 로드 밸런싱이라고 합니다.

요청이 100,000개가 왔는데 서버가 4개면 25,000개씩 서버 송출을 할 수 있습니다.
한쪽으로만 하면 서버가 터질 수도 있기 때문입니다.

오토스케일링
로드 밸런싱과 더불어 같이 나오는 것이 오토스케일링인데요.
요청이 400,000개가 왔는데 서버가 4개면 한 서버당 10만개씩 요청을 처리해야 하는데 이게 버거운 경우가 많습니다.

오토스케일링은 이런 요청량에 따라 서버들을 8개씩 늘리거나 4개로 줄이거나 할 수 있습니다.

게이트웨이

게이트웨이의 기본 역할은 프로토콜을 바꿔주는 역할을 합니다.

클라이언트 -> 인터넷 (HTTPS로 요청한 경우) -> 게이트웨이 -> 서버

인터넷 -> 게이트웨이 이동 과정에서 HTTPS가 HTTP로 바뀔 수도, WS(웹소켓), FTP처럼 다른 프로토콜로 바뀔 수도 있습니다.

요즘 게이트웨이와 프록시의 구분이 별로 경계가 없는 이유는
인터넷에서 HTTPS 요청이 들어오면 리버스 프록시에서 HTTP로 서버를 보내기도 합니다.
내부 서버 안에서는 굳이 HTTPS 적용하진 않다고 여겨져 HTTP로 보냅니다.

암호화, 복호화 하기에는 같은 서버이기 때문에 리버스 프록시 <-> 서버 사이에는 그렇게 보내고
인터넷이 거쳐지면 HTTPS로 바꿔서 보냅니다.

API 게이트웨이

이것도 그냥 프록시입니다. 게이트웨이도 프록시라고 보면 됩니다.
필터링도 하고, 로드밸런싱도 하고 다양한 역할을 해줍니다.

CONNECT

HTTP 메소드 중에 CONNECT가 있는데요.

클라이언트 -> 프록시 -> 프록시 -> 서버
클라이언트에서 서버로 보내고 싶은데 서빙, 요청, 필터 등 기능을 끄고 다이렉트로 보내고 싶으면 인증을 통해 서버로 보냅니다.

인증된 사람은 서버로 보내고, 인증에서 통과되지 못하면 프록시를 통해 필터링 후 서버로 보내는 역할을 합니다.

profile
반가워요

0개의 댓글