FRP 内外网穿透

2019/06/01 FRP 阅读次数:

针对普通用户,想要在运营商那里申请公网ip,一个是太难,一个是成本太高;本文记录自己搭建frp服务器的过程; 申请不到公网ip,但是可以购买一个便宜的服务器,这样服务器就带有公网ip 例如:阿里云,腾讯云

去官网githud地址下载frp安装包,下载服务端和客户端对应的包

frp下载地址

版本选择说明: 目前最新版本0.29.1
. frp_0.29.1_darwin_amd64.tar.gz —— 适用于Mac OS系统
. frp_0.29.1_freebsd_386.tar.gz —— 适用于FreeBSD 32位系统
. frp_0.29.1_freebsd_amd64.tar.gz —— 适用于FreeBSD 64位系统
. frp_0.29.1_linux_386.tar.gz —— 适用于Linux 32位系统
. frp_0.29.1_linux_amd64.tar.gz —— 适用于Linux 64位系统
. frp_0.29.1_linux_arm.tar.gz —— 适用于Linux 32位嵌入式系统
. frp_0.29.1_linux_arm64.tar.gz —— 适用于Linux 64位嵌入式系统
. frp_0.29.1_linux_mips.tar.gz
. frp_0.29.1_linux_mips64.tar.gz
. frp_0.29.1_linux_mips64le.tar.gz
. frp_0.29.1_linux_mipsle.tar.gz
. frp_0.29.1_windows_386.zip —— 适用于Windows 32位系统
. frp_0.29.1_windows_amd64.zip —— 适用于Windows 64位系统

搭建服务端

阿里云服务器,系统ubuntu 18.0.4


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

解压压缩包

tar -xzvf frp_0.26.0_darwin_amd64.tar.gz

frp压缩包文件说明

每个压缩包解压后都包含以下文件和一个systemd文件夹:

. frpc —— 客户端可执行二进制文件
. frpc_full.ini —— 包含全部配置项的客户端配置文件
. frpc.ini —— 客户端使用的配置文件,包含最简配置
. frps —— 服务端可执行二进制文件
. frps_full.ini —— 包含全部配置项的服务端配置文件
. frps.ini —— 服务端使用的配置文件,包含最简配置
. systemd —— 文件夹,用于将frpc和frps添加为服务的配置,linux下使用systemd作为守护程序、mac os使用launchd作为守护程序

注:服务端只需用到frp_0.29.1_linux_amd64目录下的frps相关文件,本机(客户端)只需用到frp_0.29.1_darwin_amd64目录下的frpc相关文件。

配置服务端 frps.ini

cd /opt/frp_0.29.1_linux_amd64/
vi frps.ini

修改端口,监听端口号和frp服务端口

[common]
bind_port = 7000
vhost_http_port = 8080
vhost_https_port = 8089

启动frps程序

chmod +x ./frps
./frps -c ./frps.ini

阿里云的安全组,需要打开7000,8088端口,配置的什么端口,就打开什么端口

本地客户端

根据自己的系统下载对应的版本,我的是linux

配置frpc

cd ./frp_0.29.1_linux_amd64/
vi frpc.ini

配置web访问

[common]
server_addr = x.x.x.x  # 服务端ip
server_port = 7000     # 服务端端口

[web]
type = http             # 协议类型http/https
local_ip = 127.0.0.1    # 本地ip
local_port = 3000       # 本地web服务端口

启动frpc程序

sudo ./frpc -c ./frpc.ini

方便管理,配置service

为了方便管理frps的启动、停止、重启和开机自启,我们需要将frps添加为系统service,通过systemd守护程序来管理。 在frp_0.29.1_linux_amd64目录里的systemd目录下,已经为我们准备好了添加service的模板:

. frpc.service —— 客户端使用此模板
. frpc@.service
. frps.service —— 服务端使用此模板
. frps@.service

cd ./frp_0.29.1_linux_amd64
vi frps.service
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini

[Install]
WantedBy=multi-user.target

1、将user=nobody改为user=root,注:root表示运行frps的用户。 2、其中服务运行配置项为:ExecStart=/usr/bin/frps -c /etc/frp/frps.ini,我们需要将二进制文件frps复制或移动到到/usr/bin目录,配置文件frps.ini复制或移动到/etc/frp目录,而/etc/frp目录不存在,需要手动创建一个

复制frps到/usr/bin目录:

cp ./frp_0.29.1_linux_amd64/frps /usr/bin

创建frp目录,并复制frps.ini到/etc/frp目录:

mkdir /etc/frp
cp ./frp_0.29.1_linux_amd64/frps.ini /etc/frp

将frps.service复制到/etc/systemd/system目录:

cp ./frp_0.29.1_linux_amd64/systemd/frps.service /etc/systemd/system

使用systemctl管理frps

# 启动
systemclt start frps
# 停止
systemclt stop frps
# 重启
systemctl restart frps
# 查看状态
systemctl status frps
# 开机自启
systemctl enable frps

客户端frpc,配置和服务端一样

配置内外网hhtp,https,ssh

只需配置客户端即可:frpc.ini

ssh

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

远程ssh连接方法

ssh name@ip -p 6000

http

#http类型的内网穿透,必须设置服务端:vhost_http_port,  
#并且所有的http类型的客户端都将通过同一个vhost_http_port访问。  
#custom_domains 域名必须要有,并且备案    

# frpc.ini
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
custom_domains = test.yourdomain.com
# 启用健康检查,类型为 http
health_check_type = http
# 健康检查发送 http 请求的 url,后端服务需要返回 2xx 的 http 状态码
health_check_url = /status
health_check_interval_s = 10
health_check_max_failed = 3
health_check_timeout_s = 3

访问的时候通过域名访问:www.xxx.xxx:8080

https

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7002

[test_htts2http]
type = https
custom_domains = test.yourdomain.com

plugin = https2http
plugin_local_addr = 127.0.0.1:8089

# HTTPS 证书相关的配置
plugin_crt_path = ./server.crt  
plugin_key_path = ./server.key
plugin_host_header_rewrite = 127.0.0.1

更多的frp配置信息

Search

    Table of Contents