Top

使用frp,自己搭建 内网穿透服务,基于CentOS 7.2,frp 0.21

软件 浏览 评论


frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。相对于ngrok,部署方便,简单,也有人说frp更稳定。目前最新版为 0.21.

frp-0.21.0.zip (源码)         frp_0.21.0_darwin_amd64.tar.gz 

frp_0.21.0_freebsd_386.tar.gz   frp_0.21.0_freebsd_amd64.tar.gz 

frp_0.21.0_linux_386.tar.gz     frp_0.21.0_linux_amd64.tar.gz (我使用的是此版本)

frp_0.21.0_linux_arm64.tar.gz  

frp_0.21.0_linux_mips.tar.gz    frp_0.21.0_linux_mips64.tar.gz    frp_0.21.0_linux_mips64le.tar.gz  

frp_0.21.0_linux_mipsle.tar.gz 

frp_0.21.0_windows_386.zip      frp_0.21.0_windows_amd64.zip 


一、前期准备:

需要一个外网服务器,国外的VPS、国内的阿里云,都行,这里我用阿里云测试

需要一个域名,并且将其解析到你的外网服务器


二、设置frp服务器端:

1、下载 frp_0.21.0_linux_amd64.tar.gz 并上传到服务器中,这里上传到tmp目录下;

2、输入命令 tar -zxvf frp_0.21.0_linux_amd64.tar.gz 解压,并进入目录下,会看到如下文件:

blob.png

frpc的都是客户端文件

frps的都是服务器端文件

3、因为我们要设置服务器端,所以这里将客户端文件删除,输入命令 rm -rf frpc* ;

4、然后配置 frps.ini 文件,内容如下:

[common]

bind_port = 7077

# Virtual host configuration

vhost_http_port = 7078

vhost_https_port = 7073

# Dashboard configuration

dashboard_port = 7075

dashboard_user = admin

dashboard_pwd = admin

# logs

#log_file = ./frps.log

#log_level = warn

#log_max_days = 3

# auth token

token = 123456789

max_pool_count = 5

max_ports_per_client = 0

authentication_timeout = 900

tcp_mux = true

#模块名,这个common是必需的

#服务器绑定端口

# 虚拟机配置,http/https 用

http协议的端口,当配置了自定义域名,访问就是http://域名:7078,所以这里一般设置为80

https协议端口

# frp控制面板配置

访问端口

户名

密码

# 日志配置,建立开始不要配置,日志直接输出控制台,好排错调试

#log_file = ./frps.log

#log_level = warn

#log_max_days = 3

#连接密码,客户端用

token密码

max_pool_count = 5

max_ports_per_client = 0

authentication_timeout = 900

tcp_mux = true

5、./frps -c ./frps.ini 启动服务器端;


三、设置frp客户端:

1、2、步骤同上;

3、因为我们要设置客户端,所以这里将客户端文件删除,输入命令 rm -rf frps* ;

4、然后配置 frpc.ini 文件,内容如下:

[common]

server_addr = 11.11.11.11

server_port = 7077

token = 123456789


#log_file = ./frpc.log

#log_level = warn

#log_max_days = 3


[web]

type = http

local_port = 8888

custom_domains = web.test.com


[ssh]

type = tcp

local_ip = localhost

local_port = 22

remote_port = 8801

#模块名,这个common是必需的

#服务器端的公网IP

# 服务器绑定的端口

# 服务器设置的token密码


日志文件

日志级别



# 自定义模块名,这个名称不能重复

#协议类型,还可以是tcp、udp等

#客户端机器端口

#自定义域名,访问就是http://web.test.com:7078



SSH




远程端口为8801

5、./frpc -c ./frpc.ini 启动服务器端;

四、将frps或frpc设置为系统服务:

1、如果测试都通过,可以将服务器端或客户端设置为系统服务,方便启动;

2、下面以服务器端设置系统服务为例:

  a、最好先将frp移到/usr/local/目录下,改名为frp,不要放在tmp目录下

  b、输入命令 vim /usr/lib/systemd/system/frps.service ,将下面内容复制进去:(注意体字路径,注意绿体字名称)

[Unit]

Description=frps

After=network.target


[Service]

Type=simple

Restart=on-failure

TimeoutStartSec=30

ExecStart=/tmp/frp/frps -c /tmp/frp/frps.ini

ExecReload=/tmp/frp/frps reload -c /tmp/frp/frps.ini

ExecStop=/bin/kill $MAINPID


[Install]

WantedBy=multi-user.target

[Unit]

Description=frpc

After=network.target


[Service]

Type=simple

Restart=on-failure

RestartSec=5s

ExecStart=/tmp/frp/frpc -c /tmp/frp/frpc.ini

ExecReload=/tmp/frp/frpc reload -c /tmp/frp/frpc.ini


[Install]

WantedBy=multi-user.target

  c、输入以下四次命令,分别进行服务新增加载、服务加入开机启动、服务启动、查看服务运行状态:

    systemctl daemon-reload 

    systemctl enable frps 

    systemctl start frps 

    systemctl status frps