TcpListener.AcceptTcpClient и Firewall - PullRequest
       14

TcpListener.AcceptTcpClient и Firewall

1 голос
/ 12 сентября 2009

У меня есть объект TcpListener, который работает за брандмауэром через порт 4000. Очевидно, что для подключения внешних клиентов к TcpListener, порт 4000 должен быть открыт в брандмауэре; в противном случае ни один запрос на внешнее соединение не будет выполнен.

Мой вопрос связан с тем, что происходит, когда я принимаю запрос на соединение следующим образом:

TcpClient client = server.AcceptTcpClient();

TcpClient открывается на локальном интерфейсе с назначенным системой номером порта. Нужно ли открывать этот номер порта в брандмауэре, чтобы внешний клиент мог связаться с этим экземпляром TcpClient? Если это так, можно ли указать диапазон номеров портов, чтобы их можно было открыть заранее? Или брандмауэр автоматически разрешает связь через этот назначенный системой номер порта, потому что что-то за брандмауэром (в данном случае моим сервером) установило, то есть приняло, соединение?

Ответы [ 2 ]

2 голосов
/ 12 сентября 2009
  • На серверном компьютере брандмауэр должен разрешать входящие соединения от порта, к которому подключается клиент, к порту, который прослушивает TcpListener.

  • На клиентском компьютере брандмауэр должен разрешать исходящие соединения с портом, который прослушивает TcpListener, с порта, с которого соединяется клиент.

Большинство брандмауэров (например, брандмауэр Windows) настроены на разрешение любых исходящих подключений к любому месту назначения, поэтому вам просто нужно создать правило, разрешающее входящие подключения на порт 4000 из любого источника.

Если вы хотите ограничить это более строго, вы можете привязать TcpClient к определенному порту вместо назначенного системой порта и создать правила брандмауэра на сервере и клиенте, чтобы разрешать подключения только от / к этому порту.

0 голосов
/ 12 сентября 2009

Задать диапазон портов в брандмауэре Windows непросто, но вы можете предоставить всю программу, когда вы добавляете новую запись в брандмауэр Windows, выбираете программу вместо порта и предоставляете программе возможность получать все подключения независимо от того, какие порты вы выбрали это всегда будет разрешено.

...