frp介绍
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是 https://github.com/fatedier/frp。
我的环境
- 阿里云轻量级服务器(CentOS7.6 x64 系统)
- 内网主机
frp服务器的搭建
frp版本选择
ssh进服务器,运行以下命令查看操作系统和CPU版本以选择对应的frp对应版本(一般是选择 linux_amd64 版本)
uname -a #或 arch
下载frp程序
使用ssh进入服务器
#切换为以系统管理者的身份执行指令 sudo -i # 下载最新版 frp wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz # 解压 tar -xzvf frp_0.38.0_linux_amd64.tar.gz # 文件夹名改成 frps,不然目录太长了不方便 mv frp_0.38.0_linux_amd64 frps # 进入 frps 目录 cd frps # 确保 frps 程序具有可执行权限 chmod +x frps
然后试着运行一下frps help
./frps --help
正常情况下会输出一串帮助信息,那么就说明你下载了正确架构的版本。如果提示-bash: ./frps: cannot execute binary file: Exec format error 就说明你下错版本了
配置frp服务器
用vi 打开配置文件(vi 的具体使用方法 google 搜索,这里推荐使用宝塔面板,在线修改)
vi frps.ini
配置文件内容解释
# 配置开始 [common] # frp 服务端端口(必须,客户端和它连接的端口) bind_port = 7000 # frp 服务端密码(可以不设置) token = 12345678 # 认证超时时间,由于时间戳会被用于加密认证,防止报文劫持后被他人利用 # 因此服务端与客户端所在机器的时间差不能超过这个时间(秒) # 默认为 900 秒,即 15 分钟,如果设置成 0 就不会对报文时间戳进行超时验证 authentication_timeout = 900 # 仪表盘端口,只有设置了才能使用仪表盘 dashboard_port = 7500 # 仪表盘访问的用户名密码,如果不设置,则默认 admin dashboard_user = admin dashboard_pwd = admin
启动frps
./frps -c frps.ini
提示 Start frps success,这表示服务端启动成功.
防火墙开放端口
# 添加监听端口 sudo firewall-cmd --permanent --add-port=7000/tcp # 添加管理后台端口 sudo firewall-cmd --permanent --add-port=7500/tcp sudo firewall-cmd --reload
7000和7500两个端口分别对应frps.ini配置中的bind_port和dashboard_port
验证服务端是否启动成功
访问:http://服务器IP:后台管理端口” ,输入用户名和密码可以查看连接状态。 如:http://123.123.123.123:7500/,用户名和密码分别对应frps.ini文件中的dashboard_user和dashboard_pwd。 登录后界面如下:
如果上述步骤没有问题,则说明frp的服务端配置成功了,也就意味着内网穿透你已经成功了一半!!!
配置frp客户端
修改frpc.ini文件
[common] # 服务器公网地址 server_addr = xxx.xx.xxx.xx # 端口 server_port = 7000 # frp 服务端密码(和frp服务器设置的一样) token = 12345678 [ssh] #名字,自定义 # 类型 type = tcp # 本地地址 local_ip = 127.0.0.1 # 本地端口(3389远程默认端口) local_port = 3389 # 线上对外暴露端口(自定义但别和有用的端口冲突) remote_port = 33891
根据不同,需求可一起开放多个端口,例:
[common] server_addr = x.x.x.x server_port = 7000 token = 12345678 [rdp] #RDP,即Remote Desktop 远程桌面,Windows的RDP默认端口是3389,协议为TCP type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 33891 [smb] #SMB,即Windows文件共享所使用的协议,默认端口号445,协议TCP,本条规则可实现远程文件访问。 type = tcp local_ip = 127.0.0.1 local_port = 445 remote_port = 33892
配置完成frpc.ini后,就可以运行frpc了 frpc程序不能直接双击运行! 使用命令提示符或Powershell进入该目录下 cd C:\frpc并执行./frpc -c frpc.ini 或直接运行 c:\frpc\frpc.exe -c c:\frpc\frpc.ini 运行frpc程序,窗口中输出如下内容表示运行正常。
2021/12/22 00:04:18 [I] [service.go:301] [7c86f47a473d] login to server success, get run id [7c86f47a473d700b], server udp port [0] 2021/12/22 00:04:18 [I] [proxy_manager.go:144] [7c86f47a473d] proxy added: [ssh] 2021/12/22 00:04:18 [I] [control.go:180] [7c86f47a473d] [ssh] start proxy success
不要关闭命令行窗口,此时可以在局域网外使用相应程序访问 x.x.x.x:xxxx (IP为VPS的IP,端口为自定义的remote_port)即可访问到相应服务。
**
下面进入systemctl来控制linux frp开机自动运行
**
在/usr/lib/systemd/system/目录里创建frps.service文件
[Unit] Description=fraps service After=network.target syslog.target Wants=network.target [Service] Type=simple #启动服务的命令(此处写你的frps的实际目录就是根目录向后一直到frps文件的位置) ExecStart=/usr/local/frps/frps -c /usr/local/frps/frps.ini [Install] WantedBy=multi-user.target
linux frp开机自动的服务运行命令如下:
sudo systemctl start frps
然后把这个服务文件加入后台使linux frp自动运行让frp跟随linux自动启动的命令如下
sudo systemctl enable frps
查看frps应用的日志,可以输入,
sudo systemctl status frps
重启frps应用,可以这样,
sudo systemctl restart frps
停止frps应用,可以输入,
sudo systemctl stop frps
systemd重启系统命令
sudo systemctl reboot
评论已关闭