惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Secure Thoughts
博客园 - 【当耐特】
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
博客园 - 司徒正美
Last Week in AI
Last Week in AI
C
Cybersecurity and Infrastructure Security Agency CISA
P
Privacy & Cybersecurity Law Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
B
Blog
The GitHub Blog
The GitHub Blog
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
Martin Fowler
Martin Fowler
博客园 - 叶小钗
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Tenable Blog
S
Securelist
博客园 - 三生石上(FineUI控件)
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Security Blog
Microsoft Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
T
Threat Research - Cisco Blogs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Full Disclosure
Cloudbric
Cloudbric
The Cloudflare Blog
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
H
Hacker News: Front Page
腾讯CDC
L
Lohrmann on Cybersecurity
C
CERT Recently Published Vulnerability Notes
V2EX - 技术
V2EX - 技术
GbyAI
GbyAI
TaoSecurity Blog
TaoSecurity Blog
I
Intezer
The Last Watchdog
The Last Watchdog
G
GRAHAM CLULEY
Google Online Security Blog
Google Online Security Blog
T
The Blog of Author Tim Ferriss

掘墓人的小铲子

新玩意:一加 15 | 掘墓人的小铲子 AI 编程初体验:Trae 帮我写代码 | 掘墓人的小铲子 微信内访问网站提示“非微信官方网页,请确认是否继续访问” | 掘墓人的小铲子 薅羊毛网站 | 掘墓人的小铲子 微信红包封面 | 掘墓人的小铲子 日本东京见闻 | 掘墓人的小铲子 新玩意:奥海 140W 氮化镓青春版充电器 | 掘墓人的小铲子 新玩意:云鲸智能洗地机 F1 冠军版 | 掘墓人的小铲子 新玩意:Windows Hello 指纹识别器 | 掘墓人的小铲子 电脑死机问题排查 | 掘墓人的小铲子 新玩意:WESCOM 31.5 英寸 4K 显示器 文章被“抄袭”了 | 掘墓人的小铲子 新玩意:乐歌 E2 升降桌 | 掘墓人的小铲子 香港一日游 | 掘墓人的小铲子 跨平台开发之 Quasar | 掘墓人的小铲子 跨平台开发之 Tauri | 掘墓人的小铲子 三星 Note4 超级省电模式之 Kindle 看书 博客升级 | 掘墓人的小铲子 使用 Jpom 自动构建和部署项目 | 掘墓人的小铲子 新冠肺炎症状记录 | 掘墓人的小铲子 开源数据备份工具 Duplicati | 掘墓人的小铲子 使用 NotionNext+Notion+Vercel 部署我的木刻网站 | 掘墓人的小铲子 使用 Vercel 快速部署前端项目 | 掘墓人的小铲子 企业共享办公好助手:可道云 kodbox | 掘墓人的小铲子 新玩意|一加 Ace Pro | 掘墓人的小铲子 使用 Photo Stream 部署相册 | 掘墓人的小铲子 新玩意|罗技 MX Master 3 鼠标 2021 年终总结 | 掘墓人的小铲子 新玩意|Bcase 数据线磁吸收纳器 | 掘墓人的小铲子 我的习惯养成计划:五分钟规则+打卡 | 掘墓人的小铲子 我用66张照片记录过去一年做过的饭菜 | 掘墓人的小铲子 送你一个虎年红包封面:虎虎生威 | 掘墓人的小铲子 新玩意|海氏K3空气炸锅烤箱 | 掘墓人的小铲子 新玩意|Yeelight易来 智能人体感应灯小夜灯 | 掘墓人的小铲子 超稳的高颜值支架:海备思铝合金手机支架 | 掘墓人的小铲子 没有了无限免费存储空间,谷歌相册还能继续用吗? | 掘墓人的小铲子 置物架改造 | 掘墓人的小铲子 信用卡还款宽限期 | 掘墓人的小铲子 Nginx 开启 gzip 压缩 | 掘墓人的小铲子 记一次意外割手 | 掘墓人的小铲子 Kindle 售后换新记 | 掘墓人的小铲子 记一次麻烦的银行办卡经历 | 掘墓人的小铲子 记一次差点被集中隔离的回家之旅 | 掘墓人的小铲子 自己动手做置物架 | 掘墓人的小铲子 2020 年终总结 | 掘墓人的小铲子 免费内网穿透服务推荐 | 掘墓人的小铲子 怎么提醒女朋友给手机充电? | 掘墓人的小铲子 阿里云盘和 Teambition 网盘 | 掘墓人的小铲子 记一次成功的网购维权:我在 12315 投诉天猫超市 | 掘墓人的小铲子
自己动手部署内网穿透:frp | 掘墓人的小铲子
2021-01-01 · via 掘墓人的小铲子

HTTP 内网穿透 frp

如果你有云服务器,就可以考虑自己部署内网穿透服务,这篇文章就来说下 frp -- 一个简单、高效的内网穿透工具。

本文测试使用的服务器是腾讯云服务器,系统为 64 位的 CentOS 7.6;客户端是 macOS;测试的 frp 版本为 v0.34.3。

frp 是一个开源项目, 采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。 在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。

项目地址:https://github.com/fatedier/frp

文档地址:https://gofrp.org/docs

frp 部署要求有一定的 Linux 基础知识,而且需要有一台公网服务器作为服务端。如果是纯小白或没有服务器,可以直接看上一篇文章「免费内网穿透服务推荐」,动手能力或者好奇心强的继续往下看。

frp 基本用法

frp 下载

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

服务端和客户端在一个压缩包里,但是由于服务端和客户端系统不一样,可能要下载两个包才行。我这里下载了 frp_0.34.3_linux_amd64.tar.gzfrp_0.34.3_darwin_amd64.tar.gz

服务端安装

frp_0.34.3_linux_amd64.tar.gz 解压,并将 frpsfrps.ini 上传到服务器,我这里上传到了 /usr/local/frp 下。

启动 frp 服务端:

./frps -c ./frps.ini

客户端安装

frp_0.34.3_darwin_amd64.tar.gz 解压,用到的文件其实只有 frpcfrpc.ini

启动 frp 客户端:

./frpc -c ./frpc.ini

启动完服务端和客户端,就可以用了吗?当然不可以,默认的配置都没有修改,接下来就来看看怎么修改。

自定义域名访问内网 Web 服务

这里,我们以「自定义域名访问内网 Web 服务」为例,对服务端和客户端的配置文件(.ini 文件)进行修改。

修改 frps.ini 如下:

[common]
bind_port = 7000
vhost_http_port = 80

这里的 vhost_http_port 是 HTTP 服务绑定的端口,可以修改为其他端口,使用 80 端口的好处是访问的时候域名后不用加端口。

修改 frpc.ini 如下:

[common]
server_addr = 42.194.190.195
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = j.963564449.xyz

这里的 server_addr 就是你服务器的 IP,local_port 是本地程序的端口,custom_domains 是自定义的域名。

还要做几件事情:

  • 将域名 j.963564449.xyz 解析到 42.194.190.195
  • 云服务器安全组要放通 7000 端口
  • 启动本地 80 端口的程序
  • 分别启动服务器和客户端

然后访问 http://j.963564449.xyz 即可。

域名访问

这就是 frp 内网穿透的基本用法,如果觉得够用了下面的不看也可以,但如果觉得不够安全、一个映射不够用等等,那就接着往下看。

frp 进阶玩法

身份认证

为了防止有人随意使用你的 frp 服务,可以添加身份认证,最简单的就是 token 认证。

设置方法:在 frps.ini 和 frpc.ini 的 [common] 段落中配置上相同的 token 参数即可。

例如:

[common]
token = juemruen

当然还有更高级的认证,可以参考文档:「frp 身份认证 」。

设置自启动

前面说到的服务端是通过命令启动的,一旦关闭远程连接,服务就会关闭,那怎么让服务保持后台运行呢?

frp_0.34.3_linux_amd64.tar.gz 解压之后可以看到一个 systemd 目录,将其中的 frps.service 文件复制到服务器的 /etc/systemd/system/ 目录下,并修改 ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini,完整配置文件如下:

[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini

[Install]
WantedBy=multi-user.target

特别提示,如果使用此方法启动 frps 服务,vhost_http_port 又想用 80 端口,需要将配置文件中的 User=nobody 注释掉或删掉,当然也可以使用 Nginx 端口转发,这里就不细说了。

设置 frps 服务开机启动:

sudo systemctl enable frps

启动 frps 服务:

sudo systemctl start frps

这样 frps 服务就可以在后台运行了,即使服务器关机重启也会自动启动。

其他命令如下:

  • 手动重启 frps 服务:
sudo systemctl restart frps
  • 停止 frps 服务:
sudo systemctl stop frps

自定义二级域名

如果同时需要多个代理,那就需要多个域名,是不是要把每个域名都解析到服务器呢?

当然不是, frp 提供了「自定义二级域名」的功能。

首先,解析 *.963564449.xyz 到 42.194.190.195。

然后,修改 frps.ini 如下:

[common]
bind_port = 7000
vhost_http_port = 80
token = juemruen
subdomain_host = 963564449.xyz

再修改 frpc.ini 如下:

[common]
server_addr = 42.194.190.195
server_port = 7000
token = juemruen

[web]
type = http
local_port = 80
subdomain = j

[web1]
type = http
local_port = 8080
subdomain = w

这里的 web 和 web1 的名称可以自定义,但是不能重复。

最后,重启服务端和客户端,分别访问 http://j.963564449.xyzhttp://w.963564449.xyz,也就是本地 80 端口和 8080 端口对应的服务。

这样,即使有很多的代理,也无需一一解析域名,只需要写配置文件就可以了。

服务端 Dashboard

服务端 Dashboard 使用户可以通过浏览器查看 frp 的状态以及代理统计信息。

想要知道有多少客户端连接了服务端?有多少个代理?通过服务端 Dashboard 就可以查看。

在 frps.ini 的 [common] 段落添加下面的代码:

dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin,如果不需要,需要主动设置为空
dashboard_user = admin
dashboard_pwd = admin

云服务器安全组放通 7500 端口,然后访问「服务器IP:7500」,即 http://42.194.190.195:7500,就可以查看 Dashboard 了。

Dashboard

通过 Proxies-->HTTP 可以查看详细信息:

Proxies

当然,文中提到的只是 frp 的部分用法,更多关于 frp 的用法和说明可以参考官方文档:https://gofrp.org/docs

本文由 掘墓人 创作,采用 CC BY-NC-ND 4.0 DEED ,转载或翻译请注明出处。
最后编辑时间为: 2021年01月1日

欢迎关注我的公众号,及时获取最新文章推送。