007-frp安装与配置


简介

说明

由于本人是个上班族,所以在某些加班时刻需要把自己的文档或个人代码上传到自己家里的gitlab服务器,所以就有这篇穿透内网代理配置的文档。 frp的文档是这样介绍自己的:frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。而我选择frp的原因是配置简单,golang开发,支持协议多.Github地址

环境

需要一台外网服务器,建议是阿里或者aws这类云主机,然后家里需要一台常开的电脑,软件包地址为:frp

服务器 数量 网络类型 操作系统
VPS服务器 1台 外部网络 Centos7.X
Linux服务器 1台 家庭网络 Linux各种发布版本

正文

1. 服务端配置(外部网络)

1.1 配置服务端配置文件

$ wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz

$ mkdir /opt/proxy -p && tar xf frp_0.33.0_linux_amd64.tar.gz -C /opt/proxy && mv /opt/proxy/frp_0.33.0_linux_amd64 /opt/proxy/frp && cd /opt/proxy/frp

$ cat > /opt/proxy/frp/frps.ini <<EOF
[common]
#frp 监听地址
bind_addr = 0.0.0.0
bind_port = 8000
# 如果需要代理web(http) 服务,则开启此端口
vhost_http_port = 8080
vhost_https_port = 8443
# frp 控制面板
dashboard_port = 8100
dashboard_user = admin
dashboard_pwd = admin123
# 默认日志输出位置(这里输出到标准输出)
log_file = /blog/proxy/frp/logs/frps.log
# 日志级别,支持: debug, info, warn, error
log_level = info
log_max_days = 3
# 是否开启特权模式(特权模式下,客户端更改配置无需更新服务端)
privilege_mode = true
# 授权 token 建议随机生成
privilege_token = HE7qTtW8Lg83UDKY
# 特权模式下允许分配的端口(避免端口滥用)
privilege_allow_ports = 10000-50000
# 后端连接池最大连接数量
max_pool_count = 100
# 口令超时时间
authentication_timeout = 900
# 子域名(特权模式下将 *.xxxx.com 解析到公网服务器)
subdomain_host = baidu.xl
EOF

1.2 配置服务端systemd启动文件

$ cat > /usr/lib/systemd/system/frps.service <<EOF
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/blog/proxy/frp/frps -c /blog/proxy/frp/frps.ini
[Install]
WantedBy=multi-user.target
EOF

1.3 启动

$ systemctl start frps.service && systemctl enable frps.service

2. 配置客户端(家庭网络)

2.1 配置客户端配置文件

$ wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz

$ mkdir /opt/proxy -p && tar xf frp_0.33.0_linux_amd64.tar.gz -C /opt/proxy && mv /opt/proxy/frp_0.33.0_linux_amd64 /opt/proxy/frp && cd /opt/proxy/frp

$ cat > /opt/proxy/frp/frpc.ini <<EOF
[common]
# 服务端地址,这里是我阿里云服务器的外网IP
server_addr = 16.42.52.89
# 服务端端口
server_port = 8000
# 日志路径
log_file = /opt/proxy/frp/logs/frpc.log
# 日志级别
log_level = debug
# 日志存放天数
log_max_days = 3
# 特权模式,要和服务器端的配置一致
privilege_token = HE7qTtW8Lg83UDKY
#
[gitlab]
type = http
local_port = 80
# 这样只要访问http://gitlab.baidu.xl:8080即可访问到该客户端的gitlab服务
subdomain = git  
use_gzip = true
[nas]
type = http
local_port = 80
# 这样只要访问http://nas.baidu.xl:8080即可访问到该客户端的nas服务
subdomain = nas
use_gzip = true
EOF

PS

其他配置详细请看[官方文档]https://gofrp.org/

2.2 配置客户端systemd启动文件

$ cat > /usr/lib/systemd/system/frpc.service <<EOF
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/blog/proxy/frp/frpc -c /blog/proxy/frp/frpc.ini
[Install]
WantedBy=multi-user.target
EOF

2.3 启动

$ systemctl start frpc.service && systemctl enable frpc.service

结束