什么是 frp?
frp(Fast Reverse Proxy)是一个高性能的反向代理应用,主要用于内网穿透。它可以将内网服务暴露到公网上,方便外部访问。
有很多小伙伴,家里都有性能很强大的电脑,但是苦于没有公网 IP,导致无法在互联网上部署自己的网站或者服务,而 frp 内网穿透就是用来解决这个问题的。
- 首先你得拥有一台具有公网 IP 的服务器,如果你只是用来进行内网穿透的话,性能并不需要很强,1h1g 是肯定够用了。
- 其次,在中国境内的服务器因为种种原因,需要进行网站备案,所以我这里更推荐你去购买香港或者美国的服务器,可以免备案。会省下很多麻烦事。
PS: 这里推荐一下本站在用的服务器 CloudCone,价格便宜实惠,流量大,用作 frp 服务器绰绰有余。我这边购买的是 2h1g 服务器,一年也就 130 元人民币,并且还支持支付宝直接支付,无需 VISA 卡之类的,本站强烈推荐!!!!
frp 内网穿透
frp 一共分为两个部分:
- 服务器:一个具有公网 IP 的服务器,运行 frps(frp server)。
- 客户端:一台处于内网中的机器,运行 frpc(frp client)。
frps(服务端)
前往 frp GitHub Releases 页面 下载适合你服务器操作系统的 frp 包。(一般linux64位系统选择linux_amd64即可)
解压缩下载的包:
tar -zxvf frp_x.x.x_linux_amd64.tar.gz进入解压好的目录,找到frps.toml文件
vim frps.toml编辑frps.toml文件
[common] # frps 服务端的基本配置 # frps 监听的端口,frpc 将通过这个端口连接到 frps bind_port = 7443 # 用于身份验证的 token,frpc 连接时需要提供相同的 token token = xxxxxxxxx # 监控面板的端口(可选),通过这个端口可以访问 frps 的状态信息 dashboard_port = 8443 # 监控面板的用户名和密码,保护监控面板的访问 dashboard_user = new_username dashboard_pwd = NewPassword!2024 # 允许开放的端口范围,设置为只开放 10000-11000 端口(可自定义开放端口) allow_ports = 10000-11000 # 日志级别,可选值有 trace, debug, info, warn, error log_level = info # 日志文件路径,frps 的日志将写入该文件 log_file = ./frps.log # 指定日志的最大大小(单位:MB),达到该大小后将进行轮转 max_log_size = 10 # 允许的最大连接数,限制同时连接到 frps 的 frpc 客户端数量 max_connections = 100 # 启用加密传输(可选),可以提高数据传输的安全性 enable_encrypt = true # 启用 TCP KeepAlive(可选),可以防止由于网络问题导致的连接断开 tcp_keep_alive = true # 允许的最大数据包大小(单位:字节) max_packet_size = 8192
frp从(客户端)
前面的步骤都是一样的
前往 frp GitHub Releases 页面 下载适合你服务器操作系统的 frp 包。(一般linux64位系统选择linux_amd64即可)
解压缩下载的包:
tar -zxvf frp_x.x.x_linux_amd64.tar.gz
找到frpc.toml
编辑frpc.toml
frpc.toml
[common]
frpc 连接到 frps 服务器的配置
frps 服务器的地址
server_addr = “your_frps_server_ip” # 替换为你的 frps 服务器 IP
frps 服务器的端口
server_port = 7443 # 与 frps 的 bind_port 一致
身份验证 token,必须与 frps 中的 token 一致
token = “xxxxxxxxx”
以下是需要开放的服务配置
例如,HTTP 服务
[http]
type = “tcp”
local_ip = “127.0.0.1”
local_port = 80 # 本地 HTTP 服务端口
remote_port = 10001 # 通过 frp 暴露的端口其他服务可以继续添加
这时候通过访问公网服务器ip加上remote_port端口,即可访问你对应的内网服务了!如果访问有不了请检查一下服务器的防火墙,和云服务器上的防火墙。
这时我们还需要把公网服务器上的frps服务设置为开机自启动
创建 一个Systemd 服务文件
sudo vi /etc/systemd/system/frps.service
在文件里添加
[Unit]
Description=frp server
After=network.target
[Service]
ExecStart=/path/to/frps -c /path/to/frps.toml
Restart=on-failure
User=your_username # 替换为运行 frps 的用户名
WorkingDirectory=/path/to/frp # frp 的工作目录
[Install]
WantedBy=multi-user.target
重新加载 Systemd
sudo systemctl daemon-reload
启动服务并设置为开机自启
sudo systemctl start frps
sudo systemctl enable frps查看服务状态
sudo systemctl status frps
如果出现错误,大概率是你的路径填写的不对,确保
ExecStart路径指向你的 frps 可执行文件和配置文件的正确路径。