重要资料
fatedier/frp - github
官方文档 | frp
司波图/自建内网穿透服务器 - 码云
1$ tree /opt/frp
2/opt/frp
3├── frpc
4├── frpc_full.ini
5├── frpc.ini
6├── frps
7├── frps_full.ini
8├── frps.ini
9└── LICENSE
1.SSH访问内网机器
1.1.Server配置
在具有公网 IP 的机器上部署 frps,修改 frps.ini 文件,这里使用了最简化的配置,设置了 frp 服务器用户接收客户端连接的端口。
1#/opt/frp/frps.ini
2[common]
3bind_port = 7000 # 注意:需要在云服务设置开放7000端口
4# 身份验证(可选)
5token = i*RY2KI9^A7H
6# web界面
7dashboard_port = 7500
8# dashboard 用户名密码,可选,默认为空
9dashboard_user = admin
10dashboard_pwd = admin
运行方式:/opt/frp/frps -c /opt/frp/frps.ini
1.2.Client配置
在需要被访问的内网机器上(SSH 服务通常监听在 22 端口)部署 frpc,修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x。
local_ip 和 local_port 配置为本地需要暴露到公网的服务地址和端口。remote_port 表示在 frp 服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。
1#/opt/frp/frpc.ini
2[common]
3server_addr = x.x.x.x
4server_port = 7000
5# 身份验证(可选)
6token = i*RY2KI9^A7H
7
8[ssh]
9type = tcp
10local_ip = 127.0.0.1
11local_port = 22
12remote_port = 6000 # 注意:需要在云服务器上开放6000端口
运行方式:/opt/frp/frpc -c /opt/frp/frpc.ini
公网机器ssh访问内网机器的方式:ssh -p 6000 firefly@localhost
公网机器scp访问内网机器的方式:scp -P 6000 ./* firefly@localhost:/opt
注意:不要使用后台方式运行,nohup /opt/frp/frpc -c /opt/frp/frpc.ini 2>&1 &
,否则下次连接可能会遇到以下报错:frp错误,frp报错,[ssh] start error: proxy name [ssh] is already in use_狗狗25的博客-CSDN博客
1.3.设置frps开机自启动
1$ sudo vim /etc/systemd/system/frps.service
2$ systemctl cat frps
3# /etc/systemd/system/frps.service
4[Unit]
5# 服务名称,可自定义
6Description = frp server
7After = network.target syslog.target
8Wants = network.target
9
10[Service]
11Type = simple
12# 启动frps的命令,需修改为您的frps的安装路径
13ExecStart = /opt/frp/frps -c /opt/frp/frps.ini
14
15[Install]
16WantedBy = multi-user.target
1# 配置 frps 开机自启
2systemctl enable frps
3# 启动frp
4systemctl start frps
5# 停止frp
6systemctl stop frps
7# 重启frp
8systemctl restart frps
9# 查看frp状态
10systemctl status frps
1.4.设置frpc开机自启动
1$ sudo systemctl cat frpc
2# /etc/systemd/system/frpc.service
3[Unit]
4# 服务名称,可自定义
5Description = frp client
6After = network.target syslog.target
7Wants = network.target
8
9[Service]
10Type = simple
11# 启动frps的命令,需修改为您的frps的安装路径
12ExecStartPre = /bin/sleep 10
13ExecStart = /opt/frp/frpc -c /opt/frp/frpc.ini
14
15[Install]
16WantedBy = multi-user.target
1$ systemctl get-default
2graphical.target
3$ cd /etc/systemd/system
4$ sudo vim frpc.service
5$ sudo systemctl enable frpc
6Created symlink /etc/systemd/system/multi-user.target.wants/frpc.service → /etc/systemd/system/frpc.service.
7$ sudo systemctl status frpc
8● frpc.service - frp client
9 Loaded: loaded (/etc/systemd/system/frpc.service; enabled; vendor preset: enabled)
10 Active: inactive (dead)
11$ sudo systemctl restart frpc
12$ sudo systemctl status frpc
13● frpc.service - frp client
14 Loaded: loaded (/etc/systemd/system/frpc.service; enabled; vendor preset: enabled)
15 Active: active (running) since Sun 2023-08-06 05:13:52 UTC; 8s ago
16 Main PID: 1361 (frpc)
17 CGroup: /system.slice/frpc.service
18 └─1361 /opt/frp/frpc -c /opt/frp/frpc.ini
19
20Aug 06 05:13:52 firefly systemd[1]: Started frp client.
21Aug 06 05:13:52 firefly frpc[1361]: 2023/08/06 05:13:52 [I] [root.go:220] start frpc service for config file [/opt/frp/frpc.ini]
22Aug 06 05:13:53 firefly frpc[1361]: 2023/08/06 05:13:53 [I] [service.go:301] [f8d3384fbb8c1471] login to server success, get run id [f8d3384fbb8c1471]
23Aug 06 05:13:53 firefly frpc[1361]: 2023/08/06 05:13:53 [I] [proxy_manager.go:150] [f8d3384fbb8c1471] proxy added: [ssh]
24Aug 06 05:13:53 firefly frpc[1361]: 2023/08/06 05:13:53 [I] [control.go:172] [f8d3384fbb8c1471] [ssh] start proxy success
2.Systemd
2.1 service命令
service
其实是去/etc/init.d
目录下执行相关程序
1# service命令启动redis脚本
2service redis start
3# 直接启动redis脚本
4/etc/init.d/redis start
5# 开机自启动
6update-rc.d redis defaults
7# 查看服务状态
8service redis status
2.2 systemctl命令
systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemd对应的进程管理命令是systemctl
systemctl命令兼容了service,即systemctl也会去/etc/init.d目录下,查看执行相关程序。
systemctl命令管理systemd的资源Unit放在目录/usr/lib/systemd/system
(Centos)或/etc/systemd/system
(Ubuntu),主要有四种类型文件.mount,.service,.target,.wants
1systemctl redis start
2systemctl redis stop
3systemctl enable redis
4systemctl status redis