Windows 7中的端口转发范围


1

我想在Windows 7桌面上向前移动几个范围。理想情况下,我想为此目的使用桌面实用程序,但除了这个之外我找不到一个: http://www.quantumg.net/portforward.php

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

有没有更好的办法?如果可用,命令行实用程序和脚本也一样好。


你的路由器是什么?
soandos

奇怪的问题:端口将它们从哪里转发到哪里:路由器到你的Windows 7计算机?那你将如何使用软件?你有一台处理你的路由的计算机,然后路由到Windows 7盒子?您需要添加更多信息才能真正得到一个好的答案。
KCotreau

我的Windows 7盒子上有多个NIC和一些虚拟机。我想将Windows桌面上的端口转发到另一个NIC上的某些VM。没有路由器;除了Windows框是路由器本身。
sharjeel

Answers:


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,本地和目标端口是相同的。根据需要修改它。


看起来像一个OK'ish解决方案。但是,原始程序会为每个重定向生成一个新线程。因此,拥有20,000次重定向只会导致系统死亡。我想我需要一个较低级别的服务。
sharjeel

@sharjeel你可以尝试一下rinetd。它声称每个进程可以执行多个端口重定向。 boutell.com/rinetd
James T

但是线程不是进程。但是正确的,20.000个线程也会杀死系统
sinni800

3

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

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.