Діапазони переадресації портів у Windows 7


1

Я хотів би перенести вперед кілька діапазонів на моєму робочому столі Windows 7. В ідеалі я хотів би скористатися цією утилітою для настільного комп'ютера, але не міг знайти жодного, окрім цього: http://www.quantumg.net/portforward.php

Однак він приймає номери портів, а не діапазони портів. Отже, якщо мені доведеться пересилати 10000 портів, мені доведеться додати 10 000 записів.

Чи є кращий спосіб? Утиліти командного рядка та скрипти є такими ж хорошими, якщо такі є.


Що таке маршрутизатор?
soandos

Дивний питання: портуйте їх звідки куди: Маршрутизатор до комп'ютера з Windows 7? Тоді як ви використовуєте програмне забезпечення? Чи є у вас комп'ютер, який обробляє вашу маршрутизацію, яка потім переходить до вікна Windows 7? Вам потрібно додати більше інформації, щоб дійсно отримати хорошу відповідь.
KCotreau

Моя коробка Windows 7 має декілька мережевих адаптерів і деякі віртуальні машини, що працюють на ній. Я хотів би передати порти на моєму робочому столі Windows певним віртуальним машинам на іншій NIC. Немає маршрутизатора; крім того, що вікно Windows є самим маршрутизатором.
sharjeel

Відповіді:


3

Я не бачив хороших альтернатив, але у мене є ідея.

Програма, яку ви згадали, дозволяє завантажувати з текстового файлу, заповненого даними про порт, місце призначення та локальний порт.

Було б досить легко написати програму, яка виводить цю інформацію до текстового файлу з деякими діапазонами. Потім ви можете завантажити текстовий файл у програму перенаправлення портів, про яку ви згадали.

Ось програма на Java, яку я просто злипли (вибачте, що я новачок-програміст)

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

І створює файл з назвою 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
...

Вона йде від 50 до 100, а локальні та цільові порти однакові. Змінюйте його, як бажаєте.


Схоже на те, що О'Кіш рішення. Однак оригінальна програма створює новий потік для кожного перенаправлення. Тому 20 000 переадресацій просто вбивають систему. Я думаю, що для цього потрібна послуга нижчого рівня.
sharjeel

@sharjeel Ви могли б дати rinetd спробувати. Вона стверджує, що може робити більше одного перенаправлення портів на процес. boutell.com/rinetd
James T

Теми не є процесами. Але правильно, 20.000 ниток також вб'ють систему
sinni800

3

Розширюючи рішення Джеймса Т, ось пакетний сценарій:

something.cmd

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

Пояснення:

  • 50 - початковий номер
  • 1 є кроком для кожного циклу
  • 100 - кінцеве число

Якщо ви хочете "перемістити" діапазон портів у пункті призначення (наприклад: 50-100 на джерелі, 100-150 за адресою призначення), скористайтеся цим сценарієм:

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

Лінійний набір /a dest=%%G+50 встановлює відстань від вихідних портів.

Якщо потрібно більше, але простіше підтримувати сценарій:

@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%) 

Красиво простий маленький сценарій
James T
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.