FRP 内网穿透

FRP支持TCP、UDP、HTTP、HTTPS等多种协议,可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。通过在具有公网IP的节点上部署FRP服务端,可以轻松地将内网服务穿透到公网。
假设一个场景:实验室的服务器(简称主机A)在学校的内网中,ip地址为172.29.31.22,我在主机A的端口8501上部署了一个web服务,此时,因为A主机位于学校的NAT后面,我想在外网(学校以外的网络环境)中访问这个服务是做不到了。可巧,我有一台具有公网ip为192.144.236.11的服务器(简称主机S),我想通过一个软件将S的7901端口映射到A的8501,这样我就可以通过访问192.144.236.11:7901 来访问172.29.31.22:8501上的服务,这个软件就可以是FRP。
下图是一个示意图,当然,你还可以将任意端口做映射,比如将主机A的22号端口映射为S的7922,或者将另一台主机B的22号端口映射为S的7822,需要注意的是映射关系为一对一,S上的端口不能有重复,具体用哪个随意定。

场景示意图

因为A位于内网中,不可能通过S来访问A,只能由A主动请求S才能建立连接,所以frp分为客户端和服务端,服务端程序为frps,客户端程序为frpc,分别对应的配置文件为frps.ini和frpc.ini。

程序下载地址:https://github.com/fatedier/frp/releases

本文分为3个部分,客户端和服务端的环境都为 amd64 Ubuntu18+:

  1. 配置服务端
  2. 配置客户端
  3. 开机自动启动和后台运行设置

一、配置服务端

服务端包括一个可执行程序frps和一个配置文件frps.ini,解压下载的文件能看到还有个frps_full.ini,这里包括了所有的可配置项,我们只需要从中取必要的几条即可,客户端同理。

1.1 配置文件

frps.ini文件内容如下,删除注释,修改XXX部分即可:

[common]
bind_port = 7000    # 服务程序监听的端口
token = XXX       # 客户端认证用的token,就是客户端想要连接这个服务器需要知道这个token 

# frp还提供了一个web仪表盘,可以查看当前程序的运行情况
dashboard_addr = 0.0.0.0   # 仪表盘的地址,默认是本机
dashboard_port = 7500      # 仪表盘的端口号
dashboard_user = XXX      # 访问仪表盘的认证用户
dashboard_pwd = XXX       # 访问仪表盘的认证密码

1.2 启动服务

将下载的程序解压后一同放入主机S的/opt/frp目录下,我的可执行程序路径最终为/opt/frp/frp_0.51.2_linux_amd64/frps,给可执行程序执行权限
sudo chmod a+x /opt/frp/frp_0.51.2_linux_amd64/frps,然后使用-c参数指定配置文件,运行程序/opt/frp/frp_0.51.2_linux_amd64/frps -c /opt/frp/frp_0.51.2_linux_amd64/frps.ini

启动成功提示(程序位置和行文不同)

这样,服务端程序就运行成功了。服务端程序不关心映射哪些端口,只要是客户端请求的,服务端都会满足,但是需要注意服务器的端口策略,无论你通过服务商还是自定义规则管理防火墙,都要将服务程序监听端口7000,仪表盘端口7500以及你要映射的端口(比如7901)放开。

二、配置客户端

2.1 配置文件

frpc.ini文件如下:

# common部分配置服务端的信息
[common]
server_addr = 192.144.236.11    # 服务端地址
server_port = 7000              # 服务程序监听端口
# tls_enable配置项用于启用TLS协议加密传输,新版本一定要打开
tls_enable = true
token = XXX            # 服务器端前面设置的token

# 下面的每一项是一个映射配置,名称用于区分不同的映射,随意起
# 这里配置了两个映射,第一个是将A的8501映射到了S的7901,第二个是将B的22号端口映射到了S的7822
[user.A.web]            # 随意起的名字,建议是 用户.设备.服务
type = tcp              # 类型tcp,也可以使用http或者其他,但是要做不同配置
local_ip = 127.0.0.1    # 客户端程序跑在A上,所以是本机地址
local_port = 8501        # 本机服务端口
remote_port = 7901      # 远程要映射的端口,随意指定,个人习惯7开头,第二个数字区分设备,后两位区分服务

[user.B.ssh]
type = tcp
local_ip = 172.29.31.33    # 可以映射别的机器,前提是本机器能访问到
local_port = 22
remote_port = 7822

2.2 启动客户端程序

和服务端一样,不过把frps改成frpc即可。


启动成功提示(内容和路径和行文不同)

至此,端口转发就完成了, 可以试试能否通过192.144.236.11:7901 来访问172.29.31.22:8501上的web服务了。或者访问http://192.144.236.11:7500来查看是否映射成功,如果显示映射成功但是无法访问,基本就是你的服务器端口没放开。

三、开机自启动和后台运行

现在可以使用了,但是必须开着程序运行窗口,而且不会开机启动。个人习惯用tmux跑后台服务,把frp也放到tmux窗口中,然后开机时运行tmux。参考我这两篇文章,文章有点乱,你如果有自己的方法就别看了。

  1. tmux 入门 https://www.jianshu.com/p/6075c0fd98d9
  2. tmux 开机启动 https://www.jianshu.com/p/6700fc66adbe
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • Frp基本信息 frp全名Fast Reverse Proxy,是用于提供内网穿透服务的工具,主要用于解决一些内网...
    风吹我已散博客阅读 9,535评论 0 1
  • 从局域网里面跑出来-frp内网穿透教程 再局域网里面生活就像宅在家中一样 访问各种各样的网址十分方便 但是别人访问...
    反转旋木阅读 515评论 0 0
  • 服务端(frps):有公网IP的云服务器(腾讯云/阿里云等) 客户端(frpc):树莓派 在客户端(树莓派),下载...
    狂且n_n阅读 409评论 0 0
  • 背景 回家后不方便登录校园网,但是仍有同学需要访问实验室服务器进行实验等其他任务。 遂通过frp搭建隧道,使外网可...
    CoderSong阅读 1,583评论 0 0
  • frp内网穿透 此教程可用于配置内网Linux服务器,这样就可以不在同一个局域网内也能远程访问到服务器。 一、公网...
    须臾呀阅读 152评论 0 0