프록시 서버

 


1. 개요
2. 역사
3. 현황
3.1. 트롤러들의 도구
3.2. 인터넷 검열에 대항하는 도구
3.3. 다운로드 속도 향상을 위한 도구
3.4. 그 외의 우회접속
3.5. 유동 IP와 프록시?
3.6. 리버스 프록시
4. 도서관 프록시
5. 관련 문서
6. Proxy 서버 설정 방법


1. 개요


Proxy server.
보통 Deric라고 부르며 클라이언트와 서버 사이에서 데이터를 전달해 주는 서버. 웹 캐시 기능이 있는 경우가 많으며, 방식에 따라 클라이언트의 IP 주소가 서버에게 노출될 수도 있고 아닐 수도 있다.
많은 사람들이 자신의 아이피를 세탁하고 차단을 우회하기 위한 도구로만 알고 있지만, 프록시 서버가 설치된 처음 목적은 '''웹 서핑을 비롯한 인터넷 속도의 향상'''이었다. 1990년대 후반까지만 해도 이런 목적으로 사용되었다.
지금와서는 트롤링 등의 IP 세척 도구로 애용되다 보니 안 좋은 이미지를 가지고 있는 사람도 있으나, 프록시 서버는 '''인터넷 검열이 심한 국가에서 그나마 내리쬐는 희망'''이다. 물론 중국처럼 정말 짜내는 수준으로 검열을 하는 나라는 VPN조차 신뢰할 수 없으나, 이란, 사우디아라비아 등처럼 인터넷 검열에 아낌 없이 예산을 쏟아붓고 있는 나라는 없으므로, 프록시 서버만으로도 충분한 편. 좋게 쓰면 인터넷 검열로 고통받고 있는 사람들에게 한 줄기의 희망이 되어주지만, 나쁘게 쓰면 트롤링 하기 좋은 도구가 되는 양날의 검.
국립국어원 표준국어대사전 검색 결과에 따르면 proxy는 프락시로 표기해야 하지만 보통 통용은 프록시로 한다. #

2. 역사


대한민국은 어지간한 통신회선이 전용선에다가 광랜까지 깔았고 백본 쪽은 대역폭만 수 기가에 달할 정도로 시원하게 뻥뻥 뚫려있지만, 아직도 전화선 같은 구리선 및 동축케이블을 이용하는 국가들은 사정이 많이 다르다. 특히 학교나 회사같은 내부의 LAN은 메가 단위의 고속 데이터통신이 가능하더라도, 외부로 나가는 회선의 속도는 심히 캐안습인 경우가 많다. 따라서 많은 사람들이 웹 서핑을 시도하는 경우 가뜩이나 대역폭 좁은 회선을 여럿이 나눠써야 되니 인터넷 속도가 시궁창이 되어버리는 사태가 발생하였다. 이에 따라 제시된 해법이 바로 고속 데이터 통신이 가능한 건물 내부에 캐시를 두는 방법이었으며, 그 캐시 역할을 하는 것이 바로 프록시 서버이다.
원리는 매우 간단하다. 예를 들어서 프록시 서버로 나무위키에 접속하려 한다면 다음과 같은 과정을 거친다.
  1. 누군가 웹 브라우저나무위키의 도메인을 입력.
  2. 요청은 내부에서 캐시 역할을 하는 프록시 서버로 전달.
  3. 프록시 서버는 우선 자신이 나무위키 홈페이지의 대문 페이지를 가지고 있는지 체크.
  4. 가지고 있지 않다면 외부회선을 통해 나무위키 홈페이지가 있는 서버와 연결하여 대문 페이지를 가져온다.
  5. 가지고 있다면 나무위키 홈페이지가 있는 서버에게 자신이 가진 페이지가 최신 버전인지 체크.
  6. 최신이 아닌 경우에는 새로 갱신된 부분을 가져옴.
이상의 과정을 마친 후에 프록시 서버는 사용자가 요청한 페이지를 제공하는 방식이다. 비유하자면 인터넷 페이지를 공동구매하는 방식이라고 할 수 있겠다. 즉, 외부로 나가는 느려터진 회선은 프록시 서버 혼자 사용하고, 사용자들은 빠른 LAN환경을 통해 프록시에만 요청하면 되므로 엄청난 속도 향상을 기대할 수 있었다. 실제 당시 환경을 상정하고 계산하면 프록시 서버가 없는 환경이라면 웹페이지 로딩에 몇 초 단위가 필요했지만, 프록시 서버를 설치한다면 그 시간이 밀리초 단위로 줄어들 정도로 엄청난 속도향상을 꾀할 수 있었다.
물론 이론적으로 그렇다는 것이고 현실적으로 그다지 이득을 보는 경우는 없었다. 그 이유는 우선 많은 사람들이 약속이라도 한 듯 동시에 웹 서핑을 요청하는 경우는 거의 없었기 때문에 회선이 미어터져서 느려지는 경우가 그리 많지 않았으며, 사용자 ↔ 웹 서버 구조와는 다르게 사용자 ↔ 프록시 서버 ↔ 웹 서버 구조로 두 번 통신을 하는 형태라서 종종 프록시 서버를 경유하는 경우가 오히려 더 느린 상황이 벌어지기도 하였다(…). 여기에다가 캐시는 같은 페이지를 반복 열람할 때 그 성능을 발휘할 수 있는데, 문제는 사람들이 저마다 보는 웹페이지가 다르고 반복되는 빈도가 낮다보니 요청이 들어올 때마다 페이지를 다시 받아오는 경우가 대부분이었다. 그래도 아직 통신망 구축 수준이 개차반인 국가들은 이 방식에 의존할 수밖에 없지만 대한민국은 차라리 선 하나 뽑는게 나은 상황.
프록시 서버에도 동작 방식에 따라서 다음과 같은 유형이 있다.
  • Transparent Proxy : HTTP 헤더의 HTTP_VIA, HTTP_X_FORWARD_FOR 영역에 원래 IP를 박는다.
  • Simple Annonymous Proxy : HTTP 헤더의 HTTP_VIA, HTTP_X_FORWARD_FOR 영역에 자신의 IP를 박아서 자신이 프록시임을 알린다. 원래 IP는 제공되지 않는다.
  • Distorting Proxy : HTTP 헤더의 HTTP_VIA 영역에는 자신의 IP, HTTP_X_FORWARD_FOR 영역에는 랜덤으로 생성된 값을 박아서 자신이 프록시임을 알린다. 원래 IP는 제공되지 않는다.
  • High Annonymity Proxy(또는 Elite) : 프록시를 사용하지 않는 것과 동일하게 동작한다. 이건 아예 프록시인지 조차도 알 수 없다.
그외에 개인이 수정한 유형이 있긴 한데 전체적으로 저 넷에서 크게 벗어나지는 않는다. 그리고 High Annonymity에서도 특히 Elite라고 된 경우에는 유료로 서비스를 제공하는 경우가 많다. 유료인 만큼 다른 공개된 무료 프록시 서버에 비해 신뢰성이 보장된다.

3. 현황



3.1. 트롤러들의 도구


트롤링을 하는 트롤러들이 자신의 아이피를 세탁하거나 이런저런 사정으로 차단이 된 경우 우회접속하려고 쓰는 경우가 많다. 게다가 주로 사용하는 사람들이 어딘가 떳떳하지 못한 행동을 하는 경우가 많다보니 IP 체크 결과 프록시 IP로 밝혀지면 온갖 비아냥을 듣게 된다.[1] 게다가 프록시 IP를 이용하여 스팸 광고를 한다거나 해킹을 하려고 드는 사람들이 있어서 아예 프록시 IP는 접속을 막아버리는 사이트들도 많다.
특히 온라인 게임이나 웹게임 같은 경우 다중계정 운용과 같은 부정행위를 막기 위해서 프록시 IP를 막아버리고, 만약 유저가 프록시 IP를 사용하고 있다가 적발되면 계정을 삭제하거나 영구정지시키는 등의 제재를 가하고 있다. 어쨌든 개발 의도는 좋았지만 실제 취급은 매우 안 좋다고 할 수 있다.
그렇다고 프록시 자체를 없애버릴 수는 없는 이유는 국내나 일부 국가들만큼 인터넷 인프라가 좋지 못한 국가나 지역들이 많아서 여전히 프록시 서버를 쓰는 게 인터넷 속도 향상에 도움이 되는 경우가 존재하기 때문이다. 또한 바로 아래 단락에도 나와있듯 인터넷 정보이용에 강한 통제권을 행사하는 몇몇 국가(이란, 중국 등.)에서 운동권측이 정부에 대항하여 자국의 실상을 외국에 알리기 위해 이용하는 경우도 많다.
가끔 트롤링을 하는 찌질이들이 프록시만 사용하면 완벽하게 IP가 세탁되고 절대 못잡는다면서 마구 행동하는 경우가 있는데 '''이는 크나큰 오산이다.''' 프록시 유형 설명에서 볼 수 있듯이 Transparent Proxy의 경우에는 HTTP 헤더에 '''원래 IP 박고 나간다.''' 웹 스크립트 언어쪽을 좀 만질 줄 아는 사람이라면 얼마든지 원래 IP를 찍어낼 수 있다. Annonymous Proxy 계열부터는 HTTP 헤더에는 원래 IP 정보가 제공되지 않지만 다 까발릴 수 있다. 한마디로 말해서 추적 자체는 약간의 기술력만 있으면 충분히 가능하다.
물론 IP는 개인정보보호대상이기 때문에 개인이 이짓하면 고소크리를 먹을 수 있기 때문에 알아내도 건드리지 않지만, 국내에서는 프록시 서버에 접속한 사람의 IP를 무조건 기록해야하므로 국내 경찰이 수사에 착수하면 바로 추적당한다. 따라서 '''한국 프록시 서버는 누구들이 생각하는 수준의 절대적인 가면이 아니다.'''
외국에 소재한 프록시 서버의 경우에는 외국의 정식 수사기관이 개입하면 추적할 수 있다. 하지만 어디까지나 외국의 프록시 서버 조회는 '''외국 경찰이 영장을 발급 받았을 경우'''에만 가능하다. 즉 외국의 검사가 기소할 수 있을 정도의 수준이 아닌 한국내 범죄(음란물 유포, 비방, 도박 등)에 대해서는 한국 경찰이 조사할 수 있는 권한이 없다고 봐야 한다. 특히 미국이나 스위스 같은 자국민의 자유와 권리에 민감한 나라에 위치한 프록시 서버는 연쇄 살인, 아동 포르노,테러리즘 등 국제적으로 보도된 사건이 아닌 경우에는 아예 조회요구에 대한 회신조차 하지 않는다.
다만, 연쇄 살인/테러리즘 등 현지 법을 어길 경우, 현지의 법조인을 고용해서 해당 국가의 사법기관에 직접 법적절차를 거치면 해당 국가의 사법기관이 직접 수사에 착수할 수 있으므로 얼마든지 정보조회 및 수사가 가능해진다.[2]
북한이나 소말리아, 아프가니스탄 같은 특이한 지역 몇은 이런 상황이 있더라도 추적하지 못할 수도 있다.

그럼에도 불구하고, 한국에서조차 프록시 서버를 쓰는 사람들이 실제로 추적당해 잡히는 경우는 상당히 보기 힘든데, 그들을 추적해서 법정에 세우는 비용이 해당인에게서 얻어낼 수 있는 이득보다 크게 높기 때문이다. 한마디로 말해서 배보다 배꼽이 큰 상황으로, 중대한 사유가 있는 게 아니고서야 이런 종자들 몇 잡겠다고 금전적 손해를 감수하기는 어렵다. 다만, 한국 내에서 접속하는 한 프록시는 다 추적이 가능하고 외국에서 접속하더라도 그 나라 법률을 어기는 한 다 추적이 가능하므로 자신이 안전하다고 착각하고 나쁜 목적으로 프록시 서버를 쓰는 일이 없도록 하자.
넓은 의미로 나무위키에선 라이트 모드(지금은 막힘)도 프록시라고 볼 수도 있다.

3.2. 인터넷 검열에 대항하는 도구


트롤러들만 쓰는 것이 아니며 사실 이들보다 더 많은 수요가 있는 곳이 있다. 프록시 서버는 현재 인터넷 검열로 고통받고 있는 사람들이 '''가장 많이 사용하는 우회방식 중 하나다.''' 이보다 강력한 VPN은 암호화를 지원하는 전용 프로토콜이 수반되는 복잡한 구조 때문에 저사양 기기에서는 사용하기 어려우며, 운영 비용 또한 비싸서 VPN 업체들은 개발도상국 국민들이 지불하기 어려운 요금을 제시하는 경우가 많기 때문에 무료 서버가 많은 프록시가 가장 많이 사랑받는다.
이를 좀 더 확장하여 한곳이 아닌 여러 서버를 거치도록 확장한 것이 Tor. 그런 의미에서 프록시 서버로 트롤링을 하는 트롤러들은 이런 사람들이 써야할 트래픽을 쓸데없는 이상한 곳에 축내는 '''진정한 암덩어리로 여겨진다.'''
게다가 한국에서도 warning.or.kr의 악명이 날로 높아져 가고 있는 상황이니 이에 대항하고자 하는 사람들에게 있어 프록시 서버는 warning.or.kr의 마수에서 벗어나게 해 줄 구세주나 다름 없다. 그러니 그들을 위해서라도 트롤링의 용도로 프록시를 사용하지 말자.

3.3. 다운로드 속도 향상을 위한 도구



외국 사이트에서 프로그램 등을 다운로드할 때 다이렉트로 다운로드할라치면 속도가 느려서 속이 터질 때가 있는데 이럴 때 외국 프록시로 한 다리 걸쳐서 다운로드하면 속도가 향상되는 경우가 있다.[3]

3.4. 그 외의 우회접속


웹 사이트에 따라서는 특정 국가로부터의 접속을 막아 놓은 사이트가 있는데 이럴 땐 막혀 있지 않은 국가의 프록시 서버를 이용해서 우회하면 접속할 수 있다.
회사 보안 정책으로 인하여 비업무 사이트, 특정 커뮤니티 등이 방화벽에 의해서 막혀 있는 경우 이를 프록시 서버를 통해서 해결할 수 있다. 일반적으로 회사 보안 정책이 강하더라고 인터넷 포트(80, 443)와 SSH 포트(22)의 Outbound는 허용하고 있는 경우가 많아 이를 전제로 우회하는 방법은 아래와 같다. 상세방법
1. Chrome에서 localhost의 특정 포트(9999)로 TCP 데이터를 전송
2. SSH client에서 특정 포트(9999)의 데이터를 dante 가 설치된 proxy 서버로 '''SSH tunneling'''을 통해서 데이터를 전송. 이 과정에서 SSH protocol이기 때문에 전송 데이터는 암호화됩니다.
3.''' dante Proxy 에서 socks 포트'''로 데이터를 받아서 인터넷을 접속

3.5. 유동 IP와 프록시?


일반 랜선 연결의 경우 유동으로 IP가 사용자의 의사와 관련없이 며칠 간격으로 바뀌는 유동IP 시스템이 있는데, 하필이면 이 유동IP대역중 일부가 프록시 서버라 나무위키 이용시 나무위키 측에서 차단한 특정 프록시 대역이 걸리면 며칠전까지만 해도 멀쩡하게 되던 비로그인 편집이 안되기도 한다.
물론 대부분 한국에 거주하면 한국내 프록시 서버로 할당되기 때문에 warning.or.kr 뜨는 사이트들이나 외국에서 한국IP대역 403 차단한 곳 등은 여전히 이용 불가능한 듯. IP문서 참조.

3.6. 리버스 프록시


이런 연결구조가 나오게 된 이유는 바로 NAT 환경 때문이다. 공유기를 사용하게되면 포트할당으로부터 자유롭지 못하게 되는데 이 NAT 안에 위치한 컴퓨터가 아무런 개방설정 없이 서버로 작동하게끔 하는 기술이다. 클라우드플레어 서비스, NGINX 기능을 리버스 프록시라고 쓰기도 하는데 예네껀 그냥 프록시서버다.
A - NAT - 인터넷 - B 형태로 연결되고 기본적으로 B 가 서버가 되어야 하지만 이경우는 A 가 서버가된다. 하나의 과정이 더 첨가되는데 바로 A(가상아이피) 가 먼저 B(공인아이피)에 먼저 하나 이상의 연결을 하고 반대로 필요만큼 연결을 요청해서 통신할 수 있도록 한다. 주고받는 과정이 한번 더 생기지만 이런 환경에서는 터널링을 제외하는 1:1 UDP STUN 같은기법을 쓰지 않는한 거의 이 방법 뿐이다. TCP 연결만 써야 하는 이유는 보안 방화벽 때문.

4. 도서관 프록시


대학 도서관들은 문헌조사를 위해 관내에서 비싼 저널이나 그것보다도 비싼 웹 구독 서비스를 제공하고 있다. 가장 널리 쓰이는 화학 검색시스템인 SciFinder는 상업용 라이선스가 1년에 2천만원대부터 시작한다. 참고로 대학 구성원이 교외에서 이런 서비스를 이용하려면 돈을 주고 사든가, 아니면 학교로 달려오든가 하는 방법 밖에 없으니 학교 도서관에 프록시 서버를 만들어서 어디에 있든지 이런 유료 서비스를 공짜로 이용할 수 있도록 하고 있다.
아무래도 컴덕을 위한 서비스가 아니다보니 초창기에는 ActiveX를 많이 사용했지만, 이후 웹 접근성 문제라든가 멀티플랫폼 지원이 화두가 되면서 차츰 웹 프록시 방식으로 바뀌고 있다. 이용 방법은 다니고 있는(혹은 다녔던) 대학교 도서관에 문의하면 알려준다.

5. 관련 문서



6. Proxy 서버 설정 방법


무료/상용 Proxy 서버가 많지만, 개인 정보 유출이나 유료 서비스로 전환되는 경우가 있어 Proxy 서버를 직접 구축할 필요가 있다. 이를 위해서 구글 클라우드를 미국 Region에 만들고 이를 Proxy 서버로 활용하면 미국에서 인터넷 접속을 하는 것 처럼 웹 접속을 할 수 있다. Proxy 서버는 오픈소스의 Squid를 사용할 수 있다. 상세 설명은 해당 블로그에서 확인 바란다.
1. Squid 설치
$ sudo apt install squid
2. Squid 환경 설정 파일 편집:
기본적으로 squid.conf 파일에 규칙이 없으면 막혀있다. http_access deny all을 커멘트 처리하고 필요한 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


3. Google Cloud Platform에서 Proxy 방화벽 rule 추가
4. Client (우분투, Widnows, 스마트 폰) 에서 Network Proxy 설정

[1] 예시: 다 좋은데 프록시부터 끄고 오시죠?[2] 명예훼손, 모욕죄 등 그 나라에 없는 법률을 이유로 청구하면 아무리 현지 법조인을 고용하더라도 회신을 거절한다.[3] 혹은 해외 접속이 원활히 이뤄지고 있는 통신사 회선을 쓰고있는 국내 프록시 서버를 통해서 해외 사이트를 접속하는 경우 또한 포함한다.