作者:怪物-pp_912 | 来源:互联网 | 2023-09-07 12:34
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
mkdir /usr/local/frpmv frp_0.38.0_linux_amd64/* /usr/local/frp/
frps.ini: 服务端配置文件 frps: 服务端软件 frpc.ini: 客户端配置文件 frpc: 客户端软件
2. 配置systemctl来控制,服务端运行 vim /usr/lib/systemd/system/frp.service
写入以下内容,注意上文移动放置的路径和此处有关。这里是启动的服务端 。 [ Unit] Description = The nginx HTTP and reverse proxy serverAfter = network.target remote-fs.target nss-lookup.target[ Service] Type = simpleExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.iniKillSignal = SIGQUITTimeoutStopSec = 5 KillMode = processPrivateTmp = trueStandardOutput = syslogStandardError = 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 vhost_http_port = 80 token = 123 [ ssh] listen_port = 6000 是自己设定的ssh访问端口[ web] type = http custom_domains = test1.a.com [ web2]
示例
[ common] bind_port = 700 vhost_http_port = 9080 [ ssh] listen_port = 6000 [ web] type = http custom_domains = onlylmf.cn
./frps -c ./frps.ininohup ./frps -c ./frps.ini & netstat -auntp| grep 700 kill -9 xxxx
至此服务端就已经启动成功了!
3.2 客户端 因为我使用的是win10
所以直接下载 cmd运行了
https://github.com/fatedier/frp/releases
选择自己操作系统对应的版本进行下载
解压后 得到该目录
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[ 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.ininohup ./frpc -c ./frpc.ini &
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
先在服务器上安装frps 步骤如前面的步骤
下载安装后 配置frps.ini
我这边定义的 [web] 是我另外的穿透 现在使用的是 [Myrouter]
然后后台启动 服务端
在家里路由器上安装客户端 注 : 因为我刷了openwrt的固件 所以下载frpc客户端 以及luci可视化的管理页面
可以在 软件包里搜索下载 frpc 、luci-app-frpc 、 语言包 luci-i18n0-frpc-zh-cn
如果搜索不到 就先下载到本地 然后在通过文件传输到 路由上
装好后 如果服务里没有显示 Frp内网穿透 那么可能是缓存引起的
登录路由器的ssh 把luci的缓存清空后 重启
rm /tmp/luci-indexcachereboot
在如果 都安装完成了 但一直frp显示未启动 那么可能是被禁止了 去系统的启动项去 找到frp 启动
然后不出意外的话应该就好了
进行全局和服务列表的配置
保存后 配置服务列表
点击添加后
至此就配置完成了
验证 在本地访问服务端的可视化界面查看
当时在frps.ini中配置了 dashboard_port
就是访问端口 还要记得在服务器的防火墙将设置的端口开放
设置 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/;}}
然后 访问自定义域名 则成功访问到转发网址