간단설명)
VPN을 통하여 일부의 프로그램 또는 일부의 사이트만 보내기 위해, 프록시 서버를 통과하는 패킷은 모두 VPN으로 보내도록 하는 설정입니다.
기존에 별도의 서버에서 'VPN 클라이언트' + '스퀴드 프록시 서버'의 조합으로 운용중이었으나,
새로 구입한 미크로틱에서 VPN의 속도가 충분히 나오기에 미크로틱만으로 작업해봤습니다.
주 사용용도)
다양하게 이용할 수 있지만 저는 유튜브 이용시 국가 변경을 위해 이용했습니다.
작업환경)
아무 미크로틱이나, hEX이상의 cpu성능이 나오는 장비에서의 이용을 추천드립니다.
필자의 환경...
MIkrotik hEX S ( https://mikrotik.com/product/hex_s ) - 기존의 hEX에 sfp포트가 하나 붙어있습니다.
작업순서)
1) VPN클라이언트를 구성한다. (winbox)
미크로틱으로 VPN클라이언트를 구성하는 것은 서버측의 호환성 문제로 약간의 삽질이 있었지만, 일단 용도에 맞는 해결법을 찾아 진행하였습니다.
PPP > Interface > VPN Client 구성.
이 과정에서 주의할 점은 VPN Client를 구성할 때 'Dial Out'항목에 있는 'Add Default Route'를 '체크 해제'하는 것 입니다.
----------------------------------------------------------------------------------------------------
2) 프록시 서버 설정하기
프록시 서버의 설정은 매우 간단합니다.
IP > Web Proxy >Enable에 체크.
이후에 추가적으로 용도에 맞게 설정하시면 됩니다.
ps. 저는 캐싱 기능을 원하지 않기에 캐시 크기를 none로 설정하였습니다.
----------------------------------------------------------------------------------------------------
3) 방화벽 설정. (라우팅 설정을 위한 설정)
프록시를 통해 나가는 패킷들이 무조건적으로 VPN을 통하여 나가도록 설정해야 합니다.
이 과정에서 좀 삽질이 있었지만 미크로틱의 패킷 처리과정을 확인하여 해결법을 찾았습니다.
(https://wiki.mikrotik.com/wiki/Manual:Packet_Flow)
Mangle의 Output 체인을 이용할 경우, 미크로틱의 외부에서 들어온 패킷이 아닌, 미크로틱에서 생성된 패킷에 대한 간섭이 가능합니다.
ex) 미크로틱 기기의 VPN연결이나, 프록시를 통해 나가는 패킷, 미크로틱의 DNS쿼리 등등...
-1. 미크로틱에 대상에서 제외할 목록을 추가합니다.
IP > Firewall >AddressList > VPN_Exception 이라는 리스트 추가. (이름은 알아서 변경하세요)
주의) 만약에 이용하시는 VPN이 443번이나 80번 포트를 사용한다면 리스트에 추가하세요.
-2. 방화벽에 규칙을 추가
IP > Firewall > Mangle > Mangle 룰 추가.
체인: output
목적지 포트: 80, 443 (웹페이지)
(주의) 목적지 주소 리스트: VPN_Exception 을 제외하고 나머지!!
<콘솔에서>
/ip firewall mangle
add action=mark-routing chain=output protocol=tcp dst-port=80,443 \
dst-address-list=!VPN_Exception new-routing-mark="ProxyOut" passthrough=no
----------------------------------------------------------------------------------------------------
4) 라우팅 룰 추가.
IP > Route > 룰 추가.
1. 게이트웨이를 처음에 추가한 VPN 클라이언트의 이름으로 설정한다. (드롭다운 매뉴에 표시된다.)
2. 라우팅 마스크를 아까 방화벽에서 추가한 라우팅 마스크로 설정한다.
3. 목적지 주소는 기본으로 설정된 0.0.0.0/0으로 설정한다. (모든 패킷을 보내기 원할경우. 기본설정)
완료.
추천 사용환경)
크롬에서 찾아보시면 'Proxy SwitchySharp'라는 플러그인이 있습니다.
이 플러그인은 한 페이지 내부의 컨텐츠라고 해도 원하는 URL에 대해서만 선택적으로 프록시를 이용하도록 해줍니다.
예를들어, 유튜브만 해외를 통하여 접속하시기를 원하신다면 그 주소를 해당 플러그인에 추가하시면 됩니다.
주의) 유튜브의 경우 유튜브만 추가해서는 소용이 없습니다. *.googlevideo.com을 꼭 같이 추가하셔야 합니다.
예제1,2) 간단, 심화
|