部署内网穿透神器 Frp 详细教程

小助手读文章 00:00 / 00:00

温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。

之前介绍过 Ngrok 的部署(部署内网穿透神器 Ngrok 详细教程),今天要介绍的文中提到的同是内网穿透流行工具 frp。

一、介绍

Frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, udp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发,甚至支持两个客户端点对点!

Frp 的原理与 DDNS 服务一样,当公网服务器和内网客户端建立连接后,外网用户访问公网服务器特定端口,就会触发公网服务器和内网的互动,并返回内网信息给外网用户。

对比 Ngrok,最明显的感受就是 Frp 的配置非常简单,而且是开源免费(Ngrok 新版已闭源)

二、依赖

Frp 是一个 DDNS 服务,因此需要一个公有域名,而要实现外网访问,也就意味着需要一个静态 IP,既然宽带不分配静态 IP,那么我们可以购买便宜的主机来实现,比如:

Vultr 最新优惠,充值 $5 开 1 年 KVM 主机
CloudCone 最新优惠 - 自由定制配置|洛杉矶亚洲优化线路|1G 带宽|2TB 流量|$1.25起

三、部署

举例说明吧,以下操作基于 CentOS 7.0 x64。

1、预期效果

内网地址 IP:192.168.1.1,SSH 为 22,HTTPS 为 443,HTTP 为 80;
外网地址 IP:1.1.1.1,SSH 监听为 2222,HTTPS 为 4433,HTTP 为 8080;
绑定域名为:virlcoud.net

2、准备

将 virlcoud.net 解析至 1.1.1.1(可参考《使用 CNAME 接入 CloudFlare 新玩法》接入 CloudFlare,非必要)

3、服务端部署

I、查询下载最新版源码

# wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz
# tar zxf frp_0.30.0_linux_amd64.tar.gz 
# rm -rf frp_0.30.0_linux_amd64.tar.gz && mv frp_0.30.0_linux_amd64/ frp/

II、编辑配置

# cd frp
# vim frps_full.ini
......
bind_addr = 0.0.0.0    # 监听地址
bind_port = 8888   # 监听端口
.......
vhost_https_port = 4433   # 外网 HTTPS 访问端口
vhost_http_port = 8080  # 外网 HTTP 访问端口
......
privilege_token = 12345678  # 访问密钥
......
privilege_allow_ports = 4433,8080,2222  # 限制客户端可用端口
......
subdomain_host = vircloud.net  # 绑定域名
......

III、运行

通过 nohup 后台运行:

# nohup /root/frp/frps -c /root/frp/frps_full.ini >/root/frp/frps.log 2>&1 &

开机自启:

# chmod +x /etc/rc.local  (非必须,某些镜像不执行无法启动)
# vim /etc/rc.local
......
 /root/frp/frps -c /root/frp/frps_full.ini >/root/frp/frps.log

IV、开放端口

如果主机有开启防火墙,记得开放端口,比如 CentOS7 开放端口命令是:

# firewall-cmd --zone=public --add-port=8888/tcp --permanent
# firewall-cmd --reload

3、客户端部署

Windows、Linux、MacBook 等平台下配置与服务端大同小异,以 Windows 开放 3389 远程桌面为例。

下载客户端并解压:

文件列表

编辑 frpc.ini:

[common]
server_addr = 1.1.1.1
server_port = 8888
token = 12345678 # 服务端有开启验证需要修改/增加此字段

[ssh]     # 名字可以设一个自己好记得
type = tcp     # 连接类型 
local_ip = 127.0.0.1  # 本机地址
local_port = 3389  # 要穿透的端口
remote_port = 2222 # 服务器端口,可以自定义

运行:

C:\Users\Test> frpc -c frpc.ini

然后访问域名(或服务器地址)加端口号 2222 即可访问本机的远程桌面服务。

客户端运行日志

服务端运行日志

4、更多配置

参见官方 wiki:fatedier/frp


参考文章:

1、《FRP: 使用 frp 实现内网穿透
2、《frp 服务器架设 + 荒野无灯版 p4davan frp 客户端 配置教程


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 教程内网穿透ngrokfrp 的文章

 本文最后更新于 2019/12/25 17:12:24,可能因经年累月而与现状有所差异

 引用转载请注明: VirCloud's Blog > 运维 > 部署内网穿透神器 Frp 详细教程

精选评论

  1. 路人甲
    路人甲 回复

    Windows 7Chrome 64.0.3282.140来自 广东 的大神

    路由器上搞穿透

    1. 欧文斯

      我就是这么用的 icon_mrgreen.gif
      openwrt 本身是支持文中的 frp 版本,定制版 ROM 可能有对应的定制版 frp,比如 K2P 无灯大师的 ROM 就是用其定制的 xfrp 才能连接。

  2. Ubangcool
    Ubangcool 回复

    Windows 10Chrome 70.0.3538.25来自 广东 的大神

    内网穿透frp折腾过,后来一直在用*