프롤로그
시험공부 언제하지...
프로젝트 언제하지..
프록시
중간 다리 역할이라고 보면 된다. 프록시란 클라이언트와 서버 사이에 위치하여 중간에서 요청(Request)과 응답(Response)을 중계하는 역할을 하는 시스템이다. 사용자의 네트워크 요청을 대신 처리하거나 필터링 하고, 서버에서 반환된 데이터를 사용자에게 전달한다.
나무위키에 프록시를 검색하면
프락시가 맞다고 하긴 하는데, 뭐 그건 중요한 게 아니니까.
대리라고 나와있다. 그니까 이것을 컴퓨터 용어로 가져온다면, 요청 응답을 대신 해주는 애. 정도로 이해하면 될 것 같다.
그렇다면 당연히 클라이언트와 서버 중간에 위치하고 있을 것이고, 대신 통신을 받아줄 것이다.
프록시 종류
프록시는 포워드 프록시와 리버시 프록시 등등으로 나누어져 있다. 포워드 프록시는 클라이언트 쪽, 리버스 프록시는 서버쪽에서 설정을 한다.
순방향 프록시(Forward Proxy)
클라이언트 쪽에 포워드 프록시가 있다고 했다. 즉, 그 의미는 클라이언트 -> 프록시를 통해서 , 이 포워드 프록시가 서버쪽으로 요청을 보내고 응답을 받는다.
프록시를 사용하지 않았을 경우에는 내 아이피 그대로 서버에 기록이 남게 된다. 그러면 프록시서버를 쓴다면?
서버에 내 아이피는 보여지지 않을 것이고, 저 외부 프록시를 통해서 서버에서 받은 데이터를 사용자가 받아갈 수 있다.
이렇게 여러 사용자가 하나의 프록시 서버를 이용해서 여러 서버에 접근을 할 수가 있는데, 악의적인 사용자가 자신의 아이피를 가려서 해킹할 수도 있는 거 아닌가 라고 생각이 들 수도 있다. 그럼에도 이걸 사용하는 이유는 뭘까?
이걸 사용하게 된 계기에는 옛날에 인터넷이 뒤지게 느렸을 때... 그때로 거슬러 올라가야한다. 사용자가 직접 해당 서버에 가서 데이터를 불러오는 과정을 할 때, 인터넷이 매우 느려서 가지고 오는데만 한 세월이 걸린다.
프록시 서버를 사용하게 된다면, 만약에 이전에 P라는 사용자가 프록시 서버를 이용해서 A라는 사이트의 정보를 가져온 적이 있었다면 해당 데이터는 프록시 서버에 저장하게 된다.(캐시), Q라는 다른 사용자가 A라는 사이트의 정보를 가져오려고 하는 상황일 때, 이미 프록시 서버에 저장되어있던 정보이기 때문에, 해당 사용자에게 서버를 굳이 거치지 않아도 데이터를 넘겨줄 수가 있어서 빠르게 정보를 줄 수가 있었다. 그래서 프록시 서버는 캐시를 이용해서, 캐시에 남아있는 정보를 클라이언트에게 줄 수 있기에 속도가 빨라져서 사용한다.
두 번째는 검열이다. 필터링이라고 하는데, 이 프록시를 이용해서 외부 웹 사이트로 가려고 하는 사람들이 A라는 사이트에 못 가게 막아낼 수가 있다.
특징을 다시 정리하자면
1. IP숨기기 : 사용자의 IP 주소를 서버에 노출하지 않음.
2. 접근 제한 우회 : 특정 콘텐츠나 지역 제한을 우회
3. 로컬 네트워크 보안 : 내부 네트워크와 외부 네트워크 간의 중계
이렇게 된다.
역방향 프록시(Reverse Proxy)
아까는 Forward, 이번에는 리버스 프록시이다. 아까는 클라이언트쪽에 사용이 됐다면, 이 리버스 프록시는 서버 앞단에 위치한다.
그림을 보면, 클라이언트는 서버에 직접적으로 요청을 하는 것이 아니라 리버스 프록시에다가 요청을 하면, 리버스 프록시가 서버에서 데이터를 받고, 클라이언트에게 데이터를 반환해준다.
클라이언트가 서버의 IP를 직접적으로 요구하는 것이 아니기 때문에 서버의 아이피가 필요가 없다. 그리고 A요청, B요청 등 각 요청들을 서로 다른 서버로 전송해서 요청을 하기 때문에 분산으로 부담할 수 있다.
클라이언트 입장에서는 리버스 프록시 서버 자체가 Web 서버 그 자체일 수 있기 때문에, 실제 Web서버가 몇 개 존재하는가 이런 것을 알 수가 없기 때문에 서버를 보호해줄 수 있다.
그래서 리버스 프록시를 왜쓰냐?
첫 번째로는 부담 분산. 하나의 서버에 사용자가 200000개 이런식으로 요청을 보내는 것을 리버스 프록시가 여러대의 서버에 분산으로 요청을 보내기 때문에 부담을 줄여주므로써 메모리 사용량을 효율적으로 운영할 수 있다.
두 번째로는 캐시의 저장이다. 아까와 마찬가지로, 이미 들어왔던 요청이 있으면 리버스 프록시 서버에 저장이 되어있기 때문에 그거 그대로 넘겨줄 수 있다.
그래서 서버를 보호할 수 있다...
기타
그 외에 투명프록시, 웹 프록시, SOCKS프록시, CDN 등이 있는데, 메인은 리버스, 포워드 이거기 때문에 넘어가겠다.
프록시의 장점
1. 익명성
클라이언트의 IP주소를 숨기고, 서버와의 직접 연결을 방지한다.
2. 보안 강화
네트워크 트래픽 감시 및 악성 요청을 차단한다.
3. 속도 향상
캐싱을 통해 서버 요청 횟수를 줄이고 응답 속도를 향상한다
4. 접근 제어
특정 웹사이트나 콘텐츠에 대한 접근 제한
5. 트래픽 분산
로드 밸런싱을 통해 서버 부하를 감소한다.
프록시의 단점
1. 속도 저하
모든 요청이 프록시를 거치기에 네트워크 지연이 발생한다.
2. 프라이버시 우려
누군가 악성 프록시를 만들어놨으면 내 데이터 다 털린다
3. 제한된 프로토콜 지원
특정 프로토콜만 지원하는 프록시가 있다.
VPN
VPN(가설 사설망)은 공용 네트워크를 통해 개인 테으쿼으를 안전하게 연결하는 기술이다. 사용자의 데이터 트래픽을 암호화 하고, 사용자의 실제 IP주소를 숨겨 네트워크 보안을 강화 하고 프라이버시를 보호한다.
1. 데이터 암호화
제 3자가 트래픽을 볼 수 없도록 보호한다. Wi-FI 에서 데이터를 안전하게 보호한다.
2. 익명성 제공
사용자의 IP주소를 VPN 서버의 IP로 대체하여 사용자의 위치와 신원을 숨긴다
3. 보안 강화
네트워크를 통해 전송되는 데이터를 보호하여 해커 및 스니핑 공격을 방지한다
4. 지역 제한 우회
다른 국가의 VPN 서버에 연결해 지역 제한 콘텐츠를 우회한다
5. 원격 접속
외부에서 회사 또는 가정의 네트워크에 안전하게 접속한다.
구분 | VPN | 프록시 |
역할 | 사용자의 전체 네트워크 트래픽을 암호화하여 보안과 익명성을 제공. | 특정 요청만 중계하여 IP를 숨기고, 요청을 대신 처리. |
작동 범위 | 전체 시스템: 모든 애플리케이션의 트래픽에 적용. | 개별 요청: 특정 브라우저 또는 애플리케이션에만 적용. |
주요 목적 | 보안 강화 및 전체 트래픽 보호. | 익명성 제공 및 요청 중계. |
에필로그
시험 좀 끝나고 실제 사용하는 프록시들 전부 정리 예정
'KnockOn' 카테고리의 다른 글
[3주차 TIL] KnockOn Bootcamp Apache (2) | 2024.12.20 |
---|---|
[1주차 TIL] KnockOn Bootcamp HTML, CSS, JS (0) | 2024.12.09 |
[1주차 TIL] KnockOn Bootcamp 패킷 (1) | 2024.12.06 |
[1주차 TIL] KnockOn Bootcamp 쿠키와 세션 (0) | 2024.12.05 |
[1주차 TIL] KnockOn Bootcamp HTTP/HTTPS (2) | 2024.12.04 |