Intervalos de encaminhamento de porta no Windows 7

1

Gostaria de avançar alguns intervalos no meu Windows 7 Desktop. Idealmente, gostaria de usar um utilitário de desktop para essa finalidade, mas não consegui encontrar um, exceto este: http://www.quantumg.net/portforward.php

No entanto, aceita números de porta e não intervalos de porta. Então, se eu tiver que encaminhar 10000 portas, terei que adicionar 10.000 entradas.

Existe uma maneira melhor? Os utilitários e scripts de linha de comando são tão bons quanto os disponíveis.

sharjeel
fonte
Qual é o seu roteador?
soandos
Pergunta estranha: Port encaminha-los de onde para onde: Um roteador para o seu computador com Windows 7? Então, como você usaria o software? Você tem um computador que está lidando com o roteamento que encaminharia para a caixa do Windows 7? Você precisa adicionar mais informações para realmente obter uma boa resposta.
KCotreau
Minha caixa do Windows 7 tem vários NICs e algumas máquinas virtuais em execução. Gostaria de encaminhar portas no meu desktop do Windows para determinadas VMs em outro NIC. Não há roteador; exceto que a caixa do Windows é um roteador.
sharjeel

Respostas:

3

Não vi alternativas boas, mas tenho uma ideia.

O programa que você mencionou permite carregar de um arquivo de texto preenchido com informações de porta, destino e porta local.

Seria muito fácil escrever um programa que envia essas informações para um arquivo de texto com alguns intervalos. Você pode então carregar o arquivo de texto no programa de encaminhamento de porta que você mencionou.

Aqui está um programa em Java que eu apenas colei (desculpe, eu sou um programador iniciante)

package portforwardranges;
import java.io.File;
import java.io.PrintWriter;

public class PortForwardRanges {

    PortForwardRanges(){
        try {
            PrintWriter pw = new PrintWriter(new File("output.txt"));
            for (int i = 50; i <= 100; i++){
            pw.print(i);
            pw.print(" 192.168.1.2 ");
            pw.print(i);
            pw.println();
            }

            pw.close();

        } catch (Exception ex) {
            System.out.println(ex);
        }
    }

    public static void main(String[] args) {
        PortForwardRanges app = new PortForwardRanges();
    }
}

E cria um arquivo chamado output.txt com isto:

50 192.168.1.2 50
51 192.168.1.2 51
52 192.168.1.2 52
53 192.168.1.2 53
54 192.168.1.2 54
...

Vai de 50 a 100 e os portos locais e de destino são os mesmos. Modifique como desejar.

James T
fonte
Parece uma solução OK'ish. No entanto, o programa original gera um novo thread para cada redirecionamento. Portanto, ter 20.000 redirecionamentos simplesmente mata o sistema. Eu acho que preciso de um serviço de nível mais baixo para isso.
sharjeel
@sharjeel Você poderia experimentar o rinetd. Ele afirma ser capaz de fazer mais de um redirecionamento de porta por processo. boutell.com/rinetd
James T
Tópicos não são processos embora. Mas correto, 20.000 threads também matariam o sistema
sinni800
3

Estendendo a solução de James T, aqui está um script em lote:

algo.cmd

FOR /L %G IN (50, 1, 100) DO ECHO %G 192.168.1.2 %G >> hi.txt

Explicação:

  • 50 é o número inicial
  • 1 é o passo para cada loop
  • 100 é o número final

Se você quiser "mover" o intervalo de portas no destino (ex: 50-100 na origem, 100-150 no destino) use este script em lote:

setlocal ENABLEDELAYEDEXPANSION 
FOR /L %%G IN (50, 1, 100) DO ( 
set /a dest=%%G+50 
ECHO %%G 192.168.1.2 !dest! >> hi.txt) 

O conjunto de linhas /a dest=%%G+50 define sua distância das portas de origem.

Se você quiser um script mais longo, mas mais fácil de manter:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set start=150
set step=5
set end=200
set destdistance=-50
set ip=192.168.1.2
set outputfile=output.txt


FOR /L %%G IN (%start%, %step%, %end%) DO ( 
set /a dest=%%G%destdistance%
ECHO %%G %ip% !dest! >> %outputfile%) 
sinni800
fonte
Pequeno roteiro maravilhosamente simples
James T