美文网首页我用 LinuxLinuxLinux学习之路
[02]FRP局域网穿透+linux自动监控服务运行

[02]FRP局域网穿透+linux自动监控服务运行

作者: 米米不多 | 来源:发表于2019-01-24 11:45 被阅读2次

FRP局域网穿透+linux自动监控服务运行

需求:需要将demo 在外网上进行展示.有两台服务器:服务器A(外网服务器,有公网IP,有域名),服务器B(内网服务器,无公网IP,通过wifi链接路由器上网,无域名).其中服务器A性能差(qiong),服务器B性能还行(E3, 24G,GTX1070),希望能够从外网访问家里的服务器,包括http访问和ssh访问.

难点:小区宽带,外网IP不能直接访问,不能设置DMZ主机

解决方案:用FRP来配置服务器A和服务器B,实现用域名访问两个服务器,搭建复杂一点的Demo.

关键技术:1.FRP安装配置,2. linux下配置FRP服务,3.linux下用shell脚本实时监控FRP服务运行,重启后也能自动链接上.

FRP安装配置

安装

去github上面下载最新的release, 本文用的是v0.23.1.

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

然后解压

tar zxvf frp_0.23.1_linux_amd64.tar.gz

得到一个文件夹

image

frps 是服务器端程序 frps.ini是服务器端配置 (放到有外网的服务器上)

frpc 是客户端程序 frpc.ini是客户端配置(放到内网服务器上)

配置

frps.ini

 [common]
 bind_port = 7000

frpc.ini

配置ssh登录以及两个网站

[common]
server_addr = xxx.xxx.xxx.xx
server_port = 7000

[ssh]
type = tcp                    #tcp类型链接
local_ip = 127.0.0.1  #本地ip
local_port = 22           #本地端口
remote_port = xxx      #外网访问端口

[web1]
type = tcp
local_port = xxxx
remote_port = xxxx
custom_domains = localhost

[web2]
type = tcp
local_port = xxx
remote_port = xxxx
custom_domains = localhost

后台运行

推荐使用systemctl来管理,比较方便

服务器端配置如下

sudo vim /lib/systemd/system/frps.service

在frps.service里写入以下内容


[Unit]

Description=fraps service

After=network.target

syslog.target Wants=network.target

[Service]

Type=simple #启动服务的命令(此处写你的frps的实际安装目录)

ExecStart=/your/path/frps -c /your/path/frps.ini [Install]

WantedBy=multi-user.target

客户端配置也很类似,到这里,可以通过systemctl start frps[frpc]启动服务了
通过 ssh 外网IP@remote_port可以ssh登录内网服务器了
同理, 对应的外网IP@remote_port 可以访问web1 和web2

但是,如果机器重启了,还需要手动运行这些服务,比较麻烦,而且如果网络中断,可能服务就挂了,需要手动重启服务.如果能够实时监控服务运行状况,而且服务挂了自动运行,就完美了.

监控服务

服务器端监控frps

#!/bin/sh
ps -fe|grep frps |grep -v grep
if [ $? -ne 0 ]
then
echo "start process....."
systemctl start frps
else
echo "runing....."
fi

frps 表示进程特征字符串,能够查询到唯一进程的特征字符串(客户端用frpc代替就可以了)
$?表示上一个脚本运行的返回值
-ne 0 不等于0 表示没有查询到结果
-eq 0 等于0 表示查询到结果

定时监控

每一分钟运行脚本

sudo crontab -e

做如下修改

*/1 * * * * sh /your/path/filename.sh

客户端也要做相应处理,到此,完美解决了这个问题.再也不用担心我的内网穿透问题了.

参考文献:

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

frp 后台运行: https://blog.csdn.net/x7418520/article/details/81077652

监控脚本: https://www.cnblogs.com/anitinaj/p/7457000.html

shell中$?含义: https://www.cnblogs.com/chjbbs/p/6393935.html

linux 定时任务: https://blog.csdn.net/gb4215287/article/details/79496390

相关文章

网友评论

    本文标题:[02]FRP局域网穿透+linux自动监控服务运行

    本文链接:https://www.haomeiwen.com/subject/andyjqtx.html