使用公网ip云服务器+frp实现内网穿透

使用公网ip云服务器+frp实现内网穿透

Yeren Lv3

在暑假购买了一台小型PC当服务器使用,但是家用wifi只有内网ip,为此需要内网穿透使server服务可以被访问,在开始使用的是花生壳内网穿透,效果很好,使用也很简单,但是随着服务的不断增加,逐渐感觉到瓶颈。最主要的方面就是对域名的映射只有两条,意味着我只能部署两个独立服务,而上次看到有一个读论文的优秀开源项目,并且成功的部署到服务器上时,我发现没有多余的映射资源让我对本地端口进行映射。为此打算另寻出路寻找其他的内网穿透解决方案。

其实之前也看到好多人说使用frp的,但是需要一个公网ip,而我去搜到的ip的价格都很贵,为此这个方案一直没有进行,但是后来听学长越哥说,用学生身份来申请带公网ip的云服务器会便宜很多,腾讯云一年只要112,于是高高兴兴的买到了手(结果今天复盘时又看了一眼,发现双十一降价到88元了55555),开始着手这一套方案。

其实frp的文档也是比较全面的,对中文的支持程度也很高,只参考官方文档就可以完全运行下来。帮助手册可以参考:

frp中文帮助文档frp

简单来说,frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

当前版本的frp(0.52)分为两部分,frpsfrpc,通过.toml文件进行配置,不过搜索网上有关信息时看到之前的frp使用.init文件进行配置,不过本质不变。frps用于部署在拥有公网ip的服务器上、frpc用于部署在内网服务器上。需要注意的是当前版本的frp并没有自带.toml文件,为此需要自己新建。按照需求配置好文件之后,分别在公网服务器和内网服务器运行:

1
2
3
4
5
6
7
8
9
# 公网服务器
./frps -c ./frps.toml
# 内网服务器
./frpc -c ./frpc.toml

# 可以结合其他命令实现长期部署,官方推荐 systemd 和 supervisor
# 我在本地使用了nohup命令:
nohup ./frps -c ./frps.toml &
nohup ./frpc -c ./frpc.toml &

这里提一提我配置的.toml文件,有关如何按照自己的需求配置该文件,在官方文档已经给出了详细的demo帮助,以下是我的frps.toml文件

1
2
bindPort = 7000
vhostHTTPPort = 8080

frpc.toml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
serverAddr = "43.143.209.xxx" # 我的公网ip,这儿稍作加密
serverPort = 7000

# 映射到本地的22端口,使其允许远程ssh访问连接
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

# 映射到本地服务占用的端口,使其能被外网访问
[[proxies]]
name = "gpt-academic"
type = "http"
localPort = 50019
customDomains = ["academic.yeren.site"]

最后,可以看出我配置出来的frp映射内网服务时监听的公网端口是8080,所以访问的时候需要输入http://academic.yeren.site:8080才能够正常访问,而通过在公网服务器上部署nginx反向代理,可以消去讨厌又多余的端口号,这儿只提供一个简单的配置文件,不再多提

1
2
3
4
5
6
7
8
server {
listen 80;
server_name academic.yeren.site;

location / {
proxy_pass http://localhost:8080;
}
}

最后,再来提一提遇到的坑,最主要的坑就是这个云服务器了,最难受的就是昨天原价112刚买完,今天就降价到88,心痛QAQ。

还有的问题就是云服务器的防火墙了,每启动一个对应端口,都要在dashboard中允许对其端口的访问,否则无法访问,我就是在这块寄了好久,死活想不到原因,最后冷静复盘的时候才想起要修改这个防火墙,有点难绷。

还有就是这个云服务器绑定域名后需要备案,感觉这个应该是我把刚买的yeren.site域名在云端dashboard里绑定给了这个公网ip,所以他才让我必须要备案,否则应该是可以跳过的,不过我也无所谓了,备案就备案吧,后面要是搞的好一点,多点流量还可以接广告赚点米哈哈哈。不过这个流程很麻烦就是了。

之前本来打算自己写点项目部署的,结果一直没有时间,也只能跑跑开源项目尝尝鲜了。打算后面自己写的项目有一个表情包网站,一个多人联机游戏网站,看看什么时候有时间再写吧,以上。

life

  • Title: 使用公网ip云服务器+frp实现内网穿透
  • Author: Yeren
  • Created at : 2023-10-24 00:00:00
  • Updated at : 2023-10-24 00:00:00
  • Link: https://blog.yeren.xyz/2023/10/24/231024-Tech/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
使用公网ip云服务器+frp实现内网穿透