在linux系统上部署frp客户端

  • 使用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端口。

启动frp客户端

$ 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端口,应该可以登录成功1ctl-c可以终止客户端的运行。

将frp客户端安装为服务并随系统启动

此方法适用于使用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命令设置服务随系统启动。


  1. 如果你使用阿里云,不要忘记在安全组中开放2022端口的外网访问权限 ↩︎

你可能感兴趣的:(Linux)