都有什么功能?
一键 显示列表
一键 添加转发
一键 删除转发
不借助第三方工具,纯批处理(明文可查阅),调用Windows自带命令实现。
注意此工具仅支持 IPV4转发到IPV4 ,并且只支持TCP协议,因为自带的netsh转发命令也仅支持TCP,不是我不想写。
默认添加 或 删减 转发规则,都会格外添加一条防火墙放行端口规则,或添加 或删除。
当你添加相对应端口转发规则,也会同时在防火墙添加一条放行此端口进入的规则。
当你删除相对于端口转发规则,也会同时删除防火墙对应端口规则。
@echo OFF
::网址:nat.ee
::QQ群:6281379
::TG群:https://t.me/nat_ee
::批处理:荣耀&制作 QQ:1800619
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
setlocal EnableDelayedExpansion
pushd "%~dp0"
:menu
title 主菜单-v4tov4-端口代理转发
CLS
ECHO.
ECHO 1.显示端口代理转发
ECHO.
ECHO 2.添加代理端口转发
ECHO.
ECHO 3.删除代理端口转发
ECHO.
ECHO 4.退出
ECHO.
choice /C:1234 /N /M "请输入你的选择[1,2,3,4]":
if errorlevel 4 exit
if errorlevel 3 goto:deleteproxy
if errorlevel 2 goto:addproxy
if errorlevel 1 goto:showproxy
:showproxy
title 显示-v4tov4-端口代理转发
CLS
SET count=0
for /f "skip=5 tokens=1,2,3,4" %%a in ('netsh interface portproxy show v4tov4') do (
SET /A count+=1
ECHO !count!. 侦听ipv4: %%a 端口: %%b 连接到ipv4: %%c 端口: %%d
)
ECHO.
ECHO 按任意键返回主菜单……
PAUSE >NUL
GOTO:menu
:addproxy
title 添加-v4tov4-端口代理转发
CLS
SET listenaddress=127.0.0.1
SET listenport=
SET connectaddress=
SET connectport=
SET test1=
ECHO 输入值,按回车键(Enter)
ECHO 输入 ^"0^" 返回主菜单
ECHO.
ECHO 侦听 ipv4地址留空,将使用 %listenaddress%
SET /p listenaddress=侦听 ipv4地址:
IF "%listenaddress%" == "0" (GOTO:menu)
ECHO.
ECHO 侦听端口不能输入已存在或被其他服务所占用的端口
SET /p listenport=侦听端口(1-65535):
IF "%listenport%" == "0" (GOTO:menu)
ECHO.
SET /p connectaddress=连接到ipv4地址:
IF "%connectaddress%" == "0" (GOTO:menu)
ECHO.
SET /p connectport=连接到端口(1-65535):
IF "%connectport%" == "0" (GOTO:menu)
ECHO.
for /f %%i in ('netsh interface portproxy add v4tov4 "listenport=%listenport%" "listenaddress=%listenaddress%" "connectport=%connectport%" "connectaddress=%connectaddress%" ^|find "protocol"') do (SET test1=%%i)
IF "!test1!" == "" (
netsh advfirewall firewall add rule name="PortProxy-%listenport%" dir=in action=allow protocol=TCP localport=%listenport% 1>nul 2>nul
ECHO 添加成功。
)
IF "!test1!" == "protocol" (
ECHO 添加失败,请重试。
TIMEOUT 3 >NUL
GOTO:addproxy
)
ECHO.
ECHO 按任意键继续……
PAUSE >NUL
GOTO:addproxy
:deleteproxy
title 删除-v4tov4-端口代理转发
CLS
SET count=0
SET input=
SET test2=
for /f "skip=5 tokens=1,2,3,4" %%a in ('netsh interface portproxy show v4tov4') do (
SET /A count+=1
ECHO !count!. 侦听ipv4: %%a 端口: %%b 连接到ipv4: %%c 端口: %%d
SET ip!count!=%%a
SET port!count!=%%b
)
ECHO.
ECHO 输入 ^"0^" 返回主菜单
SET /p input=请输入要删除的序列号,按回车键(Enter):
IF "!input!" == "" (GOTO:deleteproxy)
IF "!input!" == "0" (GOTO:menu)
IF "!input!" GTR "!count!" (
ECHO.
ECHO 输入错误,请重试。
TIMEOUT 3 >NUL
GOTO:deleteproxy
)
ECHO.
SET ip=!ip%input%!
SET port=!port%input%!
for /f %%i in ('netsh interface portproxy delete v4tov4 "listenaddress=!ip!" "listenport=!port!" ^|find "protocol"') do (SET test2=%%i)
IF "!test2!" == "" (
netsh advfirewall firewall delete rule name="PortProxy-!port!" dir=in protocol=TCP localport=!port! 1>nul 2>nul
ECHO 删除成功。
)
IF "!test2!" == "protocol" (
ECHO 删除失败,请重试。
TIMEOUT 3 >NUL
GOTO:deleteproxy
)
ECHO.
TIMEOUT 3 >NUL
GOTO:deleteproxy