1. 개요
Proxy server보통 Deric라고 부르며 클라이언트와 서버 사이에서 데이터를 전달해 주는 서버. 웹 캐시 기능이 있는 경우가 많으며, 방식에 따라 클라이언트의 IP 주소가 서버에게 노출될 수도 있고 아닐 수도 있다.
많은 사람들이 자신의 아이피를 세탁하고 차단을 우회하기 위한 도구로만 알고 있지만, 프록시 서버가 설치된 처음 목적은 웹 서핑을 비롯한 인터넷 속도의 향상이었다. 1990년대 후반까지만 해도 이런 목적으로 사용되었다. 현재 이 역할은 CDN이 하고 있다. 그리고 내부정보 보안이 필요한 다수의 기업에서 프록시서버를 이용해서 외부망에 접속한다.
트롤링 등의 IP 세척 도구로 애용되다 보니 안 좋은 이미지를 가지고 있는 사람도 있으나, 프록시 서버는 인터넷 검열이 심한 국가에서 그나마 내리쬐는 희망이다. 온라인 VPN 서버를 황금방패로 차단하려는 중국조차 Shadowsocks를 이용해 접근하려는 프록시는 못막아서 직접 개발자 집에 찾아가 소스코드를 지우라고 요구할 정도이니 말 다했다. 기타 대한민국과 같은 블랙리스트식 인터넷 검열을 하는 국가의 경우[1] 프록시 이용 자체를 막지는 않으므로 이를 잘 이용하면 검열을 우회하는 것이 이론적으로 가능하다.
좋게 쓰면 인터넷 검열로 고통받고 있는 사람들에게 한 줄기의 희망이 되어주지만, 나쁘게 쓰면 트롤링 하기 좋은 도구가 되는 양날의 검인 셈이다.
국립국어원 표준국어대사전에 따르면 proxy는 프락시로 표기해야 하지만 보통은 프록시로 표기한다. #
2. 역사
대한민국은 어지간한 통신회선이 전용선에다가 광랜까지 깔았고 백본 쪽은 대역폭만 수 기가에 달할 정도로 시원하게 뻥뻥 뚫려있지만, 아직도 전화선 같은 구리선 및 동축케이블을 이용하는 국가들은 사정이 많이 다르다. 특히 학교나 회사같은 내부의 LAN은 메가 단위의 고속 데이터통신이 가능하더라도, 외부로 나가는 회선의 속도는 매우 느린 경우가 많다. 따라서 많은 사람들이 웹 서핑을 시도하는 경우 가뜩이나 대역폭 좁은 회선을 여럿이 나눠써야 되니 인터넷 속도가 시궁창이 되어버리는 사태가 발생하였다. 이에 따라 제시된 해법이 바로 고속 데이터 통신이 가능한 건물 내부에 캐시를 두는 방법이었으며, 그 캐시 역할을 하는 것이 바로 프록시 서버이다.원리는 매우 간단하다. 예를 들어서 프록시 서버로 나무위키에 접속하려 한다면 다음과 같은 과정을 거친다.
- 누군가 웹 브라우저에 나무위키의 도메인을 입력.
- 요청은 내부에서 캐시 역할을 하는 프록시 서버로 전달.
- 프록시 서버는 우선 자신이 나무위키 홈페이지의 대문 페이지를 가지고 있는지 체크.
- 가지고 있지 않다면 외부회선을 통해 나무위키 홈페이지가 있는 서버와 연결하여 대문 페이지를 가져온다.
- 가지고 있다면 나무위키 홈페이지가 있는 서버에게 자신이 가진 페이지가 최신 버전인지 체크.
- 최신이 아닌 경우에는 새로 갱신된 부분을 가져옴.
이상의 과정을 마친 후에 프록시 서버는 사용자가 요청한 페이지를 제공하는 방식이다. 비유하자면 인터넷 페이지를 공동구매하는 방식이라고 할 수 있겠다. 즉, 외부로 나가는 느려터진 회선은 프록시 서버 혼자 사용하고, 사용자들은 빠른 LAN환경을 통해 프록시에만 요청하면 되므로 엄청난 속도 향상을 기대할 수 있었다. 실제 당시 환경을 상정하고 계산하면 프록시 서버가 없는 환경이라면 웹페이지 로딩에 몇 초 단위가 필요했지만, 프록시 서버를 설치한다면 그 시간이 밀리초 단위로 줄어들 정도로 엄청난 속도향상을 꾀할 수 있었다.
물론 이론적으로 그렇다는 것이고 현실적으로 그다지 이득을 보는 경우는 없었다. 그 이유는 우선 많은 사람들이 약속이라도 한 듯 동시에 웹 서핑을 요청하는 경우는 거의 없었기 때문에 회선이 미어터져서 느려지는 경우가 그리 많지 않았으며, 사용자 ↔ 웹 서버 구조와는 다르게 사용자 ↔ 프록시 서버 ↔ 웹 서버 구조로 두 번 통신을 하는 형태라서 종종 프록시 서버를 경유하는 경우가 오히려 더 느린 상황이 벌어지기도 하였다. 여기에다가 캐시는 같은 페이지를 반복 열람할 때 그 성능을 발휘할 수 있는데, 문제는 사람들이 저마다 보는 웹페이지가 다르고 반복되는 빈도가 낮다보니 요청이 들어올 때마다 페이지를 다시 받아오는 경우가 대부분이었다. 그래도 아직 통신망 구축 수준이 개차반인 국가들은 이 방식에 의존할 수밖에 없지만 대한민국은 차라리 선 하나 뽑는게 나은 상황.
프록시 서버에도 동작 방식에 따라서 크게 4가지 유형이 있다.
레벨 | 명칭 | 설명 |
1 | High Anonymity Proxy(또는 Elite) | HTTP 헤더에 프록시 정보를 아예 넣지않아 프록시를 사용하지 않는 것과 동일하게 동작한다. 따라서 서버에서는 프록시 사용유무를 알 수 없다. |
2 | Distorting Proxy | HTTP 헤더의 HTTP_VIA 영역에는 자신의 IP, HTTP_X_FORWARD_FOR 영역에는 랜덤으로 생성된 값을 박아서 자신이 프록시임을 알린다. 원래 IP는 제공되지 않는다. |
Simple Annonymous Proxy | HTTP 헤더의 HTTP_VIA, HTTP_X_FORWARD_FOR 영역에 자신의 IP를 박아서 자신이 프록시임을 알린다. 원래 IP는 제공되지 않는다. | |
3 | Transparent Proxy | HTTP 헤더의 HTTP_VIA, HTTP_X_FORWARD_FOR 영역에 원래 IP를 박는다. |
그외에 개인이 수정한 유형이 있긴 한데 전체적으로 저 넷에서 크게 벗어나지는 않는다. 그리고 프록시 레벨이 낮아질수록 유료로 서비스를 제공하는 경우가 많다. 유료인 만큼 다른 공개된 무료 프록시 서버에 비해 신뢰성이 보장된다.
3. 현황
3.1. 트롤러들의 도구
트롤링을 하는 트롤러들이 자신의 아이피를 세탁하거나 이런저런 사정으로 차단이 된 경우 우회접속하려고 VPN이나 프록시 서버를 쓰는 경우가 많다. 게다가 주로 사용하는 사람들이 어딘가 떳떳하지 못한 행동을 하는 경우가 많다보니 IP 체크 결과 프록시 IP로 밝혀지면 온갖 비아냥을 듣게 되는 경우도 있다. 게다가 프록시 IP를 이용하여 스팸 광고를 한다거나 해킹을 하려고 드는 사람들이 있어서 아예 프록시 IP는 접속을 막아버리는 사이트들도 많다.특히 온라인 게임이나 웹게임 같은 경우 다중계정 운용과 같은 부정행위를 막기 위해서 프록시 IP를 막아버리고, 만약 유저가 프록시 IP를 사용하고 있다가 적발되면 계정을 삭제하거나 영구정지시키는 등의 제재를 가하고 있다. 어쨌든 개발 의도는 좋았지만 실제 취급은 매우 안 좋다고 할 수 있다.
그렇다고 프록시 자체를 없애버릴 수는 없는 이유는 국내나 일부 국가들만큼 인터넷 인프라가 좋지 못한 국가나 지역들이 많아서 여전히 프록시 서버를 쓰는 게 인터넷 속도 향상에 도움이 되는 경우가 존재하기 때문이다. 또한 바로 아래 단락에도 나와있듯 인터넷 정보이용에 강한 통제권을 행사하는 몇몇 국가(이란, 중국 등.)에서 운동권측이 정부에 대항하여 자국의 실상을 외국에 알리기 위해 이용하는 경우도 많다.
가끔 트롤링을 하는 찌질이들이 프록시만 사용하면 완벽하게 IP가 세탁되고 절대 못잡는다면서 마구 행동하는 경우가 있는데 이는 크나큰 오산이다. 프록시 유형 설명에서 볼 수 있듯이 Transparent Proxy의 경우에는 아예 HTTP 헤더에 원래 IP 박고 나가기 때문에 서버 관리자가 언제든지 원래 IP를 알아낼수 있다. Annonymous Proxy 계열부터는 HTTP 헤더에는 원래 IP 정보가 제공되지 않지만 다 까발릴 수 있다. 한마디로 말해서 추적 자체는 약간의 기술력만 있으면 충분히 가능하다.
물론 IP는 개인정보보호대상이기 때문에 개인이 이짓하면 고소크리를 먹을 수 있기 때문에 알아내도 건드리지 않지만, 국내에서는 프록시 서버에 접속한 사람의 IP를 무조건 기록해야하므로 국내 경찰이 수색영장을 발부받고 수사에 착수하면 바로 추적당한다. 따라서 한국 프록시 서버는 누구들이 생각하는 수준의 절대적인 가면이 아니다.
외국에 소재한 프록시 서버의 경우에는 외국의 정식 수사기관(ex: 연방수사국 등)이 개입하면 추적할 수 있다. 하지만 어디까지나 외국의 프록시 서버 조회는 외국 경찰이 영장을 발급 받았을 경우에만 가능하다. 즉 외국의 검사가 기소할 수 있을 정도의 수준이 아닌 한국내 범죄(음란물 유포, 비방, 도박 등)에 대해서는 한국 경찰이 조사할 수 있는 권한이 없다고 봐야 한다. 특히 미국이나 스위스 같은 자국민의 자유와 권리에 민감한 나라에 위치한 프록시 서버는 연쇄 살인, 아동 포르노,테러리즘 등 국제적으로 보도된 사건이 아닌 경우에는 아예 조회요구에 대한 회신조차 하지 않는다.
다만, 연쇄 살인/테러리즘 등 현지 법을 어길 경우, 현지의 법조인을 고용해서 해당 국가의 사법기관에 직접 법적절차를 거치면 해당 국가의 사법기관이 직접 수사에 착수할 수 있으므로 얼마든지 정보조회 및 수사가 가능해진다.[2]
북한이나 소말리아, 아프가니스탄, 남극 같은 특이한 지역 몇은 이런 상황이 있더라도 추적하지 못할 수도 있다. 북한은 수사같은 걸 해줄 리가 없고, 소말리아와 아프가니스탄은 내전 중이라 수사를 할 수가 없으며 남극은 수사를 해줄 정부가 없는 지역이다.
넓은 의미로 나무위키에선 라이트 모드(지금은 막힘)도 프록시라고 볼 수도 있다.
3.2. 인터넷 검열에 대항하는 도구
트롤러들만 쓰는 것이 아니며 사실 이들보다 더 많은 수요가 있는 곳이 있다. 프록시 서버는 현재 인터넷 검열로 고통받고 있는 사람들이 가장 많이 사용하는 우회방식 중 하나다. 이보다 강력한 VPN은 암호화를 지원하는 전용 프로토콜이 수반되는 복잡한 구조 때문에 저사양 기기에서는 사용하기 어려우며, 운영 비용 또한 비싸서 VPN 업체들은 개발도상국 국민들이 지불하기 어려운 요금을 제시하는 경우가 많기 때문에 무료 서버가 많은 프록시가 가장 많이 사랑받는다.이를 좀 더 확장하여 한곳이 아닌 여러 서버를 거치도록 확장한 것이 Tor.
게다가 한국에서도 warning.or.kr의 악명이 날로 높아져 가고 있는 상황이니 이에 대항하고자 하는 사람들에게 있어 프록시 서버는 warning.or.kr의 마수에서 벗어나게 해 줄 구세주나 다름 없다.
3.3. 다운로드 속도 향상을 위한 도구
자세한 내용은 캐시 서버 문서 참고하십시오.외국 사이트에서 프로그램 등을 다운로드할 때 다이렉트로 다운로드할라치면 속도가 느려서 속이 터질 때가 있는데 이럴 때 외국 프록시로 한 다리 걸쳐서 다운로드하면 속도가 향상되는 경우가 있다.[3]
3.4. 그 외의 우회접속
웹 사이트에 따라서는 특정 국가로부터의 접속을 막아 놓은 사이트가 있는데 이럴 땐 막혀 있지 않은 국가의 프록시 서버를 이용해서 우회하면 접속할 수 있다.회사 보안 정책으로 인하여 비업무 사이트, 특정 커뮤니티 등이 방화벽에 의해서 막혀 있는 경우 이를 프록시 서버를 통해서 해결할 수 있다. 일반적으로 회사 보안 정책이 강하더라도 인터넷 포트(80, 443)와 SSH 포트(22)의 Outbound는 허용하고 있는 경우가 많아 이를 전제로 우회하는 방법은 아래와 같다.
- Chrome에서 localhost의 특정 포트(9999)로 TCP 데이터를 전송
- SSH client에서 특정 포트(9999)의 데이터를 dante 가 설치된 proxy 서버로 SSH tunneling을 통해서 데이터를 전송. 이 과정에서 SSH protocol이기 때문에 전송 데이터는 암호화됩니다.
- dante Proxy 에서 socks 포트로 데이터를 받아서 인터넷을 접속
3.5. 유동 IP와 프록시?
일반 랜선 연결의 경우 유동으로 IP가 사용자의 의사와 관련없이 며칠 간격으로 바뀌는 유동IP 시스템이 있는데, 하필이면 이 유동IP대역중 일부가 프록시 서버라 나무위키 이용시 나무위키 측에서 차단한 특정 프록시 대역이 걸리면 며칠전까지만 해도 멀쩡하게 되던 비로그인 편집이 안되기도 한다.물론 대부분 한국에 거주하면 한국내 프록시 서버로 할당되기 때문에 warning.or.kr 뜨는 사이트들이나 외국에서 한국IP대역 403 차단한 곳 등은 여전히 이용 불가능한 듯. IP문서 참조.
4. 리버스 프록시
Reverse proxy보통 클라이언트가 서버에 접속하기 위해 프록시 서버를 거치는것과 반대로. 서버측에서 미리 프록시를 이용하는 경우가 있는데 이를 리버스 프록시라고 한다. NAT 환경 또는 보안을 위해 분리된 인터넷망에 서버가 있을 경우에 내부 네트워크의 서버와 클라이언트를 이어주는 역할을 하며, 추가적으로 로드밸런싱 등을 담당하기도 한다. 클라우드플레어 서비스, NGINX 등이 리버스 프록시로 자주 이용된다.
5. 도서관 프록시
대학 도서관들은 문헌조사를 위해 관내에서 비싼 저널이나 그것보다도 비싼 웹 구독 서비스를 제공하고 있다. 가장 널리 쓰이는 화학 검색시스템인 SciFinder는 상업용 라이선스가 1년에 2천만원대부터 시작한다. 참고로 대학 구성원이 교외에서 이런 서비스를 이용하려면 돈을 주고 사든가, 아니면 학교로 달려오든가 하는 방법 밖에 없으니 학교 도서관에 프록시 서버를 만들어서 어디에 있든지 이런 유료 서비스를 공짜로 이용할 수 있도록 하고 있다.아무래도 컴덕을 위한 서비스가 아니다보니 초창기에는 ActiveX를 많이 사용했지만, 이후 웹 접근성 문제라든가 멀티플랫폼 지원이 화두가 되면서 차츰 웹 프록시 방식으로 바뀌고 있다. 이용 방법은 다니고 있는(혹은 다녔던) 대학교 도서관에 문의하면 알려준다.
6. TLS 연결 지원 프록시
주로 구형 컴퓨터를 위한 프록시로 주로 로컬 프록시 형태로 구동되는 애플리케이션과 특정 웹페이지에서 URL을 입력하여 접속하는 웹사이트도 있다.- Crypto Ancine - Classic Mac OS에서는 PowerMac Ten이 설치되어있어야 한다.
- WebOne - 특이하게도 YouTube 영상을 재생할수 있는 기능이 있다.
- Oviproxy - 원래는 구형 심비안 기기를 위한 웹 프록시지만 블랙베리나 구형 Android등도 지원한다. 유료로 운영되었으나 나중에 무료로 개방했다.
7. 관련 문서
- Shadowsocks
- VPN
- uProxy - 구글에서 개발하는 프록시. 인터넷 검열이 있는 나라를 위해 크롬과 파이어폭스 전용 프록시 우회 프로그램을 제작했는데 그게 바로 유프록시라고 한다. 공식 사이트.
- 프록스프리
- Ultrasurf
- 동타이왕 - 중국의 인터넷 검열인 황금방패를 우회하기 위해 중국어 및 영어로 배포하는 프록시 서버 접속 프로그램인 '프리게이트(Free Gate, 自由门)'를 배포하는 홈페이지.
- https://www.zaproxy.org/
8. Proxy 서버 설정 방법
무료/상용 Proxy 서버가 많지만, 개인 정보 유출이나 유료 서비스로 전환되는 경우가 있어 Proxy 서버를 직접 구축할 필요가 있다. 이를 위해서 구글 클라우드를 미국 Region에 만들고 이를 Proxy 서버로 활용하면 미국에서 인터넷 접속을 하는 것 처럼 웹 접속을 할 수 있다. Proxy 서버는 오픈소스의 Squid를 사용할 수 있다. 하지만 구글 클라우드 인스턴스를 만드는 것과 Squid proxy 프로그램을 구글 클라우드 인스턴스에 설치하는 것은 무료로 진행하더라도, 네트워크 트래픽을 이용하는데는 결국 요금이 청구된다.[4][5] 무료 프록시를 찾는다면 프록시 서버를 구글 클라우드에 직접 구축하는 것은 대안이 될 수 없다. 한편 자신이 쓰는 윈도우 PC에 프록시 서버를 구축하려면 IIS를 이용해서 구축 자체는 가능하나 차라리 윈도우 자체 기능으로 VPN을 구축하는 게 한참 쉽다.아래는 Squid 프록시를 우분투 서버에 설치하는 간략한 과정을 설명한다.
1. Squid 설치
$ sudo apt install squid
2. Squid 환경 설정 파일 편집:
기본적으로 squid.conf 파일에 규칙이 없으면 막혀있다. http_access deny all을 커멘트 처리하고 필요한 rule을 추가해야 한다.
$ vi /etc/squid/squid.conf
3. Google Cloud Platform에서 Proxy 방화벽 rule 추가 $ vi /etc/squid/squid.conf
#모든 IP 허용 (이 설정 시 보안 주의 바람)
http_access allow all
#익명 IP 필요시 아래 rule 추가
request_header_access From deny all
request_header_access Referer deny all
request_header_access User-Agent deny all
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Referer deny all
request_header_access User-Agent deny all
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
4. Client (우분투, Widnows, 스마트 폰) 에서 Network Proxy 설정
[1]
warning.or.kr도 모자라서 국가가 클라이언트 요청을 직접 가로채서 차단하는, 이른바 https 검열이라고 불리는
2019년 인터넷 검열 사건을 일으킨 바 있다.
[2]
명예훼손, 모욕죄 등 그 나라에 없는 법률을 이유로 청구하면 아무리 현지 법조인을 고용하더라도 회신을 거절한다.
[3]
혹은 해외 접속이 원활히 이뤄지고 있는 통신사 회선을 쓰고있는 국내 프록시 서버를 통해서 해외 사이트를 접속하는 경우 또한 포함한다.
[4]
https://cloud.google.com/vpc/network-pricing
[5]
한글로 열람할 수 있으나, 중요한 부분에서 번역이 제대로 안 된 부분이 있을 수 있고 알 수 없는 버그로 클라우드 리전에 따른 요금 테이블을 제대로 선택하여 볼 수 없으므로 주의.