Windows 7 中的端口转发范围

Windows 7 中的端口转发范围

我想在 Windows 7 桌面上转发几个范围。理想情况下,我想使用桌面实用程序来实现此目的,但除了这个之外我找不到其他程序:http://www.quantumg.net/portforward.php

但是,它接受的是端口号,而不是端口范围。因此,如果我要转发 10000 个端口,就必须添加 10000 个条目。

有没有更好的方法?如果有命令行实用程序和脚本,那就更好了。

答案1

我没有看到任何好的替代方案,但我有一个想法。

您提到的程序允许您从包含端口、目的地和本地端口信息的文本文件中加载。

编写一个程序将此信息输出到给定范围的文本文件相当容易。然后您可以将文本文件加载到您提到的端口转发程序中。

这是我刚刚编写的一个 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,本地端口和目标端口相同。根据需要进行修改。

答案2

扩展 James T 的解决方案,这里有一个批处理脚本:

某物.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%) 

相关内容