Windows 7 com redirecionamento de porta interna, é possível?

9

Recebi uma solicitação de um de nossos desenvolvedores que estou tendo problemas para resolver.

Aqui no escritório eles usam desktops linux e eu posso encaminhar o localhost: 80 através de um iptables nat para localhost: 8080. O que eles querem é a mesma coisa em casa no Windows 7.

Entendi o que acho que são duas maneiras de fazer isso. Um para reconfigurar o servidor da web jboss e todos os URLs dos aplicativos da web (confusos). A outra é encontrar uma maneira de redirecionar / nat a porta 8080 do host local para a porta 80. Embora no Windows 7 não tenha certeza de como fazer isso.

Alguém tem alguma idéia de como fazer o segundo?

bdavenport
fonte

Respostas:

6

AFAIK, o Win7 não possui iptables equivalentes. Escrever um servidor que faça o que você deseja (escuta em uma porta, copia tudo de / para outro) deve ser fácil. Você pode encontrar um neste URL: http://www.quantumg.net/portforward.php (não testado). O uso de um proxy reverso (o Google é seu amigo) pode caber na conta do tráfego http. Verifique também esta publicação: /programming/3721000/port-forwarding-on-windows-7

Forma de vida alienígena
fonte
Doh, me sinto um idiota agora, esquecendo o termo proxy reverso. Assim que eu puder votar, votarei em você.
precisa saber é o seguinte
12

Sim, o Windows tem um iptables equivalente, é através da ferramenta netsh e da interface portproxy .

O comando para fazer o que você quer seria

netsh interface portproxy add v4tov4 listenaddress=YOUR_IP_HERE listenport=8080 connectaddress=YOUR_IP_HERE connectport=80 

Observe que isso só fará conexões IPv4, se você também quiser encaminhar conexões IPv6, também precisará fazer

netsh interface portproxy add v6tov6 listenaddress=YOUR_IP_HERE listenport=8080 connectaddress=YOUR_IP_HERE connectport=80
Scott Chamberlain
fonte
Isso será persistente nas reinicializações? Também os comandos são inválidos, como eu recebo um erro: "um ou mais essenciais parâmetros não foram definidos"
Sorin
@sorin ele persiste, eu uso isso em um sistema em que redireciono o RDP da porta padrão para uma porta fora do padrão e só preciso executar esse comando uma vez ao configurar uma nova VM. Quanto ao erro, você está correto eu esqueci um parâmetro para o endereço (que eu vê-lo fixo, obrigado!)
Scott Chamberlain
Em vez disso, usei add v4tov4 listenport=80 connectaddress=127.0.0.1 connectport=8080Supondo que você deseja escutar na porta 80 e redirecionar para um servidor não elevado em execução no 8080, é necessário alternar as portas de escuta e conexão. Se você deseja responder às solicitações de IP da rede e localhost, solte o endereço de escuta. E você pode redirecionar para 127.0.0.1 para evitar codificar seu endereço IP.
Carl Walsh
Outros comandos úteis são descritos nos documentos da Microsoft: docs.microsoft.com/en-us/windows-server/networking/technologies/… , por exemplo, para listar portproxies atuais ( netsh interface portproxy show v4tov4) ou excluir um postproxy ( netsh interface portproxy delete v4tov4 listenaddress=localhost listenport=80)
neXus
0

Eu acho que o Windows não tem iptables equivalentes. Comando

netsh interface portproxy ...

faça o proxy da porta, mas não o encaminhamento de pacotes. A principal diferença é

  • o desempenho é muito pior que o iptables (consulte https://plus.google.com/+OlafMonien/posts/fsjUjropYeR )
  • o endereço IP de origem é alterado para localhost (127.0.0.1 ou :: 1 depende da versão do IP), você perde o endereço IP de origem da solicitação original.

Estávamos usando essa técnica para encaminhar portas, mas após essas descobertas tivemos que usar regras extras no firewall da rede para evitar o uso de netsh.

Martin
fonte