前言
比如为了部署DeepSeek,没有GPU服务器,我们就用本地的PC做服务,如果想在外能访问,就要进行内网穿透。
产品
如果我们没有拥有公网IP的服务器,那么可以使用一些市面上的产品。
cpolar
路由侠
自建
自建需要自己有公网IP的服务器才能使用。
frp(推荐)
https://gofrp.org/zh-cn/docs/overview/
frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
服务器端
解压
1 | tar -zxvf frp_0.61.1_linux_amd64.tar.gz -C /data/tools/ |
注册服务
安装 systemd
1 | # 使用 yum 安装 systemd(CentOS/RHEL) |
创建服务文件
1 | sudo vim /etc/systemd/system/frps.service |
写入内容
1 | [Unit] |
使用 systemd 命令管理 frps 服务
1 | # 启动frp |
设置 frps 开机自启动
1 | sudo systemctl enable frps |
服务端配置
frps.toml
1 | bindPort = 9000 |
这里的bindPort
是服务绑定的端口,用于服务端和客户端通讯的端口,服务端访问的端口是vhostHTTPPort
。
服务端要开放上面的两个端口。
客户端
配置
frpc.toml
1 | serverAddr = "x.x.x.x" |
注意
serverPort是服务端绑定的端口。
localPort是内网服务的端口。
customDomains必须要设置。
启动
1 | frpc.exe -c "D:\Tools\frp_0.61.1_windows_amd64\frpc.toml" |
同时映射域名和多个服务
1 | serverAddr = "x.x.x.x" |
如上我们可以通过http://www.yourdomain.com:11434和http://www.yourdomain2.com:11434访问到内部的服务。
开机启动
添加start_frpc.bat
1 | frpc.exe -c "D:\Tools\frp_0.61.1_windows_amd64\frpc.toml" |
CMD+R
运行以下命令打开开机启动文件夹
1 | shell:Common Startup |
拷贝需要开机启动的程序的快捷方式到此文件夹即可
Nginx配置
网页访问会跨域为了解决跨域 我们可以使用Nginx进行反代
1 | server { |
如果不考虑浏览器调用,只有客户端调用,可以不同添加跨域的设置
1 | server { |
ghost
https://github.com/ginuerzh/gost
HTTP2
gost的HTTP2支持两种模式:
- 作为标准的HTTP2代理,并向下兼容HTTPS代理。
- 作为通道传输其他协议。
服务端安装
1 | mkdir /data/tools/gost_2.12.0v3 |
内网穿透
参数
-L
: 指定监听/代理-F
: 指定转发/代理
假如内网服务端口是11434,我们想在服务器上用11434访问。
服务端
1 | ./gost -L=socks5://:9000?bind=true |
客户端
1 | gost.exe -L=rtcp://:11434/:11434 -F=socks5://server_ip:9000 |
其中
- rtcp 是反向tcp,用于反向代理
rtcp://:11434/:11434
这两个端口第一个是公网的端口,第二个是内网服务的端口。
我这里用的
通过接口能正常调用,但是浏览器插件调用的时候第一次都不行。
这里更推荐frp。