V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kinboy
V2EX  ›  程序员

Powershell windows 端口转发

  •  1
     
  •   kinboy · 102 天前 · 2174 次点击
    这是一个创建于 102 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Winsows + WSL2 的环境经常有端口转发的需求,Windows 上没有找到很好用的端口转发工具,就用 Powershell 写了一个脚本,代码很简单,还挺好用,配上了通知,目前只支持 IPv4 Tcp 端口转发

    Project: https://github.com/kinboyw/windows-port-forwarder

    launch

    notification

    21 条回复    2024-07-24 12:38:54 +08:00
    rayae
        1
    rayae  
       102 天前
    wsl2 自带的`localhostForwarding`和`networkingMode=mirrored`不香吗
    idealhs
        3
    idealhs  
       102 天前
    加油,再写个反向代理👍
    kinboy
        4
    kinboy  
    OP
       102 天前
    @rayae #1 我去看看,不过这个脚本可以转发到任意地址,只是最开始是方便转发到 WSL ,所以 target IP 默认设置了 WSL 的 IP
    wulays
        5
    wulays  
       102 天前   ❤️ 1
    kinboy
        6
    kinboy  
    OP
       102 天前
    @wulays #5 这个不错
    lneoi
        7
    lneoi  
       102 天前
    系统有自带的 Netsh interface portproxy 命令
    netsh interface portproxy add v4tov4 listenport= {Integer | ServiceName} [[connectaddress=] {IPv4Address | HostName}] [[connectport=] {Integer | ServiceName}] [[listenaddress=] {IPv4Address | HostName}] [[protocol=]tcp]
    kinboy
        8
    kinboy  
    OP
       102 天前
    @lneoi #7 脚本就是调的 Netsh 命令,只是觉得这个命令每次用起来输入太麻烦
    Davic1
        9
    Davic1  
       102 天前
    Windows 上没有找到很好用的端口转发工具,就用 Powershell 写了一个脚本

    这就话本身就是矛盾的...

    7# 说的 netsh 就是 windows 上的端口转发工具。
    liuliancao
        10
    liuliancao  
       102 天前
    挺好的 我们服务器上也在用 netsh 缺点是没法记录老的 只能 netstat -ano|findstr 找下
    stew5566
        11
    stew5566  
       102 天前

    有用过 vscode 的连接远程,不知道这个能不能给你用上
    Belmode
        12
    Belmode  
       102 天前   ❤️ 1
    @Davic1 #9

    "Windows 上没有找到很好用的端口转发工具,就用 Powershell 写了一个脚本" ❌

    "我开发了一个很好用的脚本工具,要跟大家炫耀一下" ✔️
    nfksuk
        13
    nfksuk  
       102 天前
    想找一个 gose 的加密转发工具 windows 的
    han3sui
        14
    han3sui  
       102 天前
    kinboy
        15
    kinboy  
    OP
       102 天前
    @Davic1 #9 嗯,脚本只是把 netsh 一些常用的基础功能封装了一下,降低使用难度
    kinboy
        16
    kinboy  
    OP
       102 天前
    @Belmode #12 哈哈应该说想要分享一下,这个东西实在太简单没啥好炫耀的,自己感觉还挺好用,就拿出来,没准有人需要
    kinboy
        17
    kinboy  
    OP
       102 天前
    @liuliancao #10 netsh 的命令实在难敲
    kinboy
        18
    kinboy  
    OP
       102 天前
    @han3sui #14 star 一个
    vvhy
        19
    vvhy  
       102 天前 via Android
    经常用端口转发+hosts 把一些本地的服务面板之类的映射到域名,哈哈
    xy2401
        20
    xy2401  
       101 天前
    我上周也想要一个这个工具。笔记本本地示范项目默认配置连 localhost 的数据库之类服务 不想修改配置文件 , 但是想连着台式机服务。
    也考虑 netsh 或者 ssh 的端口转发但是太复杂了。
    后面 vscode 远程调试发现自带端口转发,也可以配置在 .vscode/settings.json 里面 并且可以有注释。
    缺点就是 要 vscode 打开远程项目(目标主机的)。
    start 了项目希望也可以读取配置文件之类更友好的使用


    {
    "remote.SSH.defaultForwardedPorts": [
    {
    "localPort": 8080,
    "remotePort": 8080,
    "name": "Web 服务器",
    "description": "将远程 8080 端口映射到本地 8080 端口,可用于访问部署在远程服务器上的 Java Web 应用。"
    },
    {
    "localPort": 5432,
    "remotePort": 5432,
    "name": "PostgreSQL 数据库",
    "description": "将远程 5432 端口映射到本地 5432 端口,可用于连接到远程服务器上的 PostgreSQL 数据库。"
    },
    {
    "localPort": 3306,
    "remotePort": 3306,
    "name": "MySQL 数据库",
    "description": "将远程 3306 端口映射到本地 3306 端口,可用于连接到远程服务器上的 MySQL 数据库。"
    },
    {
    "localPort": 9092,
    "remotePort": 9092,
    "name": "ActiveMQ",
    "description": "将远程 9092 端口映射到本地 9092 端口,可用于连接到 ActiveMQ 消息队列。"
    },
    {
    "localPort": 61616,
    "remotePort": 61616,
    "name": "Kafka",
    "description": "将远程 61616 端口映射到本地 61616 端口,可用于连接到 Kafka 消息队列。"
    },
    {
    "localPort": 5672, // RabbitMQ AMQP 协议端口
    "remotePort": 5672,
    "name": "RabbitMQ AMQP",
    "description": "将远程 5672 端口映射到本地 5672 端口,用于 RabbitMQ 的 AMQP 协议通信。"
    },
    {
    "localPort": 15672, // RabbitMQ 管理界面端口
    "remotePort": 15672,
    "name": "RabbitMQ 管理界面",
    "description": "将远程 15672 端口映射到本地 15672 端口,可用于访问 RabbitMQ 的 Web 管理界面。"
    }
    ]
    }
    artiga033
        21
    artiga033  
       101 天前 via Android
    原来是封装 netsh 啊,我还以为是用 Powershell 调.NET BCL 实现的 l4 转发呢

    netsh 我经常加了之后忘了删,然后下次干别的事时候又忘了这回事,还以为遇到什么玄学 bug 了。

    反正本地调试的场景也不关心它是 l3 还是 l4 那点性能差别,我一般还是选择 l4 转发。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1278 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 18:36 · PVG 02:36 · LAX 11:36 · JFK 14:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.