前言
最近在学习网络相关内容,于是回顾一下frp内网穿透如何配置,下面是一些简单的基本流程。
介绍
frp专注于内网穿透,一款反向代理工具,支持多种网络协议,如tcp、http、udp等,通过使用frp让内网服务暴露到公网,将frp从而实现内穿透。
具体操作就是在具有公网ip的节点上,部署frp的服务端,在代理服务器上布置客户端。
下载地址:
职能
frp服务端:服务器端负责监听来自公网的外部请求,通过公网传输到 FRP 服务器, 当 FRP 服务器接收到请求时,转发给内网的 FRP 客户端。从而实现了内网服务对外的映射,即通过 FRP 服务器的公网 IP 和端口访问内网的服务,此外两者可以采用加密手段,保障数据安全。
frp客户端 : 与 FRP 服务器建立连接,两者建立连接后,可以进行双向通信。此时内网服务与客户端相连,指定ip地址,端口等相关信息,此时内网服务可以响应外部请求了。
服务端部署
解压后部署frps.toml文件:
bindPort = 7000
auth.token = "xino"
# 服务端仪表盘的端口, 可以用浏览器访问查看
webServer.addr = "0.0.0.0"
webServer.port = 7500
# 服务端仪表盘的用户密码
webServer.user = "xino"
webServer.password = "xino"
# 虚拟主机端口
vhostHTTPPort = 8080
之后启动frp服务:
./frps -c /etc/frp/frps.ini
客户端部署
下载后配置frpc.toml文件
serverAddr = "公网ip"
serverPort = 7000
auth.token = "xino"
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["公网ip或映射域名"]
之后启动服务即可。
测试
在访问代理服务器上7000端口提供的服务时,就会访问内网22端口提供的服务,此时建立一个新连接,端口号设置为和remotePort一样的端口号,进行连接,输入设置的用户密码即可实现连接。
systemd
由于断开连接后穿透就会消失,于是需要我们利用工具来保持frp穿透长期有效,所以就会用到下面的工具,我们使用systemd实现对frp服务端的后台运行以及开机自启动,安装命令如下:
yum install systemd
下载完后使用以下命令进行配置:
vim /etc/systemd/system/frps.service
在frps.service下写入内容:
[Service]
Type=simple
ExecStart=/home/ubuntu/frp_0.59.0_linux_amd64/frps -c /home/ubuntu/frp_0.59.0_linux_amd64/frps.toml
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit
[Install]
WantedBy=multi-user.target
设置frp开机自启动:
sudo systemctl enable frps