
Windows 7 デスクトップでいくつかの範囲をポート転送したいです。理想的には、この目的のためにデスクトップ ユーティリティを使用したいのですが、これ以外には見つかりませんでした。http://www.quantumg.net/portforward.php
ただし、ポート番号は受け入れられますが、ポート範囲は受け入れられません。したがって、10,000 個のポートを転送する必要がある場合は、10,000 個のエントリを追加する必要があります。
もっと良い方法はありますか? コマンドラインユーティリティとスクリプトは、利用できる場合は同様に有効です。
答え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%)