V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cocoking
V2EX  ›  程序员

Windows 下 有什么高效率的端口转发工具(TCP 流量)?

  •  1
     
  •   cocoking · 2021-02-23 20:43:57 +08:00 · 6915 次点击
    这是一个创建于 1398 天前的主题,其中的信息可能已经有所发展或是发生改变。

    尝试使用了 Windows 自带的 netsh,转发效率非常低,导致网速非常慢。也尝试了一款叫 NetworkActivAUTAPFv2.2 的应用软件,相对理想,但已经没人维护,会定时弹窗断开连接。

    有什么其他高效软件可以推荐一下的? 主要是转发 TCP 流量

    15 条回复    2021-02-24 17:18:53 +08:00
    xihefeng
        1
    xihefeng  
       2021-02-23 20:49:50 +08:00
    gost
    crab
        2
    crab  
       2021-02-23 21:48:05 +08:00
    netcat?
    hanxiV2EX
        3
    hanxiV2EX  
       2021-02-23 21:56:54 +08:00 via Android
    frp?
    iamwin
        4
    iamwin  
       2021-02-23 22:18:00 +08:00
    nginx?
    jigi330
        5
    jigi330  
       2021-02-23 23:24:21 +08:00
    nginx 或者 caddy 都应该可以
    FreeEx
        6
    FreeEx  
       2021-02-23 23:31:58 +08:00 via iPhone
    Cooky
        7
    Cooky  
       2021-02-23 23:35:35 +08:00
    改自带防火墙规则?
    laminux29
        8
    laminux29  
       2021-02-23 23:47:03 +08:00   ❤️ 1
    你踩坑了。

    这问题的本质是,网络协议非常复杂,能实现大部分网络特性,并且 bug 少、维护情况好的软件,大多数都在 linux 的服务器应用上,比如大家推荐的 nginx 。

    Windows 的 netsh 、route 等,因为用的人太少,甚至连基本功能的实现都有问题,更别提稳定性。

    所以,网络应用,建议用 Linux + nginx 。
    Dkngit
        9
    Dkngit  
       2021-02-23 23:47:09 +08:00 via iPhone
    44670
        10
    44670  
       2021-02-23 23:53:06 +08:00
    44670
        11
    44670  
       2021-02-23 23:55:18 +08:00
    EDIT:上面的似乎不行,也许可以试试这个看看: https://gist.github.com/qhwa/cb9d3851450bff3b705e
    ragnaroks
        12
    ragnaroks  
       2021-02-24 08:54:01 +08:00
    v2ray,gost,port-forwarder 3 个 CLI,在 github 上都有
    port mapper 这个 GUI 的,只能在下载站找到
    march1993
        13
    march1993  
       2021-02-24 14:08:38 +08:00
    goang 自己写一个?

    ```golang
    package main

    import (
    "fmt"
    "net"
    "os"
    "io"
    "time"
    "os/signal"
    "syscall"
    )

    type Config struct {
    ListenAddr string
    ForwardAddr string
    }

    var configs []*Config = []*Config{
    // {ListenAddr: ":1995", ForwardAddr: "1.2.3.4:199"},
    // {ListenAddr: ":8081", ForwardAddr: "5.6.7.8:8081"},
    // {ListenAddr: ":2222", ForwardAddr: "9.10.11.12:22"},
    {ListenAddr: ":8081", ForwardAddr: "192.168.1.10:30000"},
    }

    func worker(c *Config) {
    fmt.Println("forwarding", c.ListenAddr, " to", c.ForwardAddr)
    if l, err := net.Listen("tcp", c.ListenAddr); nil != err {
    panic(err)
    } else {
    defer l.Close()
    for {
    if left, err := l.Accept(); nil != err {
    fmt.Println("listen: accept error: ", err.Error())
    continue
    } else {
    if right, err := net.Dial("tcp", c.ForwardAddr); nil != err {
    fmt.Println("listen: dial error:", err.Error())
    left.Close()
    } else {
    go Relay(left, right)
    }
    }
    }
    }
    }

    func main() {
    c := make(chan os.Signal)
    signal.Notify(c, os.Interrupt, syscall.SIGTERM)

    for _, config := range configs {
    go worker(config)
    }

    _ = <-c
    }

    func Relay(left, right net.Conn) (int64, int64, error) {
    type res struct {
    N int64
    Err error
    }
    ch := make(chan res)

    go func() {
    n, err := io.Copy(right, left)
    right.SetDeadline(time.Now()) // wake up the other goroutine blocking on right
    left.SetDeadline(time.Now()) // wake up the other goroutine blocking on left
    ch <- res{n, err}
    }()

    n, err := io.Copy(left, right)
    right.SetDeadline(time.Now()) // wake up the other goroutine blocking on right
    left.SetDeadline(time.Now()) // wake up the other goroutine blocking on left
    rs := <-ch

    if err == nil {
    err = rs.Err
    }
    return n, rs.N, err
    }
    ```
    zhangzewa
        14
    zhangzewa  
       2021-02-24 15:37:39 +08:00
    nps
    cocoking
        15
    cocoking  
    OP
       2021-02-24 17:18:53 +08:00
    @xihefeng 实测 gost 在 Windows 下的转发效率并不高,单线程最高也仅仅在 65M 左右。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2646 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:24 · PVG 23:24 · LAX 07:24 · JFK 10:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.