使用frp进行内网穿透
frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。
下载地址:https://github.com/fatedier/frp/releases/
服务端设置:
下载对应版本的安装包(frps是服务器端,frpc是客户端,还有注意对应的CPU架构)
tar -xzvf frp_0.44.0_linux_amd64.tar.gz -C /usr/local/frps
编辑服务端frps.ini配置文件
nano /usr/local/frps/frps.ini
[common]
# 用于客户端和服务端连接的端口
bind_port = 7000
# 用于客户端和服务端连接的口令
token = e8fxAAGBIS7KbhT0Z6iaeTEjTq6kxasb
# 服务端仪表板的端口
dashboard_port = 7500
# 打开仪表板页面登录的用户名和密码
dashboard_user = root
dashboard_pwd = admin
e.g
[common]
bind_addr = 0.0.0.0
bind_port = 6276
bind_udp_port = 6277
token = 30326276
max_pool_count = 10
dashboard_user = caidao
dashboard_pwd = ********
dashboard_port = 3030
vhost_ssh_port = 8022
vhost_http_port = 3080
vhost_tcp_port = 3081
vhost_tcp_port = 3082
vhost_tcp_port = 8822
vhost_tcp_port = 8006
vhost_tcp_port = 5230
#FRP服务器日志相关参数
log_file = /usr/local/frps/frps.log
log_level = info
log_max_days = 7
heartbeat_timeout = 30
配置systemctl来控制frps
nano /etc/systemd/system/frps.service
[Unit]
# 服务名称,可自定义
Description = frps 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
启动frps
# 启动frps
systemctl start frps
# 开机自动启动frps
systemctl enable frps
# 重启frps
systemctl restart frps
# 停止frps
systemctl stop frps
# 查看frps状态
systemctl status frps
设置开机自动启动
systemctl enable frpc
客户端配置
COPY对应的frpc到相应的位置并配置frpc.ini
nano /usr/local/frpc/frpc.ini
[common]
server_addr = 服务器公网ip地址
server_port = 7000
token = e8fxAAGBIS7KbhT0Z6iaeTEjTq6kxasb
[web]
type = http
local_port = 8080
custom_domains = 域名
[rdp]
# 远程桌面
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7001
[smb]
# 远程文件访问
type = tcp
local_ip = 127.0.0.1
local_port = 445
remote_port = 7002
e.g
[common]
server_addr = 172.96.238.75
server_port = 6276
token = ********
[web]
type = http
local_ip = 10.129.245.168
local_port = 80
remote_port = 8080
custom_domains = photo.caidao.net
[ssh]
type = tcp
local_port = 22
remote_port = 8022
heartbeat_timeout = 30
同样的方法配置好客户端的启动控制
出现的一砦问题解决:
配置frps/c开机自启动失败
root@RVHost:~# systemctl status frpc
● frpc.service - frpc service
Loaded: loaded (/etc/systemd/system/frpc.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2023-03-07 17:37:02 CST; 22s ago
Process: 388 ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.ini (code=exited, status>
Main PID: 388 (code=exited, status=1/FAILURE)
CPU: 54ms
Mar 07 17:36:59 RVHost systemd[1]: Started frpc service.
Mar 07 17:37:02 RVHost frpc[388]: 2023/03/07 17:37:02 [W] [service.go:133] login to server faile>
Mar 07 17:37:02 RVHost frpc[388]: dial tcp 172.96.238.75:6276: connect: no route to host
Mar 07 17:37:02 RVHost systemd[1]: frpc.service: Main process exited, code=exited, status=1/FAIL>
Mar 07 17:37:02 RVHost systemd[1]: frpc.service: Failed with result 'exit-code'.
配置完frpc后不能开机自启动,出现如上错误的,可以在frpc的启动配置文件frpc.service里加上下面三条:
User=root #很多时候只要加下面两条就行了
Restart=on-failure #启动失败之后重启
RestartSec=5s #重启间隔为5s