- 使用Systemd的linux系统,我的是debian 9.6
- frp v0.23.1
从https://github.com/fatedier/frp/releases下载对应系统的包。解压后将frpc
复制到/usr/bin
目录
$ sudo cp frpc /usr/bin
创建配置文件/etc/frpc.ini
,写入以下内容
[common]
server_addr = <服务端ip或域名>
server_port = 7000
token = <服务密码,客户端和服务端要一致>
admin_port = 7001 <-- 这个是frp进程控制端口,frp reload命令必须
#log_file =
#log_level = info
#log_max_days = 3
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2022
这里把客户端主机主机的22端口映射到服务端主机的2022端口,访问服务端主机的2022端口就相当于访问客户端主机的22端口。把服务端主机部署在公网,例如阿里云,就可以实现内网穿透访问到内网中的客户端主机。其他的端口映射可以参照这个例子,例如以下的片段增加对http端口的映射:
[http]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 80
将客户端主机的80端口映射到服务端主机的80端口。
$ frpc -c /etc/frpc.ini
Jan 24 04:15:51 Eos systemd[1]: Started frp proxy client.
Jan 24 04:15:51 Eos frpc[1412]: 2019/01/24 04:15:51 [I] [service.go:206] login to server success, get run id [e04faa72f58f2c83], server udp port [0]
Jan 24 04:15:51 Eos frpc[1412]: 2019/01/24 04:15:51 [I] [proxy_manager.go:137] [e04faa72f58f2c83] proxy added: [ssh]
Jan 24 04:15:51 Eos frpc[1412]: 2019/01/24 04:15:51 [I] [service.go:100] admin server listen on 127.0.0.1:7001
Jan 24 04:15:51 Eos frpc[1412]: 2019/01/24 04:15:51 [I] [control.go:143] [ssh] start proxy success
看到这样的信息,说明客户端已成功启动。可以试试ssh服务端主机的2022端口,应该可以登录成功1。ctl-c
可以终止客户端的运行。
此方法适用于使用Systemd的系统,关于Systemd的进一步内容,可以参考阮一峰的《Systemd 入门教程》
创建/etc/systemd/system/frpc.service
文件,内容如下:
[Unit]
Description=frp proxy client
Wants=network-online.target
After=network.target
[Service]
ExecStart=/usr/bin/frpc -c /etc/frpc.ini
ExecReload=/usr/bin/frpc -c /etc/frpc.ini reload
ExecStop=/bin/kill -2 $MAINPID
Type=simple
KillMode=none
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
使用systemctl
命令来控制frp客户端服务
$ sudo systemctl start frpc //启动服务
$ sudo systemctl stop frpc //停止服务
$ sudo systemctl status frpc //查看服务状态
$ sudo systemctl reload frpc //重新加载服务
最后,执行sudo systemctl enable frpc
命令设置服务随系统启动。
如果你使用阿里云,不要忘记在安全组中开放2022端口的外网访问权限 ↩︎