Frp自建内网穿透服务

前言

最近在做自己的服务器的基础组件配置,服务器没有外网IP,但是又有很多服务需要对外提供。看了下市面上常用内网穿透服务,不是贵就是限制多。说白了还是想白嫖或者弄一个有性价比的。最后找到了Frp这个免费、开源的软件,如果有GO基础的还能做二开,话不多说开整。


一、安装环境和安装包准备

系统:centos7.4
安装包下载地址:https://github.com/fatedier/frp/releases
安装包版本:v0.61.1(我选的最新的安装包:frp_0.61.1_linux_amd64.tar.gz).
官方文档:https://gofrp.org/zh-cn/docs/reference/common/
服务器上软件安装位置:/opt/frp
域名:xxx.com,域名要解析到下边外网的IP。我是通过域名做下边的处理,IP每次都要配置端口太麻烦了。

服务名IP备注
frps192.168.1.120当前服务是流量的入口,IP必须是外网
frpc192.168.1.121被转发的服务,内网想要对外开放的服务器

二、服务端安装流程

服务端要安装在有外网IP的服务器上

--解压文件
	--tar zxvf frp_0.61.1_linux_amd64.tar.gz
	--mv frp_0.61.1_linux_amd64 frp
	--mv frp /opt
	--cd /opt/frp/

--配置frps.service管理文件
	--sudo vim /etc/systemd/system/frps.service
		[Unit]
		# 服务名称,可自定义
		Description = frp server
		After = network.target syslog.target
		Wants = network.target

		[Service]
		Type = simple
		# 启动frps的命令,需修改为您的frps的安装路径
		ExecStart = /opt/frp/frps -c /opt/frp/frps.toml

		[Install]
		WantedBy = multi-user.target

--配置frps开启自启动
	--sudo systemctl enable frps

--frps基础配置
	--vim /opt/frp/frps.toml
		#webServer 监听地址,默认为 127.0.0.1。
		webServer.addr = "0.0.0.0"

		## webServer 监听端口。
		webServer.port = 9999

		## HTTP BasicAuth 用户名。
		webServer.user = "admin"

		## HTTP BasicAuth 密码。
		webServer.password = "admin"

		## 是否提供 Prometheus 监控接口,需要同时启用了 webServer 后才会生效。
		enablePrometheus = true

		## 服务端监听地址,用于接收 frpc 的连接,默认监听 0.0.0.0。
		bindAddr="0.0.0.0"

		## 服务端口
		bindPort=7000

		#配置使用的域名
		subDomainHost="自己的域名"

		## HTTP 类型代理监听的端口,启用后才能支持 HTTP 类型的代理。
		vhostHTTPPort=7001

		## vhostHTTPTimeout:HTTP 类型代理在服务端的 ResponseHeader 超时时间,默认为 60s。

		## HTTPS 类型代理监听的端口,启用后才能支持 HTTPS 类型的代理。
		vhostHTTPSPort=7002

		##鉴权方式,可选值为 token 或 oidc,默认为 token。
		auth.method="token"

		## 在 method 为 token 时生效,客户端需要设置一样的值才能鉴权通过。
		auth.token="5f74584dbf1f4020ad81e4a3e9a2eba5"

		## 日志输出文件路径,如果为 console,则会将日志打印在标准输出中。
		log.to="/opt/frp/log/detail.log"

		## 日志级别,可选值为 trace, debug, info, warn, error,默认级别为 info。
		log.level="trace"
		#
		## 日志文件最多保留天数,默认为 3 天。
		log.maxDays=3

		#允许客户端设置的最大连接池大小,如果客户端配置的值大于此值,会被强制修改为最大值,默认为 5。
		transport.maxPoolCount=100


--frps常用管理命令
	# 启动frp
	sudo systemctl start frps

	# 停止frp
	sudo systemctl stop frps

	# 重启frp
	sudo systemctl restart frps

	# 查看frp状态
	sudo systemctl status frps

三、客户端安装流程

客户端安装在内网,需要对外开放的服务器上

--解压文件
	--tar zxvf frp_0.61.1_linux_amd64.tar.gz
	--mv frp_0.61.1_linux_amd64 frp
	--mv frp /opt
	--cd /opt/frp/
--配置frpc.service管理文件
	--sudo vim /etc/systemd/system/frpc.service
		[Unit]
		# 服务名称,可自定义
		Description = frp client
		After = network.target syslog.target
		Wants = network.target

		[Service]
		Type = simple
		# 启动frps的命令,需修改为您的frps的安装路径
		ExecStart = /opt/frp/frpc -c /opt/frp/frpc.toml

		[Install]
		WantedBy = multi-user.target
		
--frpc基础配置
	--vim /opt/frp/frpc.toml
		#webServer 监听地址,默认为 127.0.0.1。
		webServer.addr = "0.0.0.0"
		#webServer 监听端口。
		webServer.port = 9998
		#HTTP BasicAuth 用户名。
		webServer.user = "admin"
		#HTTP BasicAuth 密码。
		webServer.password = "admin"
		# 外网的frps服务器地址
		serverAddr = "101.43.163.229"
		# 外网的frps服务器开放的注册端口
		serverPort = 7000
		#鉴权方式,可选值为 token 或 oidc,默认为 token。
		auth.method="token"
		#在 method 为 token 时生效,客户端需要设置一样的值才能鉴权通过。
		auth.token = "5f74584dbf1f4020ad81e4a3e9a2eba5"
		#日志输出文件路径,如果为 console,则会将日志打印在标准输出中。
		log.to="/opt/frp/log/detail.log"
		#日志级别,可选值为 trace, debug, info, warn, error,默认级别为 info。
		log.level="trace"
		#日志文件最多保留天数,默认为 3 天。
		log.maxDays=3
		#	连接池大小。
		transport.poolCount=100

		includes = ["/opt/frp/config/*.toml"]


	--提取出来的文件配置
		[[proxies]]
		name = "ssh-frpc"
		type = "tcp"
		localIP = "127.0.0.1"
		localPort = 22
		remotePort = 9000

		[[proxies]]
		name = "ssh-db-01"
		type = "tcp"
		localIp="192.168.1.161"
		localPort=22
		remotePort=9001

		[[proxies]]
		name = "ssh-db-02"
		type = "tcp"
		localIp="192.168.1.162"
		localPort=22
		remotePort=9002
		
		[[proxies]]
		name = "http-frpc-admin"
		type = "tcp"
		localIP = "127.0.0.1"
		localPort = 9998
		remotePort = 9998

		#默认映射到服务端的http配置端口。frps配置的域名加上当前配置的子域名会打到配置的指定服务器。比如你在frps配置的域名是xxx.com。那么panel.xxx.com域名地址就会打到当前服务器转发给127.0.0.1:8000服务。多个二级域名转发到不同服务器配置多个。
		[[proxies]]
		name = "frc-panel"
		type = "http"
		localIP = "127.0.0.1"
		localPort = 8000
		subdomain="panel"

	

--配置frps开启自启动
	--sudo systemctl enable frpc

完成以后客户端展示
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值