不求甚解

此博客为个人学习之用,如与其他作品雷同,纯属巧合。

导航

Frp内网穿透(一)

Posted on 2021-06-28 09:45  三年三班王小朋  阅读(130)  评论(0编辑  收藏  举报

ftp简介

frp

  • frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https协议。
  • 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
  • 对于 http, https服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
  • 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

软件包下载地址

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

服务器端

tar xzvf frp_0.21.0_linux_amd64.tar.gz -C /usr/local/ 
cd /usr/local/ 
mv frp_0.21.0_linux_amd64/ frp 
cd frp 
vim frpc.ini

服务器端配置

[common]
bind_port = 7000
dashboard_port = 10001
token = *************
dashboard_user = admin
dashboard_pwd = password
vhost_http_port = 10002
vhost_https_port = 10003

bind_addr和bind_port是服务启动监听的端口,这里addr配置成0.0.0.0默认是本机。
dashboard_port:web访问的端口
dashboard_user:web访问的用户名
dashboard_pwd:web访问的密码
max_pool_count:最多能有多少个frpc链接上来

服务器端启动

nohup /usr/local/frp/frps -c /usr/local/frp/frps.ini >> logout.log 2>&1 &     //启动

 客户端配置

[common]
server_addr = xxxxxx
server_port = 10010

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[DSM]
type = tcp
local_ip = 群晖在局域网中的 IP 地址
local_port = 5000
remote_port = 7002

[web]
type = tcp
local_ip = 内网服务器ip
local_port = 80
custom_domains = 外网服务器ip

server_addr:上面配置的服务器的IP地址。
server_port:上面配置服务器的端口,就是bind_port的值。
type = tcp:连接类型是tcp。
local_ip:本地IP,这个配置成127.0.0.1即可。
local_port:本地端口是22,ssh默认端口,轻易不要改变。
remote_port:远端端口6000,这个比较重要,这个端口其实就是我们在任何地方访问这个设备的端口。

客户端启动

nohup /usr/local/frp/frpc -c /usr/local/frp/frpc.ini >> logout.log 2>&1 &   //启动

centos7客户端服务器脚本 

vi /usr/lib/systemd/system/frps.server

客户端需要更改红色字体对应路径

[Unit]
Description=Frp Server Service
After=network.target
 
[Service]
Type=simple
User=root
# 失败后5秒重启
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
 
[Install]
WantedBy=multi-user.target

 

启动并设置开机启动

daemon-reload && systemctl start frp.service && systemctl enable frp.service

centos6客户端/服务器端脚本

#!/bin/bash
#auther by wangxp
PWD
=`pwd`
#客户端要把下面三个红色字体变量的frps都替换成frpc EXE_FRP
=${PWD}/frps CONFIG_FRP=${PWD}/frps.ini PROG='frps' function getPid { PID=`ps -ef | grep $PWD | grep -v grep | awk '{print $2}'|awk 'NR==1'` } getPid case $1 in start) echo "---PID---$PID" if [ ! $PID ];then nohup $EXE_FRP -c $CONFIG_FRP>> output.log 2>&1 & sleep 0.5 getPid echo -e "$PROG is \033[32mActive\033[0m, PID = $PID" else echo "$PROG is exist, PID = $PID" fi ;; stop) if [ $PID ];then kill -15 $PID >> output.log 2>&1 sleep 0.5 getPid echo -e "$PROG is \033[31mDead\033[0m" else echo "$PROG is not exist" fi ;; restart) $0 start sleep 1 $0 stop ;; *) echo "Usage:{$0 start|stop|restart}" ;; esac exit 0

 

 其他应用

 服务器心跳检测微信报警(已上传wechat微信告警程序)

vim hearbeatAlert.sh

#!/bin/bash
TEST=`tail -n 1 /usr/local/frp/output.log | grep "request error"`
TIME=`date '+%F %T'`
if [ ! -z "$TEST" ]; then

/usr/local/wechatapp/wechat \
--msg="$TIME  检测到zabbix服务器访问请求错误,请检查网络和服务器配置!" \
--corpid=ww8d233e07cc2f44d2 \
--corpsecret=pMWGGbnU3NVmOVBH0mEpiqjBhxYzgQSHS5WqO6e710c \
--user=BuJiDao \
--agentid=1000002 >/dev/null 2>&1\

fi
exit 0

定时报警

 crontab -e

* * * * * /usr/local/wechatapp/hearbeatAlert.sh

 

 windows开机启动frp

开机后台启动 https://www.playezu.com/28936.html