当前位置: 首页 > Linux

记得用frp一次完成内网服务器穿透的全过程

时间:2023-04-07 02:05:33 Linux

写在前面是因为之前的ngrok一直用于内网穿透,最新的ngrok1.x版本1.7.1用的,1.7.1有严重的内存泄露问题,plus1.x不再维护,ngrok2.x不再开源,考虑换成内网渗透工具。1、业务场景配置如下:阿里云服务器一台(WindowsServer2012),公网IP。三台内网服务器,包括两台WindowsServer和一台CentOS。已解析为公网IP的一级域名。需求:通过域名或IP可以访问三个内网部署的http服务,通过域名或IP可以与三个内网的远程桌面或SSH通信。二、为什么选择frp开源和经常维护。支持TCP、UDP、HTTP、HTTPS、STCP等协议。Go语言开发占用内存少,代理稳定。简单方便的配置,自定义插件配置和可开发自己业务需求的插件。提供安全暴露内网服务、加密压缩、底层通信可选kcp协议、端口复用、负载均衡、健康检查、URL路由、范围端口映射、请求头处理等众多功能。在第一次之前,您可以也可以通过浏览器查看frp的状态和代理统计的显示。在代理服务器上,您可以在浏览器中访问每个代理状态的可视化仪表板。内网穿透服务器提供查看穿透状态、动态在线配置、热更新配置等功能。三、服务器配置1、开启云服务器端口登录阿里云服务平台,进入实例安全组,开启穿越代理需要的端口。首先打开端口如下:打开TCP端口,7000到7010端口,7000端口是frp服务客户端代理通信的默认端口,7001到7010端口可以代理内网服务器的TCP应用程序的端口,如果不够用,可以扩展端口。开放TCP端口,7080和7443端口,方便HTTP和HTTPS代理。因为云服务器的80和443端口已经被其他应用占用,名字后缀80和443方便内存维护。打开UDP端口,打开7001端口,如果需要提供点对点的内网穿透可以打开。以上端口的开放是不指定的,可以自定义,灵活配置。2、下载frp,进入frp的githubreleases地址查看最新版本。上面已经提供了各种常见操作系统架构的编译包,下载对应云服务器系统的版本。也可以下载源码,安装GoLang环境,自行编译。3、配置frps下载完成后,解压打开文件夹,找到frps.ini文件配置服务器代理规则,frpc开头的文件不会在代理服务器上使用,但会在内网使用服务器。frps.ini配置的基本内容如下:[common]#设置地址和通信端口bind_addr=0.0.0.0bind_port=7000#设置默认UDP端口bind_udp_port=7001#监听7080和7443端口用于HTTP和HTTPSproxy,HTTP和HTTPS端口可以设置成一样vhost_http_port=7080vhost_https_port=7443#设置查看dashboard服务地址和端口,dashboard_addr不设置,默认和bind_addr一样,如果不设置dashboard_port端口,dashboard_addr=0.0.0.0dashboard_port=7500#设置dashboard服务的登录账号和密码,如果不设置,默认为admin。设置Token,尽量配置复杂一点,配置frpc会用到token=123456789#设置日志文件记录路径log_file=./logs/frps.log#设置日志级别,分别为trace,debug,info,warn,errorlog_level=info#设置日志记录的最大天数log_max_days=14.启动frps启动frps服务非常简单。输入以下命令,代理服务器已经启动。./frps-c./frps.ini5.配置frps为系统服务如果服务器是Windows系统,建议使用winsw工具将frps配置为系统服务。下载WinSW.exe或WinSW.zip,将WinSW.exe改名为frps-service.exe写入frps-service.xml配置文件frpsfrps<描述>frpsrollpath/frps.exe-cfrps.ini安装frps到系统服务frps-serviceinstall启动服务frps-servicestart如果服务器是linux系统,systemd目录下已经有下载的frp解压目录的提供了配置frps为系统服务的文件。四、客户端配置1、下载frp,进入frp的githubreleases地址,查看最新编译版本,下载代理系统对应的版本。2、配置frpc下载完成后解压打开文件夹,找到frpc.ini文件配置服务器代理规则。同样,以frps开头的文件也不会在内网服务器上使用。frpc.ini配置的基本内容如下:[common]#frps中设置的云服务器IP地址和通信端口server_addr=x.x.x.xserver_port=7000#authorizationtoken与frpstoken=中配置的相同123456789#设置日志文件记录路径log_file=./logs/frps.log#设置日志记录级别,包括trace、debug、info、warn、errorlog_level=info#设置日志记录的最大天数log_max_days=1#设置可以在浏览器中配置热更新的服务admin_addr=127.0.0.1admin_port=7400admin_user=admin_pwd=admin#tcprange7001-7010#RDP,即RemoteDesktop远程桌面,WindowsRDP默认端口为3389,协议为TCP[rdp]type=tcplocal_ip=127.0.0.1local_port=3389remote_port=7001subdomain=rdp#SMB,Windows文件共享使用的协议,默认端口号为445,协议为TCP。该规则可以实现远程文件访问。#[smb]#type=tcp#local_ip=127.0.0.1#local_port=445#remote_port=7002#代理本地SSH#[ssh]#type=tcp#local_ip=127.0.0.1#local_port=22#remote_port=7003#设置本地80端口HTTP服务的代理#可以通过frps配置的subdomain_host域名访问test.example.com#添加HTTP代理端口,即http://test.example.com:7080[web_test]type=httplocal_port=80subdomain=test4.启动frpc启动frpc的服务和frps类似。./frpc-c./frpc.ini完成后就可以访问测试你穿透的远程连接、SSH、web服务等。5、配置frpc为系统服务这里不再赘述,这和配置frps为系统服务类似。4、HTTPS配置穿透内网的HTTP服务配置为HTTPS主要有两种方式:使用frpc的https2http插件,为本地HTTP服务开启HTTPS,控制需要的服务更加方便简单HTTPS配置,但是如果有很多服务需要对每个内部和外部服务器进行HTTPS穿透,则需要为每个穿透服务生成并配置一个证书,比较麻烦。通过生成泛域名证书,在外网服务器上配置Nginx,代理转发从内网穿透的Web服务。这里主要介绍第二种方法HTTPS配置生成泛域证书配置Nginx证书更新参考资料frp使用原文档地址https://github.com/liuvigongzuoshi/blog