frp的简要介绍
远程访问管理服务器需要一个公网的IP frp是一款好用内网穿透工具,FRP 全名:Fast Reverse Proxy。FRP 是一个使用 Go 语言开发的高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。
下载frp
https://link.zhihu.com/?target=https%3A//github.com/fatedier/frp/releases
frp文件内容
frps与frps.ini是外网服务器端要使用的文件 frpc与frpc.ini是内网主机要使用的文件
准备
需要一个具有公网ip的服务器,例如阿里云租用的服务器
公网服务器端
修改配置文件
vi frps.ini
如下:
[common]
bind_port = 7000 #frp服务端端口
配置很简单,然后启动:
nohup ./frps -c frps.ini &
内网机器上配置并启动
修改配置文件
vi frpc.ini
如下:
[common]
server_addr = 0.0.0.0 #frp服务端地址,可以填ip或者域名,这里假设为0.0.0.0
server_port = 7000 #frp服务端端口,即填写服务端配置中的 bind_port
[ssh1]
type = tcp #连接类型,填tcp或udp
local_ip = 127.0.0.1 #填127.0.0.1或内网ip都可以
local_port = 22 #需要转发到的端口,ssh端口是22
remote_port = 5000 #frp服务端的远程监听端口,即你访问服务端的remote_port就相当于访问客户端的 local_port,如果填0则会随机分配一个端口
启动客户端程序:
nohup ./frpc -c frpc.ini &
访问内网机器
ssh -p 5000 username@server_addr
username 是内网机器的用户名,server_addr是公网服务器的IP, port 5000就是设置的 remote_port,登录密码是内网机器的密码
注意
需要在公网服务器端开放相应的端口(例如阿里云),在安全组配置中设置,本例中开放7000与5000端口
映射多台内网机器
如果链接多个主机,将frpc中的remote_port设置为不一样的端口。同时修改frpc中的【ssh1】这个实例名
重启应用
创建脚本frp.sh
touch restartfrp.sh
sudo chomd +x frp.sh
vim restartfrp.sh
编辑脚本frp.sh
restartService(){
app_name='frpc' #frpc对应客户端;frps对应服务端
dir_base='/usr/local/frp/frp_0.27.0_linux_amd64' # 安装目录
#检查进程是否关闭
pidlist=`ps -ef|grep ${app_name} |grep -v "grep"|awk '{print $2}'`
if [ "$pidlist" = "" ]
then
echo "no eappt pid alive!"
else
echo "java Id list :$pidlist"
kill $pidlist
echo "KILL $pidlist:"
echo "service stop success"
fi
sleep 5
nohup ${dir_base}/frpc -c ${dir_base}/frpc.ini >frpc.log & #frpc对应客户端;frps对应服务端
}