2009-09-12 2 views
1

포트 4000의 방화벽 뒤에있는 TcpListener 개체가 있습니다. 외부 클라이언트가 TcpListener에 연결하려면 포트 4000을 방화벽에서 열어야합니다. 그렇지 않으면 외부 연결 요청이 통과하지 않습니다.TcpListener.AcceptTcpClient 및 방화벽

TcpClient client = server.AcceptTcpClient(); 

하여 TcpClient가 시스템에 할당 된 포트 번호를 로컬 인터페이스에서 열립니다 :

내 문제는 내가 지금처럼 연결 요청을 받아 들일 때 발생과 관련이있다. 외부 클라이언트가이 TcpClient 인스턴스와 통신하려면이 포트 번호를 방화벽 내에서 열어야합니까? 그렇다면 미리 열 수 있도록 사용할 포트 번호 범위를 지정할 수 있습니까? 또는 방화벽 뒤에있는 항목 (이 경우 내 서버)이 연결을 수립했거나 수락했기 때문에 방화벽이이 시스템 할당 포트 번호로 통신을 자동으로 허용합니까? 서버 시스템에서

답변

1
  • 는 방화벽은 들어오는 연결 클라이언트가 포트 TcpListener에에서 연결되는 포트에서가 수신 대기 할 수 있도록해야합니다. 클라이언트 시스템에서

  • 는 방화벽은 클라이언트에서 연결하는 포트에서, 나가는 연결 포트 TcpListener-가 수신 대기 할 수 있도록해야합니다.

대부분의 방화벽 (예를 들어, Windows 방화벽) 모든 대상에 나가는 연결을 허용하도록 구성되어 있습니다, 그래서 당신은 어떤 소스에서 포트 4000에 들어오는 연결을 허용하는 규칙을 만들어야합니다.

이 값을 좀 더 가깝게 제한하려면 시스템 할당 포트 대신 TcpClient to a specific port을 바인딩하고 서버와 클라이언트에 방화벽 규칙을 만들어이 포트와의 연결 만 허용 할 수 있습니다.

0

Windows 방화벽에서 포트를 제공하는 것은 쉽지 않지만 Windows 방화벽에 새 항목을 추가 할 때 전체 프로그램을 허용 할 수 있습니다. 포트 대신 프로그램을 선택하고 선택한 포트와 관계없이 모든 연결을 수신하도록 프로그램에 권한을 부여하십시오. , 그것은 항상 허용됩니다.

+0

네, 맞습니다. 최악의 경우, 우리가가는 길일 수도 있습니다. 그러나 우리 IT 담당자는 가능하다면 IT 담당자가이를 더 가깝게 잠그는 것을 선호한다고 생각합니다. –

+0

우리도 같은 것을 선호하지만 Microsoft 방화벽은 포트 범위를 지정하는 것을 허용하지 않습니다. 이상하게 생각합니다. 나는 그들이 IAS 제품을 구입하기를 원합니다. 범위 기능이 있는지 여부는 알지 못합니다. 다른 방화벽이 제공하는 것에 동의합니다. 그러한 지원과 최고. –