WPAD (Web Proxy Autodiscovery Protocol)¶
Warning
미꾸라지 v4.3.15 버전부터 기본적으로 아이템에 설정된 중계 서버 혹은 Full VPN 모드 에 설정된 중계 서버만 연결이 됩니다. 나머지 중계 서버들은 명시적으로 연결 설정을 하지 않는 이상 연결하지 않습니다.
이로 인해 연결되지 않는 중계 서버 IP 를 WPAD 문법에 사용될 경우 연결이 안되는 이슈가 있을 수 있습니다. 이 문제를 해결하기 위해서는
- 종량제 요금제 사용자의 경우 Custom 아이템 제작 을 하여 중계 서버를 자동 연결되도록 할 수 있습니다.
- 혹은 Mudfish Launcher 상에서 “상태 -> 중계 서버” 메뉴에 들어가셔서 사용하시는 중계 서버를 클릭하면 뜨는 팝업창 상의 “연결 (Bind)” 버튼을 클릭하시면 임시적으로 (명시적으로) 해당 중계 서버와 연결이 됩니다.
소개¶
Web Proxy Auto-Discovery (WPAD) 프로토콜은 DHCP 혹은 DNS discovery 방법을 사용하여 사용자가 설정 파일의 URL 위치를 알 수 있도록 하는 방법중에 하나인데요, 이것이 작동하게 되면 브라우저는 자동으로 설정 파일을 다운로드 받아서 특정 URL 혹은 호스트에 대한 proxy 설정을 하게 됩니다. 사실 WPAD 프로토콜은 설정 파일을 어떻게 발견할 수 있을 까하는 방법론에 관한 것이 대부분이고 실제 설정 파일 포맷에 대허는 Proxy auto-config format 이 사용됩니다. 참고로 PAC 파일 포멧은 정말 옛날 브라우저인 Netscape Navigator 에서 처음 소개되었습니다.
미꾸라지에서 이 기능을 사용하실려면 전문가 모드 활성화할 경우 사용할 수 있습니다. WPAD 모드에 대해 자세한 내용은 아래의 섹션들을 참고해 주세요.
쉽게 따라하는 PAC 포맷 예제¶
처음 미꾸라지 UI 의 ‘설정 -> WPAD’ 메뉴에 들어가시면 아래와 같이 기본 설정이 들어가 있는데요, 이 내용을 수정하고 자신이 원하는 사이트를 넣음으로써 가속 적용 여부를 정할 수 있습니다.
/*
* 이 예제는 사용자가 아무런 rule 을 설정하지 않았을 때 나타나는 기본
* 설정 파일입니다.
*/
function FindProxyForURL(url, host) {
/* 모든 요청을 PROXY (SOCKS) 서버를 거치지 않고 직접 연결합니다. */
return "DIRECT";
}
예를 들어, 던전 파이터 홈페이지 (http://df.nexon.com) 와 블러드앤소울 홈페이지 (http://bns.plaync.com) 에 접속하는 부분을 미꾸라지 ‘KR Asia (S. Korea - KT2 IDC)’ 중계 서버를 통해 접속하고 나머지는 모두 직접 접속하고 싶을 때를 가정해 보겠습니다.
‘KR Asia (S. Korea - KT2 IDC)’ 중계 서버의 Public IP (14.63.185.131) 을 통해 접속을 하고자 한다면 아래와 같이 할 수 있습니다.
Note
현재 각 중계 서버는 Public IP 에 대해 아래와 같이 listening port 를 열고 있습니다.
- TCP 18080 (HTTP 프로토콜)
- TCP 18081 (SOCKS v5 프로토콜)
- TCP 18082 (HTTPS (SSL) 프로토콜)
Warning
Public IP 를 통한 방법은 브라우저가 SOCKSv5 계정 인증을 대부분 지원하지 않기 때문에 사용할 수 없습니다.
function FindProxyForURL(url, host) {
if (shExpMatch(host, "df.nexon.com"))
return "PROXY 14.63.185.131:18080";
if (shExpMatch(host, "bns.plaync.com"))
return "HTTPS 14.63.185.131:18082";
return "DIRECT";
}
‘KR Asia (S. Korea - KT2 IDC)’ 중계 서버의 Private IP (10.253.240.1) 을 통해 접속을 하고자 한다면 아래와 같이 할 수 있습니다.
Note
현재 각 중계 서버는 Private IP 에 대해 아래와 같이 listening port 를 열고 있습니다.
- TCP 8080 (HTTP 프로토콜)
- TCP 8081 (SOCKS v5 프로토콜)
function FindProxyForURL(url, host) {
if (shExpMatch(host, "df.nexon.com"))
return "PROXY 10.253.240.1:8080";
if (shExpMatch(host, "bns.plaync.com"))
return "SOCKS 10.253.240.1:8081";
return "DIRECT";
}
그럼 반대의 경우도 생각해 볼 수 있는데요, 특정 페이지를 제외한 모든 접속을 미꾸라지 특정 노드를 통해 접속하도록 할 수 있습니다.
function FindProxyForURL(url, host) {
/*
* 127.0.0.1 주소는 반드시 예외 처리를 해주셔야 합니다. 왜냐하면
* 해당 주소는 Mudfish Launcher 가 사용하는 주소 중의 하나이기
* 때문입니다.
*/
if (shExpMatch(host, "localhost") ||
shExpMatch(host, "127.0.0.1"))
return "DIRECT";
return "PROXY 10.255.96.1:8080";
}
Warning
모든 요청을 HTTP 혹은 SOCKS proxy 을 거치도록 설정을 하고 싶다면 반드시 127.0.0.1 주소와 localhost 주소는 예외 처리해 주셔야 합니다. 그렇지 않으면 브라우저 상에서 작동하는 MUDFISH Launcher 가 제대로 동작하지 않을 수 있습니다.
기타 아래의 각각 함수들의 사용법을 통해서 좀 더 유연하게 웹 페이지들의 주소를 설정할 수 있습니다.