下载地址: wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz 下面两个是配置好了服务端与客户端的frp 1:准备 ``` 一台公网服务器(配置无要求网络稳定就行),服务器端,如公网IP:121.41.4.166。 内网客户端(准备要穿透出去的设备),客户端,如内网IP:192.168.10.195。 ``` 2:下载解压安装包 ``` gitlab地址:GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.,可以在 Release 页面中下载到最新版本的客户端和服务端二进制文件,所有文件被打包在一个压缩包中。 这里使用的是上面的 frp.tar.gz 上传服务器,进入文件夹,有两个名称文件frpc(c结尾代表client)和frps(s结尾代表server),分别是服务端程序和服务端配置程序。 需要将frpc拷贝至客户端,即内网服务器,或者在客户端直接下载也可以,客户端只需要使用frpc文件即可。 ``` 配置服务器端和客户端,及启动 1:配置服务器端 ``` 这里是为服务端配置frp 只关注frps和frps.ini即可,原始最简单配置为。 [root@iZbp126fstzhkzq3ifwcmrZ frp]# cat frps.ini [common] #隧道通道,服务器和客户端通过此端口通讯 bind_port = 7000 #客户端需要设置一样的token值才能鉴权通过 token = usky2025 最简单也可以直接使用,先不配置其他测试使用先。 ``` 2:配置客户端 ``` 只关注frpc和frpc.ini即可,修改frpc.ini。 [root@localhost frp]# vim frpc.ini 原始配置已经有ssh的端口配置,所以修改server_addr为服务器IP即可。 [common] server_addr = 121.41.4.166 server_port = 7000 #token和服务器一致 token = usky2025 [ssh] type = tcp #本机IP local_ip = 127.0.0.1 #本机需要映射的端口22(此端口为ssh端口,WSL2有可能设置为2222或其他端口,这里需要注意) local_port = 22 #远程服务器映射的端口为6715 remote_port = 6715 ``` 3:分别启动服务器端和客户端 ``` 注:服务器,如有防火墙,请开启7000端口和有需要的端口。 服务器运行启动: [root@iZbp126fstzhkzq3ifwcmrZ frp]# ./frps -c frps.ini 客户端运行启动: [root@localhost frp]# ./frpc -c frpc.ini 可以看到提示,都已经启动成功 测试ssh连接,这里用第三方工具xshell测试。 连接IP 为公网IP地址,端口为6715端口。 连接登录,即可登录到内网的192.168.10.195机器。 最简单的ssh端口映射就完成了。 ``` 升级配置 原始配置简单,但是如果需要其他功能,可自行添加,如下: 1:服务器端配置 ``` [root@iZbp126fstzhkzq3ifwcmrZ frp]# vim frps.ini 修改如下 [common] #隧道通道,服务器和客户端通过此端口通讯 bind_port = 7000 #客户端需要设置一样的token值才能鉴权通过 token = usky2025 #http服务端口 vhost_http_port = 8080 #https服务端口 vhost_https_port = 8443 # dashboard网页管理界面,以及设置账户密码(非必须,未配置则直接进入) dashboard_port = 7500 dashboard_user = usky dashboard_pwd = usky#2025Yt ``` 2:客户端配置 ``` [root@localhost frp]# vim frpc.ini 修改如下 [common] server_addr = 121.41.4.166 server_port = 7000 #token和服务器一致 token = usky2025 [ssh] type = tcp #本机IP local_ip = 127.0.0.1 #本机需要映射的端口22(此端口为ssh端口,WSL2有可能设置为2222或其他端口,这里需要注意) local_port = 22 #远程服务器映射的端口为6715 remote_port = 6715 [crm-web] type = tcp local_ip = 127.0.0.1 local_port = 8443 remote_port = 9080 [crm-h5] type = tcp local_ip = 127.0.0.1 local_port = 8080 remote_port = 9081 #[web] #type = http #本地http服务端口,默认80,按需配置 #local_port = 80 # 绑定域名,注:配置http,必须需要域名,否则报错。如没有,可采用普通的tcp模式映射。 #custom_domains = xxx ``` 3:启动测试 ``` 分别启动客户端和服务器端 服务器运行启动: [root@iZbp126fstzhkzq3ifwcmrZ frp]# sh start.sh #脚本中是:nohup ./frps -c ./frps.ini >> frps.log 2>&1 & 客户端运行启动: [root@localhost frp]# ./frpc -c frpc.ini #脚本中是:nohup ./frpc -c ./frpc.ini >> frpc.log 2>&1 & 浏览器打开web管理界面,http://121.41.4.166:7500/,输入账户密码,可查看端口映射相关情况。 同时访问:http://121.41.4.166:9080,即可访问跳转到到内网192.168.10.195机器的http服务。 ``` 设置frp开机自启动 1、服务端配置frps.ini ``` 在/etc/systemd/system/目录下创建服务文件 [root@iZbp126fstzhkzq3ifwcmrZ frp]# pwd /data/frp [root@iZbp126fstzhkzq3ifwcmrZ frp]# cd /etc/systemd/system/ [root@iZbp126fstzhkzq3ifwcmrZ system]# vim frps.service 填入以下信息,ExecStart自行替换为你自己的frp启动命令 [Unit] Description=frps #客户端请修改为frpc After=network.target Wants=network.target [Service] Restart=on-failure RestartSec=5 ExecStart=/data/frp/frps -c /data/frp/frps.ini #客户端请修改正确路径并使用frpc [Install] WantedBy=multi-user.target [root@iZbp126fstzhkzq3ifwcmrZ system]# systemctl daemon-reload [root@iZbp126fstzhkzq3ifwcmrZ system]# systemctl status frps.service ● frps.service - frps Loaded: loaded (/etc/systemd/system/frps.service; disabled; vendor preset: disabled) Active: inactive (dead) # 因为之前是直接命令启动的,先杀死之前启动的frp,然后再命令启动 ``` 2、客户端配置frpc.ini ``` 客户端同样在/etc/systemd/system/目录下创建服务文件 下面是一些常用的systemctl命令 # 刷新服务列表 systemctl daemon-reload # 启动服务 systemctl start frps.service # 停止服务 systemctl stop frps.service # 重启服务 systemctl restart frps.service # 查看服务状态 systemctl status frps.service # 设置开机自启 systemctl enable frps.service # 查看是否设置开机自启 systemctl is-enabled frps.service # 关闭开机自启 systemctl disable frps.service ```