Pergunta

Eu tenho um objeto TcpListener que está operando por trás de um firewall na porta 4000. Obviamente, para clientes externos para se conectar à TcpListener, porta 4000 precisa ser aberta no firewall; caso contrário, nenhum pedido de ligação fora iria passar.

A minha pergunta tem a ver com o que acontece quando aceito o pedido de ligação assim:

TcpClient client = server.AcceptTcpClient();

O TcpClient é aberto na interface local com um número de porta atribuído pelo sistema. Será que este número de porta tem que ser aberta dentro do firewall para que o cliente externo para se comunicar com essa instância TcpClient? Se assim for, é possível especificar um intervalo de números de porta a usar para que eles possam ser abertos com antecedência? Ou a permitir firewall automaticamente comunicação sobre este número de porta atribuído pelo sistema porque algo por trás do firewall (meu servidor, neste caso) estabelecida, ou seja, aceita a conexão?

Foi útil?

Solução

  • Na máquina do servidor, as necessidades de firewall para permitir conexões de entrada a partir do porto o cliente está se conectando, à porta do TcpListener está escutando.

  • Na máquina do cliente, as necessidades de firewall para permitir conexões de saída para a porta do TcpListener está escutando, a partir do porto o cliente está se conectando.

A maioria dos firewalls (por exemplo, o Firewall do Windows) estão configurados para permitir quaisquer conexões de saída para qualquer destino, então você apenas tem que criar uma regra que permite conexões de entrada na porta de 4000 a partir de qualquer fonte.

Se você quiser restringir isso mais de perto, você pode vincular a TcpClient para uma porta específica em vez da porta atribuído pelo sistema, e criar regras de firewall no servidor e do cliente para permitir apenas ligações de / para esta porta.

Outras dicas

Dar intervalo de portas no firewall do windows não é fácil, mas você pode conceder todo o programa, quando você adicionar nova entrada no Windows firewall, escolha programa em vez de porto e conceder o seu programa para receber todas as ligações, em seguida, independentemente de quais portas que você escolher, ele será sempre permitido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top