简单原理:本地服务器(内网)通过和阿里云服务器建立隧道,可以使内网服务器实现公网ip(本文是阿里云服务器ip)访问,有点类似vpn
准备工作:
阿里云服务器一台,备案域名一个(可有可无,有就能用域名访问,无就用ip访问),本地服务器一台(本人用的虚拟机centos7)
链接:https://pan.baidu.com/s/11OnuJF1Ik7ohD4sKQK5uow
提取码:5ztr
本文只介绍安装过程,原理自行百度。
1.下载frp_0.22.0_linux_amd64.tar.gz文件,放置服务器的任意目录下(自己方便找到的),
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
本b博主放在: cd /var/
解压:tar -zxvf frp_0.22.0_linux_amd64.tar.gz
进入解压的文件夹:cd frp_0.8.1_linux_amd64
进去之后注意这四个文件,其他不用管,也不用动:
frps.ini: 服务端配置文件
frps: 服务端软件
frpc.ini: 客户端配置文件
frpc: 客户端软件
步骤一在阿里云服务器与本地服务器同时安装,方法一致,不同的是上面的四个文件的配置不同
2.配置说明
阿里云服务器配置即服务器端的配置文件在:frps.ini
[common]
bind_port = 3389 frps提供的端口
vhost_http_port = 8080 域名访问的端口
[web]
type = http 本地服务器访问理性
local_port = 80 本地服务器访问端口
custom_domains = s.lzh.cn阿里云服务器访问域名
auth_token = ntflzhcn 验证token,随便写,最好是字母加数字
本地服务器配置文件在:frpc.ini
[common]
server_addr = 47.92.22.110 阿里云服务器ip地址
server_port = 3389 阿里云服务器frps提供的端口
auth_token = ntflzhcn 验证token,同阿里云服务器
[web]
type = http 本地服务器的访问类型
local_port = 80 本地服务器访问的端口
custom_domains = s.lzh.cn 同阿里云服务器
阿里云服务器(配置frps.ini )和本地服务器(配置frpc.ini)仅配置这两个文件,其他的都不用动,切记配置对应的文件名。
3.测试是否开通
首先必须在frp文件夹内操作才有效:cd /var/frp_0.22.0_linux_amd64/
启动阿里云服务器端frps(启动做服务端):./frps -c ./frps.ini
出现如图所示内容表示启动成功:
同理,本地服务器进入相应的目录:cd /var/frp_0.22.0_linux_amd64/
启动本地服务器端(启动做客户端)frpc:./frpc -c ./frpc.ini
出现如图所示内容表示启动成功:
4.设置本地服务器的开启自启动(window可以设置方法见文末)(很重要,不然连接无法保持)
本地服务器路径:/usr/lib/systemd/system,创建frpc.service文件,内容如下:
[Unit]
Description=frpc
After=network.target
[Service]
TimeoutStartSec=30
ExecStart=/var/frp_0.22.0_linux_amd64/frpc -c /var/frp_0.22.0_linux_amd64/frpc.ini
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
上述步骤完成后,可能会用到的命令:
启动 frp 并设置开机启动
systemctl enable frps
systemctl start frps
systemctl status frps
阿里云服务器路径如下:/usr/lib/systemd/system,创建frps.service文件,内容如下:
[Unit]
Description=frps
After=network.target
[Service]
TimeoutStartSec=30
ExecStart=/var/frp_0.22.0_linux_amd64/frps -c /var/frp_0.22.0_linux_amd64/frps.ini
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
启动 frp 并设置开机启动
systemctl enable frpc
systemctl start frpc
systemctl status frpc
刚刚配置的服务需要让systemctl能识别,就必须刷新配置
sudo systemctl daemon-reload
5测试:
http://域名:8080 直接访问即可
过程中遇到的问题:
1.本地服务器提示:custom_domains and subdomain should set at least one of them
解决办法即在本地服务器frpc.ini中,添加custom_domains = 域名 即可解决
2.提示未找到站点。
本地服务器添加解析: vi /etc/hosts
补充说明:
1.我用的是备案好的案例云服务器,当然也可以用香港的服务器不用备案,只要你的服务器可以用域名解析并且可以正常访问,都可以做到。
2.我的本地服务器有多个网站,如果只放一个网站问题2应该不会遇到
3. 本地服务器和阿里云服务器我没有做开机自启动,重启后需要再次开启
4.阿里云服务器所涉及到的端口,不仅要在服务器上开启,阿里云控制台安全组也要开启
5.过程中可能会重启frp
查看frp的进程号:ps -aux | grep frp,如下图所示:
杀死该进程:kill -9 17210,接下来按照步骤3启动即可
6.如果要访问多个网站可以参考下图:
阿里云服务端frps.ini
本地服务器端
服务器服务后台运行及自动启动
使用systemd配置开机自启,适用于 centos7 Ubuntu 16 或 debian 8。
vi /etc/systemd/system/frps.service 新建此文件,并写入以下内容:
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/home/developer/frp_0.21.0_linux_amd64/frps -c /home/developer/frp_0.21.0_linux_amd64/frps.ini
Restart= always
RestartSec=1min
[Install]
WantedBy=multi-user.target
启动并设为开机自启。
systemctl start frps //启动
systemctl status frps //状态查询
systemctl enable frps //开机启动
补充一下:
ExecStart=/home/developer/frp_0.21.0_linux_amd64/frps.ini
ExecStart=后面这个是frps文件和配置文件
1、后台运行frp服务
服务端: nohup ./frps -c frps.ini >/dev/null 2>&1 &
客户端: nohup ./frpc -c frpc.ini >/dev/null 2>&1 &
说明:>/dev/null 2>&1 &,表示丢弃。
我们一般使用 nohup command & 命令形式来启动一些后台程序,比如本文第一节问题描述的例子,为了不让执行信息输出屏幕,加上 >/dev/null 2>&1 命令来丢弃所有的输出,使 shell 的状态置为完成。
FRP 是什么?
FRP (Fast Reverse Proxy) 是一款简单,好用,稳定的隧道工具。它是一款高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、KCP、HTTP、HTTPS 等协议类型,并且支持 Web 服务根据域名进行路由转发。绕过复杂的网络对外服务从它开始,Go。
windows开机自启动方法
1、使用系统自带工具设置开机启动
Windows系统自带了启动文件夹,可以将程序的快捷方式放入该文件夹,实现开机自启动的功能。
步骤:右键点击开始菜单,在弹出的快捷菜单中选择“文件夹”,进入启动文件夹。将程序的快捷方式拖动到启动文件夹内即可。
2、使用“任务计划程序”设置开机启动
任务计划程序是Windows系统自带的一种功能强大的定时任务工具。可以通过它来设置开机启动程序。
步骤:在“开始”菜单中搜索“任务计划程序”,打开该程序。点击“创建基本任务”,按照向导进行设置即可。
3、使用第三方软件设置开机启动
有些程序在安装的时候会默认提供开机启动的选项,可以直接勾选。当然,有些程序没有提供这个选项,可以使用第三方软件来实现。
步骤:安装第三方软件,如CCleaner、WinPatrol等。在软件的设置选项中找到“开机启动”选项,将需要开机启动的程序添加进去即可。