C (work as server) ↔ C:很难,因为没有公网IP,两个C都被隐藏在一层一层路由器之后,很难找到对方
C (work as server) ↔ S (中转一下) ↔ C:内网穿透就像如此,中间的S是有公网IP的,所以两个C都可以找到它,这样子两个C就能连接起来了
请看踩坑记:WSL内网穿透
强烈不建议使用ngrok!
按照官方文档执行命令即可,很简单:安装 + 配置key + 开启内网穿透(指定协议和端口)
开源软件,自己搭建服务器
https://gofrp.org/zh-cn/
安全地暴露内网服务 https://gofrp.org/zh-cn/docs/examples/stcp/
安装方式:直接在Github Release下载二进制可执行文件,无须依赖
默认情况下:内网主机的一个frpc进程 ↔ 公网服务器的一个frps进程 ↔ 一个客户端的frpc进程
应该是一一对应的,并不是一个frps服务器可以同时处理多个内网穿透隧道
# 来自官方文档,暂未验证 # 1. 公网服务器 # frps -c frps.toml bindPort = 7000 # 2. 内网主机 # frpc -c frpc.toml serverAddr = "x.x.x.x" serverPort = 7000 [[proxies]] name = "secret_ssh" type = "stcp" # 只有与此处设置的 secretKey 一致的用户才能访问此服务 secretKey = "abcdefg" localIP = "127.0.0.1" localPort = 22 # 3. 客户端主机 # frpc -c frpc.toml serverAddr = "x.x.x.x" serverPort = 7000 [[visitors]] name = "secret_ssh_visitor" type = "stcp" # 要访问的 stcp 代理的名字 serverName = "secret_ssh" secretKey = "abcdefg" # 绑定本地端口以访问 SSH 服务 bindAddr = "127.0.0.1" bindPort = 6000 # 4. 在客户端执行连接 ssh -o Port=6000 test@127.0.0.1