Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:计算机网络:内网穿透

Table of Contents

内网穿透


C (work as server) ↔ C:很难,因为没有公网IP,两个C都被隐藏在一层一层路由器之后,很难找到对方
C (work as server) ↔ S (中转一下) ↔ C:内网穿透就像如此,中间的S是有公网IP的,所以两个C都可以找到它,这样子两个C就能连接起来了

ngrok

请看踩坑记:WSL内网穿透
强烈不建议使用ngrok!

按照官方文档执行命令即可,很简单:安装 + 配置key + 开启内网穿透(指定协议和端口)

frp

开源软件,自己搭建服务器

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
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/计算机网络/内网穿透.txt · Last modified: 2025/06/10 16:14 by zhonghui