Zakresy przekazywania portów w systemie Windows 7

1

Chciałbym poruszyć kilka zakresów na moim pulpicie Windows 7. W tym celu chciałbym użyć programu narzędziowego na komputery stacjonarne, ale nie mogłem znaleźć żadnego z wyjątkiem tego: http://www.quantumg.net/portforward.php

Jednak akceptuje numery portów, a nie zakresy portów. Więc jeśli muszę przekazać 10000 portów, będę musiał dodać 10 000 wpisów.

Czy jest lepszy sposób? Narzędzia wiersza poleceń i skrypty są tak dobre, jeśli są dostępne.

sharjeel
źródło
Co to jest twój router?
soandos
Dziwne pytanie: prześlij je dalej, skąd: gdzie router do komputera z systemem Windows 7? W jaki sposób korzystasz z oprogramowania? Czy masz komputer obsługujący routing, który następnie kierowałby do skrzynki systemu Windows 7? Musisz dodać więcej informacji, aby naprawdę uzyskać dobrą odpowiedź.
KCotreau
Moja skrzynka Windows 7 ma wiele kart sieciowych i kilka maszyn wirtualnych uruchomionych na nim. Chciałbym przekazać porty na moim pulpicie systemu Windows do niektórych maszyn wirtualnych na innej karcie sieciowej. Nie ma routera; poza tym, że skrzynka Windows to sam router.
sharjeel

Odpowiedzi:

3

Nie widziałem żadnych dobrych alternatyw, ale mam pomysł.

Wspomniany program pozwala załadować z pliku tekstowego zawierającego informacje o porcie, miejscu docelowym i porcie lokalnym.

Byłoby całkiem łatwo napisać program, który przekazuje te informacje do pliku tekstowego z pewnymi zakresami. Następnie możesz załadować plik tekstowy do wspomnianego programu przekierowania portów.

Oto program w Javie, który utknąłem razem (przepraszam, jestem początkującym programistą)

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();
    }
}

I tworzy z tego plik o nazwie output.txt:

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
...

Idzie od 50 do 100, a porty lokalne i docelowe są takie same. Zmodyfikuj go, jak chcesz.

James T
źródło
Wydaje się być dobrym rozwiązaniem. Jednak oryginalny program tworzy nowy wątek dla każdego przekierowania. Zatem posiadanie 20 000 przekierowań po prostu zabija system. Myślę, że potrzebuję do tego usługi niższego poziomu.
sharjeel
@sharjeel Możesz spróbować rinetd. Twierdzi, że jest w stanie wykonać więcej niż jedno przekierowanie portów na proces. boutell.com/rinetd
James T
Wątki nie są jednak procesami. Ale poprawne, 20 000 wątków zabiłoby także system
sinni800
3

Rozszerzając rozwiązanie Jamesa T, oto skrypt wsadowy:

coś.cmd

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

Wyjaśnienie:

  • 50 to numer początkowy
  • 1 jest krokiem dla każdej pętli
  • 100 to numer końcowy

Jeśli chcesz „przenieść” zakres portów w miejscu docelowym (np. 50-100 w źródle, 100-150 w miejscu docelowym), użyj tego skryptu wsadowego:

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

Zestaw linii /a dest=%%G+50 ustawia odległość od portów źródłowych.

Jeśli chcesz mieć dłuższy, ale łatwiejszy w utrzymaniu skrypt:

@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
źródło
Pięknie prosty mały skrypt
James T