本帖最后由 mustard666 于 2024-12-25 11:32 编辑
一个支持IPv4和IPv6的Windows端口转发配置脚本,提供可视化菜单操作界面。
将下面代码保存成.bat文件,[b]使用管理员运行。
或下载附件,解压后使用。
@echo off
title Windows IPv4/IPv6端口转发管理工具
color 0A
:menu
cls
echo ========================================
echo Windows IPv4/IPv6端口转发管理工具
echo ========================================
echo 1. 查看所有转发规则
echo 2. 添加IPv4转发规则
echo 3. 添加IPv6转发规则
echo 4. 添加IPv4转IPv6规则
echo 5. 添加IPv6转IPv4规则
echo 6. 删除转发规则
echo 7. 检查防火墙状态
echo 8. 重置所有规则
echo 9. 退出程序
echo ========================================
choice /C 123456789 /N /M "请选择操作(1-9):"
if errorlevel 9 goto :eof
if errorlevel 8 goto resetRules
if errorlevel 7 goto checkFirewall
if errorlevel 6 goto deleteRule
if errorlevel 5 goto addv6tov4
if errorlevel 4 goto addv4tov6
if errorlevel 3 goto addv6tov6
if errorlevel 2 goto addv4tov4
if errorlevel 1 goto showRules
:showRules
cls
echo 当前所有转发规则:
echo ========================================
netsh interface portproxy show all
echo ========================================
pause
goto menu
:addv4tov4
cls
echo 添加IPv4转发规则
call :addRule v4tov4
goto menu
:addv6tov6
cls
echo 添加IPv6转发规则
call :addRule v6tov6
goto menu
:addv4tov6
cls
echo 添加IPv4转IPv6规则
call :addRule v4tov6
goto menu
:addv6tov4
cls
echo 添加IPv6转IPv4规则
call :addRule v6tov4
goto menu
:addRule
echo ========================================
set /p listenport="输入本地监听端口: "
set /p listenaddr="输入本地监听地址(IPv4默认0.0.0.0,IPv6默认[::]): "
if "%listenaddr%"=="" (
if "%1"=="v4tov4" set listenaddr=0.0.0.0
if "%1"=="v6tov6" set listenaddr=[::]
if "%1"=="v4tov6" set listenaddr=0.0.0.0
if "%1"=="v6tov4" set listenaddr=[::]
)
set /p connectport="输入目标端口: "
set /p connectaddr="输入目标地址: "
netsh interface portproxy add %1 listenport=%listenport% listenaddress=%listenaddr% connectport=%connectport% connectaddress=%connectaddr% protocol=tcp
if errorlevel 1 (
echo 添加规则失败!
) else (
echo 添加规则成功!
)
pause
goto :eof
:deleteRule
cls
echo 删除转发规则
echo ========================================
echo 当前转发规则:
netsh interface portproxy show all
echo ========================================
set /p listenport="输入要删除的本地监听端口: "
set /p listenaddr="输入要删除的本地监听地址: "
netsh interface portproxy delete v4tov4 listenport=%listenport% listenaddress=%listenaddr%
netsh interface portproxy delete v6tov6 listenport=%listenport% listenaddress=%listenaddr%
netsh interface portproxy delete v4tov6 listenport=%listenport% listenaddress=%listenaddr%
netsh interface portproxy delete v6tov4 listenport=%listenport% listenaddress=%listenaddr%
echo 删除操作完成!
pause
goto menu
:checkFirewall
cls
echo 检查防火墙状态
echo ========================================
netsh advfirewall show allprofiles state
echo ========================================
choice /C YN /N /M "是否需要关闭防火墙?(Y/N)"
if errorlevel 2 goto menu
if errorlevel 1 (
netsh advfirewall set allprofiles state off
echo 防火墙已关闭!
)
pause
goto menu
:resetRules
cls
echo 正在重置所有转发规则...
echo ========================================
netsh interface portproxy reset
echo 所有转发规则已重置!
pause
goto menu
主要特性
-
支持IPv4和IPv6的所有转发组合:
- IPv4 → IPv4
- IPv6 → IPv6
- IPv4 → IPv6
- IPv6 → IPv4
-
完整的规则管理:
-
智能默认值:
- IPv4默认监听地址:0.0.0.0
- IPv6默认监听地址:[::]
使用场景
1. IPv4/IPv6双栈环境
- 在混合网络环境中实现无缝转发
- 处理新旧系统之间的通信
- 例如:将IPv4服务转发到IPv6网络
2. IPv6过渡部署
- 帮助IPv4应用程序接入IPv6网络
- 实现IPv6服务向IPv4用户提供访问
- 例如:让IPv4设备访问IPv6-only服务
3. 网络协议转换
- 在不同IP协议版本间搭建桥梁
- 支持跨协议版本的服务访问
- 例如:IPv6客户端访问IPv4服务器
使用说明
1. 基本配置示例
IPv4转发到IPv4:
本地监听端口: 80
本地监听地址: 0.0.0.0
目标端口: 8080
目标地址: 192.168.1.100
IPv6转发到IPv6:
本地监听端口: 80
本地监听地址: [::]
目标端口: 8080
目标地址: 2001:db8::1
IPv4转发到IPv6:
本地监听端口: 80
本地监听地址: 0.0.0.0
目标端口: 8080
目标地址: [2001:db8::1]
2. 高级用法
多协议并存:
- 可同时配置多个不同协议的转发规则
- 支持同一端口的多协议监听
- 灵活处理各种网络环境
规则管理:
- 使用查看功能监控当前配置
- 及时删除不需要的规则
- 需要时可一键重置所有规则
注意事项
-
IPv6地址格式:
- 使用方括号[]包围IPv6地址
- 例如:[2001:db8::1]
-
地址兼容性:
-
系统要求:
- Windows系统需启用IPv6功能
- 管理员权限运行
- 相应端口未被占用
故障排除
-
IPv6转发失败
- 检查系统IPv6是否启用
- 验证IPv6地址格式正确
- 确认网络支持IPv6
-
协议转换问题
- 确保系统支持双协议栈
- 检查网络设备是否支持转换
- 验证地址格式正确
-
性能优化
- 避免不必要的协议转换
- 合理规划转发规则
- 定期清理未使用的规则
安全建议
-
访问控制:
- 谨慎选择监听地址
- 必要时限制访问源
- 及时删除不用的规则
-
防火墙配置:
- 仅开放必要端口
- 配置相应的防火墙规则
- 定期检查安全日志
-
监控管理:
免责声明
本工具仅供学习和测试使用,请勿用于非法用途。使用本工具所产生的任何后果由使用者自行承担。
|