热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

frp记录

frp入门使用记录简介:frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便

frp入门使用记录

简介: frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网

目前是因为没有公网ip 所以使用服务器的公网去映射


1. 安装


  • 下载

wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz

  • 解压

tar -xvf frp_0.38.0_linux_amd64.tar.gz

  • 移动至 /usr/local

mkdir /usr/local/frp
mv frp_0.38.0_linux_amd64/* /usr/local/frp/

  • 文件说明

frps.ini: 服务端配置文件
frps: 服务端软件
frpc.ini: 客户端配置文件
frpc: 客户端软件

2. 配置systemctl来控制,服务端运行


  • vim新建文件并写入配置内容

vim /usr/lib/systemd/system/frp.service

  • 写入以下内容,注意上文移动放置的路径和此处有关。这里是启动的服务端

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit[Install]
WantedBy=multi-user.target

  • 重新加载服务的配置文件

systemctl daemon-reload

  • 现在就可以用 systemctl 套装来控制 frp 了。
  • 启动/停止/重启,查看状态,设置开机自启/关闭开机自启

systemctl start frp
systemctl stop frp
systemctl restart frp
systemctl status frp
systemctl enable frp
systemctl disable frp

3. 配置和使用


3.1 服务端

frps.ini

[common] #必须设置
bind_port = 7000 #是自己设定的frp服务端端口
vhost_http_port = 80 #是自己设定的http访问端口
token = 123 #核实身份用,加了更安全[ssh] #ssh反向代理(不是必须设置)
listen_port = 6000 是自己设定的ssh访问端口[web] #http反向代理[]里的内容可以自己设定,但是客户端和服务端必须要对应(如[aaa],[bbb]);
type = http #为服务类型,可以设为http,https
custom_domains = test1.a.com #为要映射的域名,记得域名的A记录要解析到外网主机的IP。[web2] #同上(可设置多个)

示例

[common]
bind_port = 700
vhost_http_port = 9080[ssh]
listen_port = 6000[web]
type = http
custom_domains = onlylmf.cn

  • 启动

./frps -c ./frps.ini# 后台启动
nohup ./frps -c ./frps.ini &# 因为我设置的端口是700 如果想关闭服务
netstat -auntp|grep 700
# 然后结束掉该进程 xxx是该pid
kill -9 xxxx

image-20220830142501385

至此服务端就已经启动成功了!


3.2 客户端

因为我使用的是win10

所以直接下载 cmd运行了


  • 下载

https://github.com/fatedier/frp/releases

选择自己操作系统对应的版本进行下载

image-20220902164451593

解压后 得到该目录

image-20220902164445625


frpc.ini


[common]
server_addr = 远程frp服务器ip
server_port = 远程frp服务器端口
token = 远程frp服务器token[http]
type = http
local_ip = 127.0.0.1
local_port = 本地端口号
remote_port = 远程frp服务器的http服务端口号
custom_domains = 自定义配置的域名
subdomain = 匹配服务端配置的subdomain_host

示例

[common]
server_addr = 121.41.12.64
#绑定端口要和服务端配置的一样
server_port = 700 [web]
type = http
local_ip = 192.168.3.46
local_port = 80
custom_domains = szy.frp.onlylmf.cn
#subdomain = zxy[web2]
type = http
local_ip = 192.168.0.166
local_port = 11180
custom_domains = tf.frp.onlylmf.cn[lapis]
type = http
local_ip = 127.0.0.1
local_port = 11180
custom_domains = lapios.frp.onlylmf.cn

启动


./frpc -c ./frpc.ini# 后台启动
nohup ./frpc -c ./frpc.ini &

image-20220902164438544


4. Nginx 配置


  • 在域名网站 解析自定义域名后申请免费是ssl证书 下载crt和key放在服务器中

  • 配置nginx配置

    # 将访问80端口的网址 跳转到443
    server{listen 80;server_name 需要跳转的网址;add_header cettt $http_host; # 这里是自定义头rewrite ^(.*)$ https://$http_host$1 permanent;}server {listen 443 ssl;server_name 需要转发的域名;ssl_certificate 对应的ssl证书的crt.crt;ssl_certificate_key 对应的ssl证书的key.key;ssl_session_timeout 30m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;add_header ffff $http_host; # 这里是自定义头location / {proxy_redirect off;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://127.0.0.1:8090/;}}


5. 配置连接家里的路由器

纯属是我自己的需要而已

因为我租的房子网络没有公网ip 用不了DDNS 所以使用frp进行内网穿透

因为买的一个阿里云的服务器没怎么用 就把服务端放在服务器上 使用服务器的公网ip


  1. 先在服务器上安装frps

步骤如前面的步骤

下载安装后 配置frps.ini

image-20220902164354435

我这边定义的 [web] 是我另外的穿透 现在使用的是 [Myrouter]

然后后台启动 服务端


  1. 在家里路由器上安装客户端

: 因为我刷了openwrt的固件 所以下载frpc客户端 以及luci可视化的管理页面

​ 可以在 软件包里搜索下载 frpc 、luci-app-frpc 、 语言包 luci-i18n0-frpc-zh-cn

​ 如果搜索不到 就先下载到本地 然后在通过文件传输到 路由上

image-20220902164348675


  • 装好后 如果服务里没有显示 Frp内网穿透 那么可能是缓存引起的

    登录路由器的ssh 把luci的缓存清空后 重启

    rm /tmp/luci-indexcachereboot

  • image-20220902164338759

    在如果 都安装完成了 但一直frp显示未启动 那么可能是被禁止了 去系统的启动项去 找到frp 启动

    image-20220902164334159

    然后不出意外的话应该就好了


  1. 进行全局和服务列表的配置

image-20220902164327921

保存后 配置服务列表

点击添加后

image-20220902175052975

至此就配置完成了


  1. 验证 在本地访问服务端的可视化界面查看

image-20220902164306837

当时在frps.ini中配置了 dashboard_port 就是访问端口 还要记得在服务器的防火墙将设置的端口开放

image-20220902164255269


  1. 设置 ssl 配置nginx 转发


  • 前提是申请 对应的自定义域名的证书 下载crt和key 放入服务器中

  • 配置nginx

    server {listen 443 ssl;server_name 需要跳转的域名;ssl_certificate 申请的ssl的crt路径.crt;ssl_certificate_key 申请的ssl的key路径.key;ssl_session_timeout 30m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;add_header ffff $http_host; # 这里是自定义头location / {proxy_redirect off;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://127.0.0.1:9080/;}}

    然后 访问自定义域名 则成功访问到转发网址


推荐阅读
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 公司计划部署邮件服务器,考虑到已有域名,决定自行搭建内部邮件服务器。经过综合考量,最终选择在Linux环境中进行搭建,并记录了相关配置和实践过程。本文将详细介绍Postfix的基本设置步骤和实践经验,帮助读者快速掌握邮件服务器的搭建方法。 ... [详细]
  • Windows环境下详细教程:如何搭建Git服务
    Windows环境下详细教程:如何搭建Git服务 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • Linux入门教程第七课:基础命令与操作详解
    在本课程中,我们将深入探讨 Linux 系统中的基础命令与操作,重点讲解网络配置的相关知识。首先,我们会介绍 IP 地址的概念及其在网络协议中的作用,特别是 IPv4(Internet Protocol Version 4)的具体应用和配置方法。通过实际操作和示例,帮助初学者更好地理解和掌握这些基本技能。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 基于域名、端口和IP的虚拟主机构建方案
    本文探讨了在单台物理服务器上构建多个Web站点的虚拟主机方案,详细介绍了三种主要的虚拟主机类型:基于域名、基于IP地址和基于端口的虚拟主机。每种类型的实现方式及其优缺点均进行了深入分析,为实际应用提供了全面的技术指导。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
author-avatar
怪物-pp_912
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有