다음을 통해 공유


NAT 및 방화벽 작업

네트워크 연결의 클라이언트와 서버에 통신을 위한 직접 및 열린 경로가 없는 경우가 자주 발생합니다. 패킷은 네트워크의 중간 컴퓨터와 엔드포인트 컴퓨터 모두에서 필터링, 라우트, 분석 및 변환됩니다. NAT(Network Address Translation) 및 방화벽은 네트워크 통신에 참여할 수 있는 일반적인 중간 애플리케이션의 예입니다.

WCF(Windows Communication Foundation) 전송 및 MEP(메시지 교환 패턴)는 NAT와 방화벽의 존재 여부에 따라 다르게 동작합니다. 이 항목에서는 NAT 및 방화벽이 일반 네트워크 토폴로지에서 작동하는 방식에 대해 설명합니다. 네트워크의 NAT 및 방화벽에서 애플리케이션을 더욱 강력하게 해주는 WCF 전송 및 MEP 조합에 대해 권장합니다.

NAT가 통신에 미치는 영향

여러 컴퓨터가 단일의 외부 IP 주소를 공유할 수 있도록 NAT를 만들었습니다. 포트 다시 매핑 NAT는 연결에 사용되는 내부 IP 주소와 포트를 새 포트 번호를 사용하여 외부 IP 주소에 매핑합니다. NAT는 새 포트 번호를 사용하여 반환 트래픽을 원래의 통신에 연결할 수 있습니다. 대부분의 개인 사용자는 개별적으로 라우팅 가능한 IP 주소를 가지고 있으며 NAT를 사용하여 전역 패킷 라우팅을 제공합니다.

NAT는 보안 경계를 제공하지 않습니다. 그러나 일반 NAT 구성에서는 내부 컴퓨터의 주소를 직접 지정할 수 없습니다. 이는 내부 컴퓨터의 원치 않는 연결을 방지하고 클라이언트에 데이터를 비동기적으로 다시 보내야 하는 서버 애플리케이션 작성을 어렵게 만듭니다. NAT는 패킷의 주소를 다시 기록하여 연결이 NAT 컴퓨터에서 시작된 것처럼 보이게 합니다. 이로 인해 클라이언트에 대한 연결을 다시 열려고 하면 서버가 실패합니다. 서버에서 클라이언트가 인식한 주소를 사용하는 경우 클라이언트 주소를 공개적으로 라우팅할 수 없기 때문에 서버가 실패합니다. 서버에서 NAT 주소를 사용하는 경우 해당 컴퓨터를 수신 대기하는 애플리케이션이 없기 때문에 서버가 연결되지 않습니다.

외부 컴퓨터에서 특정 내부 컴퓨터에 연결할 수 있도록 NAT에서 전달 규칙 구성을 지원하는 경우도 있습니다. 전달 규칙 구성에 대한 지침은 NAT마다 다르며, 대부분의 애플리케이션의 경우 최종 사용자에게 NAT 구성을 변경하도록 요청하지 않는 것이 좋습니다. 대부분의 최종 사용자는 특정 애플리케이션에 대해 NAT 구성을 변경할 수 없거나 변경하기를 원하지 않습니다.

방화벽이 통신에 미치는 영향

방화벽은 통과를 허용할지 여부를 결정하기 위해 전달되는 트래픽에 규칙을 적용하는 소프트웨어 또는 하드웨어 기기입니다. 트래픽의 들어오는 스트림 및/또는 나가는 스트림을 검사하도록 방화벽을 구성할 수 있습니다. 방화벽은 네트워크의 가장자리 또는 엔드포인트 호스트에서 네트워크에 대한 보안 경계를 제공합니다. 비즈니스 사용자는 일반적으로 악의적인 공격을 방지하기 위해 서버를 방화벽으로 보호합니다. Windows XP에서 개인 방화벽을 도입함에 따라 방화벽을 설치하는 개인 사용자 수 또한 크게 증가하였습니다. 대체적으로 연결의 한쪽 또는 양쪽 끝에 방화벽 검사 패킷이 있습니다.

방화벽은 패킷 검사의 복잡성과 기능이 매우 다양합니다. 간단한 방화벽은 패킷의 원본 및 대상 주소와 포트를 기반으로 규칙을 적용합니다. 지능형 방화벽은 패킷 내용을 검사하여 결정을 내릴 수도 있습니다. 이러한 방화벽은 다양한 구성으로 제공되며 특수 애플리케이션에서 사용되는 경우도 있습니다.

개인 사용자 방화벽의 일반적인 구성에서는 나가는 연결이 해당 컴퓨터에서 설정될 때까지 들어오는 연결을 금지합니다. 비즈니스 사용자 방화벽의 일반적인 구성에서는 특별히 식별된 그룹을 제외한 모든 포트에서 들어오는 연결을 금지합니다. 예를 들어, HTTP 및 HTTPS 서비스를 제공하기 위해 포트 80 및 443을 제외한 모든 포트에서 연결을 금지하는 방화벽이 있습니다. 개인 사용자와 비즈니스 사용자 모두에 컴퓨터의 신뢰할 수 있는 사용자 또는 프로세스에서 방화벽 구성을 변경할 수 있도록 허용하는 관리되는 방화벽이 있습니다. 관리되는 방화벽은 네트워크 사용을 제어하는 회사 정책이 없는 개인 사용자에게 더 일반적입니다.

Teredo 사용

Teredo는 NAT 뒤에서 컴퓨터의 주소를 직접 지정할 수 있는 IPv6 전환 기술입니다. Teredo는 잠재적 연결을 광고하기 위해 공개적이고 전역적으로 라우팅될 수 있는 서버를 사용합니다. Teredo 서버는 애플리케이션 클라이언트와 서버에 연결 정보를 교환할 수 있는 공통 만남 지점을 제공합니다. 컴퓨터는 임시 Teredo 주소를 요청하고 패킷이 기존 네트워크를 통해 터널링됩니다. WCF에서 Teredo를 지원하려면 운영 체제에서 IPv6 및 Teredo가 지원되도록 해야 합니다. Windows XP 이상 운영 체제에서는 Teredo를 지원합니다. Windows Vista 이상 운영 체제에서는 기본적으로 IPv6을 지원하므로 사용자가 Teredo를 사용하도록 설정하기만 하면 됩니다. Windows XP SP2 및 Windows Server 2003을 사용하려면 사용자가 IPv6 및 Teredo를 모두 사용하도록 설정해야 합니다. 자세한 내용은 Teredo 개요를 참조하세요.

전송 및 메시지 교환 패턴 선택

전송 및 MEP 선택은 3단계 프로세스입니다.

  1. 엔드포인트 컴퓨터의 주소 지정 기능을 분석합니다. 엔터프라이즈 서버에는 일반적으로 직접 주소 지정 기능이 있지만 최종 사용자의 경우 일반적으로 NAT에서 주소 지정 기능을 차단합니다. 두 엔드포인트가 모두 NAT 뒤에 있는 경우(예: 최종 사용자 간의 피어 투 피어 시나리오) Teredo와 같이 주소 지정 기능을 제공하기 위한 기술이 필요할 수 있습니다.

  2. 엔드포인트 컴퓨터의 프로토콜 및 포트 제한을 분석합니다. 엔터프라이즈 서버는 일반적으로 많은 포트를 차단하는 강력한 방화벽 뒤에 있습니다. 그러나 대체적으로 포트 80은 HTTP 트래픽을 허용하기 위해 열려 있고 포트 443은 HTTPS 트래픽을 허용하기 위해 열려 있습니다. 최종 사용자는 포트 제한이 적용되는 경우가 적지만, 나가는 연결만 허용하는 방화벽 뒤에 있을 수 있습니다. 일부 방화벽은 엔드포인트에서 애플리케이션에 의한 관리를 허용하여 연결을 선택적으로 열 수 있습니다.

  3. 네트워크의 주소 지정 기능 및 포트 제한이 허용하는 전송 및 MEP를 컴퓨팅합니다.

클라이언트-서버 애플리케이션의 일반 토폴로지에서 클라이언트는 아웃바운드 전용 방화벽이 설치된 Tredo 없는 NAT 뒤에 위치하고, 서버는 강력한 방화벽을 사용하여 직접 주소 지정할 수 있습니다. 이 시나리오에서는 이중 MEP를 사용하는 TCP 전송과 요청-회신 MEP를 사용하는 HTTP 전송이 제대로 작동합니다. 피어 투 피어 애플리케이션의 일반적인 토폴로지에서는 두 엔드포인트가 모두 NAT 및 방화벽 뒤에 있습니다. 이 시나리오와 네트워크 토폴로지를 알 수 없는 시나리오에서는 다음 권장 사항을 고려하십시오.

  • 이중 전송을 사용하지 마십시오. 이중 전송은 많은 연결을 열기 때문에 연결 성공 가능성이 낮아집니다.

  • 원래 연결에 대한 보조 채널 설정을 지원하십시오. 이중 TCP와 같은 보조 채널을 사용하여 적은 수의 연결을 열면 연결 성공 가능성이 높아집니다.

  • 엔드포인트 등록 또는 트래픽 릴레이를 위해 연결 가능한 서비스를 사용하세요. Teredo 서버처럼 전역적으로 연결 가능한 연결 서비스를 사용하면 네트워크 토폴로지가 제한적이거나 알 수 없는 경우 연결 성공 가능성이 크게 높아집니다.

다음 표에서는 WCF에서의 단방향, 요청-회신, 이중 MEP를 비롯하여 표준 TCP, Teredo 사용 TCP, 표준 및 이중 HTTP 전송에 대해 보여 줍니다.

주소 지정 기능 서버에서 직접 서버에서 직접(NAT 통과) 서버 NAT 서버 NAT(NAT 통과)
클라이언트에서 직접 모든 전송 및 MEP 모든 전송 및 MEP 지원되지 않습니다. 지원되지 않습니다.
클라이언트에서 직접(NAT 통과) 모든 전송 및 MEP 모든 전송 및 MEP 지원되지 않습니다. Teredo 사용 TCP 및 모든 MEP. Windows Vista에는 Teredo 사용 HTTP를 지원하는 시스템 수준의 구성 옵션이 있습니다.
클라이언트 NAT 모든 비이중 전송 및 MEP 이중 MEP에는 TCP 전송이 필요합니다. 모든 비이중 전송 및 MEP 이중 MEP에는 TCP 전송이 필요합니다. 지원되지 않습니다. 지원되지 않습니다.
클라이언트 NAT(NAT 통과) 모든 비이중 전송 및 MEP 이중 MEP에는 TCP 전송이 필요합니다. 이중 HTTP 및 모든 MEP를 제외한 모두. 이중 MEP에는 TCP 전송이 필요합니다. 이중 TCP 전송에는 Teredo가 필요합니다. Windows Vista에는 Teredo 사용 HTTP를 지원하는 시스템 수준의 구성 옵션이 있습니다. 지원되지 않습니다. Teredo 사용 TCP 및 모든 MEP. Windows Vista에는 Teredo 사용 HTTP를 지원하는 시스템 수준의 구성 옵션이 있습니다.
방화벽 제한 사항 열린 서버 관리되는 방화벽이 설치된 서버 HTTP 전용 방화벽이 설치된 서버 아웃바운드 전용 방화벽이 설치된 서버
열린 클라이언트 모든 전송 및 MEP 모든 전송 및 MEP 모든 HTTP 전송 및 MEP 지원되지 않습니다.
관리되는 방화벽이 설치된 클라이언트 모든 비이중 전송 및 MEP 이중 MEP에는 TCP 전송이 필요합니다. 모든 비이중 전송 및 MEP 이중 MEP에는 TCP 전송이 필요합니다. 모든 HTTP 전송 및 MEP 지원되지 않습니다.
HTTP 전용 방화벽이 설치된 클라이언트 모든 HTTP 전송 및 MEP 모든 HTTP 전송 및 MEP 모든 HTTP 전송 및 MEP 지원되지 않습니다.
아웃바운드 전용 방화벽이 설치된 클라이언트 모든 비이중 전송 및 MEP 이중 MEP에는 TCP 전송이 필요합니다. 모든 비이중 전송 및 MEP 이중 MEP에는 TCP 전송이 필요합니다. 모든 HTTP 전송 및 모든 비이중 MEP 지원되지 않습니다.