프록시 구성 - xrath.com 에서 번역됨

# 프록시 구성

프록시 구성에서는, 다음의 토픽에 대해 설명합니다.

- 처음에
- Java Plug-in 와 Java Web Start 로 프록시 정보를 취득하는 방법
- 수동 프록시 구성
- 자동 프록시 구성
- `J2SE 5.0 에 있어서의 java.net.ProxySelectorAPI`

## 처음에

기업 커스터머에 있어, 기업내에서 시큐리티 보호된 컴퓨팅 환경을 설정하는 것은 중요하고, 프록시 구성은, 시큐리티 보호된 컴퓨팅 환경의 필수 요소입니다. 프록시 구성은, 시큐리티를 보호하는 방벽으로서 기능해, 프록시 서버-에 의해, 인터넷과 인트라넷간의 모든 트래픽이 감시되는 것을 보증합니다. 이것은, 일반적으로, 인트라넷 내부의 기업 방화벽(fire wall)에 의해 시행되는 시큐리티 보호의 불가결한 부분입니다. 인트라넷 Web 페이지로, 애플릿을 배치하는데 Java Plug-in 를 사용하거나 어플리케이션을 실행하는데 Java Web Start 를 사용하거나 하는 것을 바라는 기업 커스터머는, 프록시 지원도 설정할 수가 있습니다. 이 지원는, Java Plug-in 나 Java Web Start 가 인트라넷 환경에서 기능하기 위해서 필요한 것으로,Java 컨트롤 패널을 개입시켜 설정할 수 있습니다.

## Java 컨트롤 패널

Java 컨트롤 패널에서는,[네트워크 설정] 서브 패널에 다음의 4 개의 프록시 옵션이 있습니다.

- [브라우저의 설정을 사용]
- [프록시 서버-를 사용]
- [자동 프록시 설정 스크립트를 사용]
- [직접 접속]

### [브라우저의 설정을 사용]

[브라우저의 설정을 사용] 을 선택했을 경우, 프록시 정보는 완전하게 브라우저를 개입시켜 입력됩니다. Internet Explorer 의 경우는,[툴]>[인터넷 옵션] 으로 [접속] 탭을 열어,[근거리 통신망 (LAN)의 설정] 을 선택합니다. Netscape 의 경우는,[편집]>[설정] 으로 [카테고리] 아래의 [상세] 를 선택해,[프록시] 를 선택합니다. 이 기능 방법과 브라우저를 개입시켜 설정되는 3 개의 타입의 접속 (직접, 수동, 및 자동)에 대해서는, 이하의 섹션으로 설명합니다.

### [프록시 서버-를 사용]

Java 컨트롤 패널로 [프록시 서버-를 사용] 을 선택했을 경우, 2 개의 선택사항이 있습니다.

1. 프록시 서버-의 [주소] 와 [포트] 를 설정해, 로컬 주소에 대해서는 프록시 서버-를 우회도로 하는 옵션을 선택한다
2. [HTTP],[Secure],[FTP],[Socks] 의 각 접속에 대해서, 개별적으로 프록시 서버-를 설정한다. 프록시 서버-를 사용하지 않게 하는 주소의 일람을 지정할 수 있다

### [자동 프록시 설정 스크립트를 사용]

[자동 프록시 설정 스크립트를 사용] 을 선택했을 경우,`FindProxyForURL(URL url)` 라는 이름의 JavaScript 의 위치를 나타내는 URL 를 입력하지 않으면 안됩니다. 이 JavaScript 에 의해 반환되는 프록시 서버-가 URL 에 사용됩니다. 이 스크립트에 대한 지원는, 이하의 「자동 프록시 구성」으로 설명하는 내용과 같습니다.

### [직접 접속]

직접 접속에서는 프록시를 사용하지 않습니다. 모바일 사용자가 모뎀을 개입시켜 회사에 접속하는 것 같은 특정의 상황에서는, 인트라넷 환경에의 직접 접속이 필요하게 됩니다. 이러한 경우에는, 프록시는 사용해야 하지는 않습니다.

## Java Plug-in 와 Java Web Start 로 브라우저로부터 프록시 정보를 취득하는 방법

브라우저의 플랫폼이 다르면(자), 프록시 정보를 포함하는 방법도 다르기 (위해)때문에, 프록시 정보를 취득하는 범용적인 방법은 없습니다. 브라우저와 플랫폼의 편성 2 종류에 의해, 프록시 정보를 취득하는 방법을 설명합니다.

Microsoft Internet Explorer:Internet Explorer 에서는, 프록시 정보는 Windows 레지스트리의 같은 키 세트내에 포함됩니다. Java Plug-in 와 Java Web Start 에서는, 이 정보를 레지스트리로부터 직접 추출합니다.

Mozilla:Mozilla 에서는, 프록시 정보를 로컬 머신의 사용자 프로필 디렉토리내의 설정 파일에 포함합니다. 또, 프록시 정보를 특정하기 위한 공개 API 를 이용할 수 있습니다. Java Plug-in 에서는 Mozilla 의 공개 API 를 사용해, Java Web Start 에서는 설정 파일을 읽어내 해석해, 프록시 정보를 가져옵니다.

Netscape Navigator:Navigator 에서는, 프록시 정보를 로컬 머신의 사용자 프로필 디렉토리내의 설정 파일에 포함합니다. Java Plug-in 와 Java Web Start 에서는, 이 파일을 읽어내 해석해, 프록시 정보를 가져옵니다.

Java Plug-in 와 Java Web Start 에서는, 프록시 정보를 기동시에 가져옵니다. Java Plug-in 또는 Java Web Start 의 기동 후에 프록시 설정을 변경했을 경우, Java 콘솔의 p 옵션을 사용해, 프록시 정보를 강제적으로 재로드합니다. Java Web Start 는 어플리케이션 마다 재기동하기 위해(때문에), 이후의 기동시에는 자동적으로 새로운 프록시 정보가 사용됩니다.

## 수동 프록시 구성

Internet Explorer, Mozilla, 및 Netscape Navigator 에서는 수동 프록시 구성이 지원됩니다. 사용자는 각 프로토콜에 대해 프록시 서버-와 포트를 지정할 수가 있습니다. 또, 사용자는, 1 개의 프록시 서버- 및 모든 프로토콜용의 포트를 지정할 수도 있습니다. 인트라넷 환경내에서 2 개의 머신을 접속하는 경우에, 프록시 서버-의 부하를 최소한으로 억제하기 (위해)때문에, 프록시 서버-를 완전하게 무시하는 사이트가 있습니다. 이것을 실시하는 경우, 네트워크 관리자 및 사용자는, 브라우저의 프록시 설정으로 프록시 서버-의 우회도로 리스트를 지정합니다.

Internet Explorer:Java Plug-in 와 Java Web Start 에서는, 이 프로토콜에 관련지을 수 있었던 프록시 서버- 및 포트 설정을 인식 및 지원합니다. IE 는, 프록시 서버-우회도로 리스트내의 다양한 구문을 지원합니다. 다음에 그 구문을 나타냅니다.

- IP 주소/호스트명만
- IP 주소/와일드 카드를 포함한 호스트명
- IP 주소/호스트명 및 프로토콜

예를 들어, 프록시 서버-우회도로 리스트에`「121.141. 23.5;*.eng;http://*.com」`를 지정하면(자), 다음의 경우, 항상 브라우저는 프록시를 우회도로 합니다.

- 「`121.141. 23.5`」가 요구되었을 경우
- URL 호스트명이 `". eng"` 로 끝나는 경우
- URL 프로토콜이 `http` 로, URL 호스트명이 `". com"` 로 끝나는 경우

현재로서는, Java Plug-in 와 Java Web Start 로 지원하는 것은, IE 의 프록시 서버-우회도로 리스트의 최초의 2 개의 구문입니다. 게다가 IE 에서는, 프록시 서버-우회도로 리스트를 사용하지 않는, 로컬 (인트라넷) 주소용 프록시 서버-의 우회도로도 지원됩니다. Java Plug-in 와 Java Web Start 에서는, URL 호스트명이 프레인인 (즉, 호스트명에 「.」(이)가 포함되지 않는다) 경우, 프록시 서버-를 우회도로 하는 것으로써, 이 옵션을 지원합니다.

Mozilla 와 Netscape Navigator:Java Plug-in 와 Java Web Start 에서는, 이 프로토콜에 관련지을 수 있었던 프록시 서버- 및 포트 설정을 인식 및 지원합니다. 예를 들어, Mozilla 의 프록시 서버-파이 패스 리스트에 「`. eng,. sun.com`」를 지정하면(자), URL 호스트명이 「`. eng`」또는 「`. sun.com`」로 끝나는 경우, 항상 프록시가 우회도로 됩니다. Java Plug-in 와 Java Web Start 에서는, Mozilla 와 Navigator 의 프록시 서버-우회도로 리스트내에서, 이 구문을 풀 지원합니다.

사용하는 브라우저에서의 수동 프록시 구성의 자세한 것은, 브라우저의 사용자 가이드를 참조해 주세요.

## 자동 프록시 구성

자동 프록시 구성은 브라우저내에서, 확장자(extension)가 `. pac` 또는 `. js` 의 JavaScript 파일을 포함한 특정의 URL 를 설정하는 것으로 지원됩니다. 이 파일에는,`FindProxyForURL` 라고 하는 함수가 포함됩니다. 이 함수에는, 브라우저가 접속 요구를 수신할 때, 어느 프록시 서버-를 사용할까를 결정하는 논리가 포함됩니다. 이 함수는, 특정의 인트라넷 환경에서, 시스템 관리 책임자에 의해 기술됩니다. 브라우저는, 기동시에 JavaScript 파일의 URL 를 인식해, 직접 접속을 사용해 로컬 머신에 다운로드합니다. 그 후, 신규 접속을 확립할 필요가 있는 경우, 브라우저는 항상 JavaScript 파일내의 `FindProxyForURL` JavaScript 함수를 실행해 프록시 정보를 취득해, 접속을 설정합니다.

### Java Plug-in

Internet Explorer:기동시에, Java Plug-in 는, 직접 접속을 사용해 JavaScript 파일을 로컬 머신에 다운로드합니다. 그 후, 접속의 신규 확립이 필요하게 될 때마다,`FindProxyForURL` 함수가 실행되어 Internet Explorer 의 JavaScript 엔진을 사용해 프록시 정보의 취득을 합니다.

Mozilla/Netscape Navigator:기동시에, Java Plug-in 는, 직접 접속을 사용해 JavaScript 파일을 로컬 머신에 다운로드합니다. 그 후, 접속의 신규 확립이 필요하게 될 때마다,`FindProxyForURL` 함수가 실행되어 Mozilla 나 Navigator 의 JavaScript 엔진을 사용해 프록시 정보의 취득을 합니다.

### Java Web Start

Windows:기동시에, Java Web Start 는, 직접 접속을 사용해 JavaScript 파일을 로컬 머신에 다운로드합니다. 그 후, 접속의 신규 확립이 필요하게 될 때마다,`FindProxyForURL` 함수가 실행되어 Internet Explorer 의 JavaScript 엔진을 사용해 프록시 정보의 취득을 합니다.

Linux/Solaris:기동시에, Java Web Start 는, 직접 접속을 사용해 JavaScript 파일을 로컬 머신에 다운로드합니다. 그 후, 접속의 신규 확립이 필요하게 될 때마다,`FindProxyForURL` 함수가 해석되어 가장 적절한 정보가 추측되어, 프록시 정보의 취득을 합니다.

### `FindProxyForURL` 에 대해

JavaScript 엔진에 대해, 모든 플랫폼의 Java Plug-in 와 Windows 상의 Java Web Start 에 대해서, 다음일항이 들어맞읍니다.

1. JavaScript 함수 `FindProxyForURL` 로부터 호출해 가능한, JavaScript 헬퍼함수가 다수 존재합니다. Java Plug-in 와 Java Web Start 는, 이러한 함수의 독자 구현을 제공해, 자동 프록시 구성을 완전하게 에뮤레이트 합니다. 이러한 헬퍼 함수의 구현에 대해서는, 다음일(무늬)격에 주의해 주세요.
   - `dnsResolve` 함수는, 호스트가 IP 주소가 아닌 경우, 항상 빈 상태(empty)의 캐릭터 라인을 돌려준다
   - `isResolvable` 함수는, 호스트가 IP 주소가 아닌 경우, 항상 false 를 돌려줍니다.
   - `isInNet` 함수는, 호스트가 IP 주소가 아닌 경우, 항상 false 를 돌려줍니다.
2. `FindProxyForURL` 함수를 실행하는 경우, 프록시 정보가 항상 캐릭터 라인으로서 돌려주어집니다. Java Plug-in 와 Java Web Start 에서는, 다음의 방법으로 설정을 추출합니다.
   - 캐릭터 라인에 「`DIRECT`」가 포함되는 경우, Java Plug-in 와 Java Web Start 는 직접 접속이라고 본다
   - 캐릭터 라인에 「`PROXY`」가 포함되는 경우, 최초의 프록시 설정을 접속에 사용한다
   - 캐릭터 라인에 「`SOCKS`」가 포함되는 경우, SOCKS 버젼 4 를 접속에 사용한다
   - 그 이외의 경우, 캐릭터 라인내의 프록시 정보는 부정합니다. 이 경우, Java Plug-in 와 Java Web Start 는 직접 접속이라고 본다

사용하는 브라우저에서의 자동 프록시 구성의 자세한 것은, 브라우저의 사용자 가이드를 참조해 주세요.

## J2SE 5.0 에 있어서의 `java.net.ProxySelector` API

지정된 호스트의 프록시 설정을 특정해야 하는 것이 있습니다. 프록시 설정을 조사하는 것으로, 적절한 프록시 서버-를 통해서 호스트에게 접속하기 위한 코드를 보다 적절히 기술할 수가 있습니다. J2SE 5.0 에서는, 프록시 설정을 지원하는 새로운 API 로서 `java.net.ProxySelector` 가 있습니다. 다음은 간단한 코드의 예입니다.

> `private Proxy findProxy(URI uri)
> {`
> `try
> {
> ProxySelector selector = ProxySelector.getDefault();
> List<Proxy> proxyList = selector.select(uri);`
> `if (proxyList.size() > 1)
> return proxyList.get(0);
> }
> catch (IllegalArgumentException e)
> {
> }`
> `return Proxy.NO_PROXY;
> }`