centos使用frp搭建内网穿透服务
有些时候我们需要在外面访问家里的电脑,但是由于没有公网IP无法访问,这时我们需要对家里的网络进行内网穿透(NAT)。
1. 为什么使用Frp
Frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。安装方式简单,官方文档配置示例齐全,服务端和客户端都有WebUI界面对配置进行管理。
Frp 项目地址:https://github.com/fatedier/frp
Frp 应用下载页面:https://github.com/fatedier/frp/releases
Frp 中文文档地址:https://gofrp.org/docs/
2.准备工作
- 一台有公网IP的主机,这里我使用的腾讯云主机(centos7.6系统)
- 可以访问公共网络但无公网IP的电脑,系统这里也是使用的Centos系统
- 使用ssh客户端登录两台电脑
3.安装
3.3 服务器端的安装和配置
1.首先我们使用
uname -a
命令查看下系统架构信息
这里我的云主机显示的时x86_64位
2.进入页面,下载对应版本的Frp应用包(https://github.com/fatedier/frp/releases)
之前查看的我的系统架构信息是x86,所以我这里应该选择frp_0.37.1_linux_amd64.tar.gz,如果你们的系统架构信息和我的不一样,你们则需要下载对应的版本(一定要使用正确版本,否则无法正常运行)
可以点击下载好后发送到服务器上,也可以右键复制下载链接服务器使用wget命令下载,我这里使用的是第二种方式
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_386.tar.gz
3.解压
tar -zxvf frp_0.37.1_linux_386.tar.gz
解压后的文件夹名称为frp_0.37.1_linux_386.tar.gz
为了后续使用方便,我们这里给重命名文件
# 重命名
mv frp_0.37.1_linux_386.tar.gz frp
# 进入文件夹
cd ./frp
# ls 列出文件
ls
内容如下
# 编辑服务端文件
vim frps.ini
# 内容如下:
[common]
# 服务通信的端口(自定义)
bind_port = 7000
# 服务端认证的token(自定义)
token = xxxx
# 服务端管理界面的端口(自定义)
dashboard_port = 7500
# 服务端管理界面的用户名(自定义)
dashboard_user = admin
# 服务端管理界面的密码(自定义)
dashboard_pwd = xxxx
log_file = ./frps.log
log_level = info
log_max_days = 3
enable_prometheus = true
#编辑完成后 按esc键然后输入 :wq 保存并退出
4.启动frps服务
我们可以使用./frps -c frps.ini
命令启动frps来测试配置是否正确
但是由于以后服务后台运行并且自启动所以我们需要service配置启动
# 服务器运行服务创建
vim /lib/systemd/system/frps.service
# 内容 中间ExecStart 后面的 /root/frp/frps -c /root/frp/frps.ini 中的路径需要设置成你存放frp文件的路径
[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/root/frp/frps -c /root/frp/frps.ini
[Install]
WantedBy=multi-user.target
# 编辑完成后 按esc键然后输入 :wq 保存并退出
# 启动frps服务
systemctl start frps.service
# 查看服务状态
systemctl status frps.service
# 设置为开机自启
systemctl enable frps.service
#查看服务运行日志
journalctl -u frps.service
5.这里我们就配置好了frp得服务端,接下来配置客户端
3.3无公网IP Centos客户端的安装和配置
1.客户端的下载解压过程和服务端一致
2.客户端的配置
# 进入到frp目录后
# 编辑客户端frpc.ini文件
vim frpc.ini
[common]
# 服务端配置的认证的token
token = xxxxxx
# 服务端的公网IP地址(填写你服务器的ip地址)
server_addr = xxx.xx.xx.xx
# 服务端配置的通信端口
server_port = 7000
# 客户端WebUI地址
admin_addr = 127.0.0.1
# 客户端WebUI端口(自定义)
admin_port = 7400
# 客户端WebUI用户名(自定义)
admin_user = xxxxxx
# 客户端WebUI用户名(密码)
admin_pwd = xxxxxx
[ssh]
type = tcp
# 访问的本地的地址
local_ip = 127.0.0.1
# 访问本地的端口
local_port = 22
# 远程访问的端口 即通过 服务器IP:6000 可以访问到内网的 127.0.0.1:22
remote_port = 6000
# 编辑完成后 按esc键然后输入 :wq 保存并退出
3.启动frpc服务
我们可以使用./frpc -c frpc.ini
命令启动frps来测试配置是否正确
但是由于以后服务后台运行并且自启动所以我们需要service配置启动
# 服务器运行服务创建
vim /lib/systemd/system/frpc.service
# 内容 中间ExecStart 后面的 /root/frp/frpc -c /root/frp/frpc.ini 中的路径需要设置成你存放frp文件的路径
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/root/frp/frpc -c /root/frp/frpc.ini
[Install]
WantedBy=multi-user.target
# 编辑完成后 按esc键然后输入 :wq 保存并退出
# 启动frps服务
systemctl start frpc.service
# 查看服务状态
systemctl status frpc.service
# 设置为开机自启
systemctl enable frpc.service
#查看服务运行日志
journalctl -u frpc.service
4.注意事项
1.Frp客户端的WebUI本地访问不到(不知道什么原因),需要配置到远程访问,配置示例如下:
[admin_ui]
type = tcp
local_port = 7400
remote_port = 7400
2.文中涉及的端口需要开放,centos开放端口命令如下
firewall-cmd --zone=public --add-port=7500/tcp --permanent # 开放7500端口
firewall-cmd --zone=public --remove-port=7500/tcp --permanent #关闭7500端口
firewall-cmd --reload # 配置立即生效
3.frpc.ini配置多个穿透时,每个配置上必须要有 [穿透名称] ,并且 [穿透名称] 必须唯一否则运行会出错。
4.当出现无法配置检查不出问题,但还是无法访问时,应该第一时间查看运行日志来排错
journalctl -u frps.service
或者journalctl -u frpc.service