引言
内网穿透(Port Forwarding)是一种网络技术,允许你将外部网络中的请求转发到内部网络中的特定计算机或设备。
内网穿透通常需要一种中间代理或服务器,它位于内部网络和外部网络之间,将外部请求路由到内部目标。这可以通过各种工具和服务来实现,包括专用的内网穿透工具、虚拟专用网络(VPN)和云服务。
其中,frp(Fast Remote Port Forwarding)是一款流行的内网穿透工具。本文手把手教你如何用frp搭建内网穿透服务,使得公网IP的流量穿透你家里内网环境的服务端口。
环境准备
1、一台家用内网主机,安装了Linux等虚拟机(参见上一篇文章https://www.yekunlee.com/archives/linux-redhat9.3xu-ni-ji-an-zhuang,已安装Linux虚拟机);
2、个人电脑,可以使用终端ssh登录Linux虚拟机;
如下图,使用xshell工具ssh登录Linux虚拟机:

3、任意云厂商服务器1台、公网IP 1个;
作者本人是阿里云的服务器,2C2G,公网IP:120.79.121.211

4、frp server和client安装包;
官网自行下载:https://github.com/fatedier/frp/releases

整个原理不复杂,如下图:

将下载的包,上传到阿里云服务器和本地的redhat9.3虚拟机,本地虚拟机配置如下

阿里云服务器:

修改配置
server端修改配置:

服务端放通防火墙端口,即在阿里云配置防火墙放通端口:

client端修改配置:

启动服务
启动后登录frp web服务器,查看客户端
TCP成果检验
如下图,可以看到阿里云服务器的20213端口已经穿透到node3的内网22端口了
进行验证,全部失败,原因是阿里云的防火墙限制

阿里云添加防火墙规则,放通20213端口


至此,内网穿透配置实现完成。
https配置
在阿里云平台添加域名主机记录,比如作者的博客域名blog.yekunlee.com,frp的web域名frp.yekunlee.com

安装caddy
安装参考上一篇文章:
https://blog.yekunlee.com/archives/caddypei-zhi-httpsbing-zi-dong-guan-li-sslzheng-shu
如下图,接下来我们要配置/etc/caddy/Caddyfile

配置好后,启动caddy。
配置frp 服务端
如下图

配置完成后启动frps。
nohup ./frps -c frps.ini > /dev/null 2>&1 &
成果检验
如下图,访问https://frp.yekunlee.com/static/#/成功进入frp的web页面
