FRP(Fast Reverse Proxy)作为一种高性能的内网穿透工具,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点(云服务器)的中转暴露到公网。
以下是一些常见的企业级应用场景:
远程办公和远程桌面
远程服务器管理
企业服务的公网访问
视频监控和安防
物联网(IoT)设备管理
开发测试环境的远程访问
企业资源规划(ERP)和CRM系统访问
云服务扩展
企业内部通信和协作工具
通过使用FRP,企业能够在不改变现有网络结构的情况下,提升网络的可访问性和灵活性,同时保持较高的安全性标准。然而,实施FRP时也应考虑网络安全策略,确保只有授权用户可以访问特定的服务。
下面重点讲解FRP在企业中的实际应用,分别从服务端和客户端阐述:
在Linux系统上安装FRP的基本步骤:
首先,你需要下载适合你操作系统版本的FRP二进制文件。假设你正在使用一个基于Linux的系统,你可以使用wget
或curl
来下载。如果你的系统上还没有wget
,需要先安装:
sudo apt-get update
sudo apt-get install wget
对于基于RPM的系统(如CentOS),可以使用:
sudo yum install wget
然后下载最新版本的FRP(以2024年为例,目前是v0.59.1,具体版本号可能不同):
wget https://github.com/fatedier/frp/releases/download/v0.X.Y/frp_0.X.Y_linux_amd64.tar.gz
将v0.X.Y
替换为实际的版本号。
使用tar
命令解压下载的文件:
tar -zxvf frp_0.59.0_linux_amd64.tar.gz
将解压后的文件移动到一个合适的目录,比如/opt/frp_0.59.0_linux_amd64
:
解压目录如下:
FRP使用.toml
格式的配置文件。这些文件需要根据你的需求进行适当的配置。
服务端一般放置在有公网IP的服务器上,通常为云服务器(腾讯,华为、阿里云服务器)
bindPort = 7000
vhostHTTPPort = 8080
#vhostHTTPSPort = 443
auth.method = "token"
auth.token = "token123456_abcdefghijklmn=="
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin.com"
webServer.pprofEnable = false
下面是tcp ,http的配置方法,特别要注意云服务器,例如阿里云要开放remotePort端口
内网服务器:通常企业的开发服务器或测试服务器
serverAddr = "81.71.44.34"
serverPort = 7000
auth.method = "token"
auth.token = "token123456_abcdefghijklmn=="
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin.com"
webServer.pprofEnable = false
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 2212
[[proxies]]
name = "mysql"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3309
remotePort = 33090
[[proxies]]
name = "redis"
type = "tcp"
localIP = "127.0.0.1"
localPort = 6379
remotePort = 33012
[[proxies]]
name = "git"
type = "http"
localIP = "192.168.0.100"
localPort = 82
customDomains = ["git.***.com"]
[[proxies]]
name = "jenkins"
type = "http"
localIP = "192.168.0.100"
localPort = 8088
customDomains = ["jenkins.***.com"]
# tls
#transport.tls.certFile = "/etc/frp/ssl/client.crt"
#transport.tls.keyFile = "/etc/frp/ssl/client.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"
使用nohup
或者screen
等工具来后台运行FRP服务,或者你可以创建一个systemd服务单元文件来管理服务。例如,创建一个名为frps.service
的文件在/etc/systemd/system
目录下,并在其中定义服务,实现开机自启。
内容如下:
[Unit]
Description=Frp Server
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/opt/frp_0.59.0_linux_amd64/frps -c /opt/frp_0.59.0_linux_amd64/frps.toml
ExecStop=/usr/bin/killall frps
RestartSec=1min
KillMode=control-group
Restart=always
[Install]
WantedBy=multi-user.target
如果你的服务器有防火墙,确保打开FRP所需的端口,通常是7000
和7500
。
#内网服务器开放端口方法
firewall-cmd --add-port=3309/tcp --zone=public --permanent
#远程云服务器开放端口
***例如阿里云要开放remotePort端口:安全组,开放端口即可***
新建一个/usr/local/openresty/nginx/conf/apps/frp.conf,内容如下:
location / {
client_max_body_size 1000m;
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_read_timeout 300;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
}
购买云服务器厂商,申请免费3个月的数字证书,放置/usr/local/openresty/nginx/cert目录下
修改nginx.conf文件,加入如下内容
server {
listen 443 ssl;
server_name www.***.com;
root html;
index swagger-ui.html index.html index.htm;
ssl_certificate ../cert/www.***.com.pem;
ssl_certificate_key ../cert/www.***.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
proxy_intercept_errors on;
charset utf-8;
#frp穿透到内网
include apps/frp.conf;
}
在浏览器地址栏输入:https://www.***.com 进行测试
确保一切设置无误后,从客户端尝试连接到服务端,检查是否可以通过公网访问到内网服务。
请注意,上述步骤是基于Linux系统的一般指导。具体版本的FRP可能需要不同的配置选项,因此请参考FRP的官方文档获取最准确的安装和配置指南。此外,安全是关键,确保只允许信任的来源访问你的内网服务。
本文大致分为两方面内容,第一部分是热门前沿科技概述,主要描述有什么与应用场景。第二部分是医疗领域科技前沿,已发生的和可探索的医疗行业的应用场景。