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

2021-02-23 20:43:57 +08:00
 cocoking

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

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

6445 次点击
所在节点    程序员
15 条回复
xihefeng
2021-02-23 20:49:50 +08:00
gost
crab
2021-02-23 21:48:05 +08:00
netcat?
hanxiV2EX
2021-02-23 21:56:54 +08:00
frp?
iamwin
2021-02-23 22:18:00 +08:00
nginx?
jigi330
2021-02-23 23:24:21 +08:00
nginx 或者 caddy 都应该可以
FreeEx
2021-02-23 23:31:58 +08:00
Cooky
2021-02-23 23:35:35 +08:00
改自带防火墙规则?
laminux29
2021-02-23 23:47:03 +08:00
你踩坑了。

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

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

所以,网络应用,建议用 Linux + nginx 。
Dkngit
2021-02-23 23:47:09 +08:00
44670
2021-02-23 23:53:06 +08:00
44670
2021-02-23 23:55:18 +08:00
EDIT:上面的似乎不行,也许可以试试这个看看: https://gist.github.com/qhwa/cb9d3851450bff3b705e
ragnaroks
2021-02-24 08:54:01 +08:00
v2ray,gost,port-forwarder 3 个 CLI,在 github 上都有
port mapper 这个 GUI 的,只能在下载站找到
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
2021-02-24 15:37:39 +08:00
nps
cocoking
2021-02-24 17:18:53 +08:00
@xihefeng 实测 gost 在 Windows 下的转发效率并不高,单线程最高也仅仅在 65M 左右。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/755610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX