场景说明

内网服务器的业务应用系统,需要通过外网域名访问;同时为了后期内网服务器运维方便,需要能够通过ssh连接到内网服务器,方便进行后台管理;
目前拥有资源:
1、云服务器A,有公网IP,安装linux环境;
2、内网服务器B,无公网IP,安装linux环境,并部署业务应用系统;
3、域名(yourdomain.com),设置二级域名(myerp.yourdomain.com)解析到公网IP;

云服务器端

一、安装frps

1、上传frp_0.33.0_linux_amd64.tar.gz文件到服务器/opt目录(可根据实际选择其他目录)下,并解压文件到当前目录;

tar -xf frp_0.33.0_linux_amd64.tar.gz

解压后的frp文件
2、移动解压出的frp_0.33.0_linux_amd64目录到/usr/local目录下,并改名为frps,切换到/usr/local/frps目录下;

mv frp_0.33.0_linux_amd64 /usr/local/frps
cd /usr/local/frps

3、删除frp_0.33.0_linux_amd64目录中的frpc开头的文件(可选操作);

rm frpc*
rm:是否删除普通文件 "frpc"?y
rm:是否删除普通文件 "frpc_full.ini"?y
rm:是否删除普通文件 "frpc.ini"?y

4、关键步骤:配置frps.ini文件内容;
为了保险起见,先备份原frps.ini文件;
然后再修改frps.ini文件内容;详细配置见下面代码内容,如果对配置内容有不理解的地方,可以参考之前整理的关于配置的详细说明文章:内网穿透工具FRP配置文件详解

cp frps.ini frps.ini.bak	#备份原frps.ini配置文件
vi frps.ini					#编辑frps.ini配置文件
cat frps.ini				#查看frps.ini配置内容
[common]
bind_port = 7000
token = 12345678900
vhost_http_port = 80
subdomain_host= yourdomain.com

5、配置好frps.ini文件后,配置开机自动启动;
复制/usr/local/frps/systemd/frps.service文件到/etc/systemd/system/目录下,并修改文件内容,这里面的其他参数都可以保持默认,只需要修改ExecStart参数为实际安装frps的目录即可;

cp /usr/local/frps/systemd/frps.service  /etc/systemd/system/
# 原frps.service内容如下:
cat /etc/systemd/system/frps.service
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini

[Install]
WantedBy=multi-user.target
# 修改frps.service配置内容
vi /etc/systemd/system/frps.service
# 修改后frps.service配置内容如下:
cat /etc/systemd/system/frps.service
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frps/frps -c /usr/local/frps/frps.ini

[Install]
WantedBy=multi-user.target
# 刷新systemctl服务列表
systemctl daemon-reload
#设置开机自启动
systemctl enable frps

#以下暂时不用操作,只需要知道命令格式即可
#关闭自启动
systemctl disable frps
#启动frps服务
systemctl start frps
#查看frps服务状态
systemctl status frps
#停止frps服务
systemctl stop frps

二、配置服务器安全环境

2.1、服务器防火墙开启80、7000、6022端口

firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=6022/tcp
firewall-cmd --permanent --zone=public --add-port=7000/tcp
#重载防火墙
firewall-cmd --reload
#查看开启端口信息
firewall-cmd --list-port

2.2、如果是云服务器,请配置云服务器的安全组规则
云服务器安全组规则配置示例

内网客户机(内网服务器)端

为了与云服务器区别,统称内网客户机服务器为内网机器。

一、安装frpc

操作步骤与云服务器端类似,区别在于frpc.ini的配置。
1、上传frp_0.33.0_linux_amd64.tar.gz文件到内网机器中,并解压到/usr/local/目录下,修改目录名称为frpc;

tar -xf frp_0.33.0_linux_amd64.tar.gz -C /usr/local/
cd /usr/local/
mv frp_0.33.0_linux_amd64 frpc
cd frpc

2、删除frpc目录中frps开头的文件(可选操作)

rm frps*
rm:是否删除普通文件 "frps"?y
rm:是否删除普通文件 "frps_full.ini"?y
rm:是否删除普通文件 "frps.ini"?y

3、关键步骤:配置frpc.ini文件内容;
为了保险起见,先备份原frpc.ini文件;
然后再修改frpc.ini文件内容;详细配置见下面代码内容,如果对配置内容有不理解的地方,可以参考之前整理的关于配置的详细说明文章:内网穿透工具FRP配置文件详解

cp frpc.ini frpc.ini.bak	#备份原frpc.ini配置文件
vi frpc.ini					#编辑frpc.ini配置文件
cat frpc.ini				#查看frpc.ini配置内容
[common]
#此地址是之前记录的一直尝试攻击的地址,不要乱引用
server_addr = 190.48.116.129
server_port = 7000
token = 12345678900

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

[web01]
type = http
local_ip = 127.0.0.1
# 内网web服务的端口号
local_port = 80
subdomain = myerp

3、配置好frpc.ini文件后,配置开机自动启动;
复制/usr/local/frpc/systemd/frpc.service文件到/etc/systemd/system/目录下,并修改文件内容,这里面的其他参数都可以保持默认,只需要修改ExecStart参数为实际安装frpc的目录即可;

cp /usr/local/frpc/systemd/frpc.service  /etc/systemd/system/
# 原frpc.service内容如下:
cat /etc/systemd/system/frpc.service
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini
ExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini

[Install]
WantedBy=multi-user.target
# 修改frpc.service配置内容
vi /etc/systemd/system/frpc.service
# 修改后frpc.service配置内容如下:
cat /etc/systemd/system/frpc.service
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.ini

[Install]
WantedBy=multi-user.target
# 刷新systemctl服务列表
systemctl daemon-reload
#设置开机自启动
systemctl enable frpc

#以下暂时不用操作,只需要知道命令格式即可
#关闭自启动
systemctl disable frpc
#启动frps服务
systemctl start frpc
#查看frps服务状态
systemctl status frpc
#停止frps服务
systemctl stop frpc

二、配置内网机器安全环境和应用环境

2.1、内网机器开启80、22端口(22端口默认是开启的)

firewall-cmd --permanent --zone=public --add-port=80/tcp
#重载防火墙
firewall-cmd --reload
#查看开启端口信息
firewall-cmd --list-port

2.2、启动内网机器的业务应用系统

测试效果

frp服务检查

1、直接启动方式
云服务器端

cd /usr/local/frps
./frps -c ./frps.ini

内网机器端

cd /usr/local/frpc
./frpc -c ./frpc.ini

分别在云服务器端和内网机器端执行以上命令后,控制台输出没有出现错误信息,即表示连接成功。

2、后台启动方式

#云服务器端
nohup ./frps -c ./frps.ini &

#内网机器端
nohup ./frpc -c ./frpc.ini &

这种启动方式会在当前目录输出nohup.out日志文件,记录连接成功或者失败信息。可使用tail -f nohup.out查看日志内容。
3、systemctl方式启动
通过上面配置的开机自启动方式,可直接使用systemctl start frpssystemctl start frpc启动服务。

ssh连接测试

在互联网环境下,通过myerp.yourdomain.com地址和6022端口,使用远程连接工具进行连接测试。

应用访问测试

在互联网环境下,通过myerp.yourdomain.com地址打开网页,检查访问结果。

由于我的环境比较复(za)杂(luan),同时环境的80端口被其他应用占用,进一步使用了nginx转发跳转,这里就不做截图效果分享了。

GitHub 加速计划 / fr / frp
83.05 K
13 K
下载
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
最近提交(Master分支:3 个月前 )
4383756f 25 天前
6ba849fc 1 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐