專注Linux與Windows運維 PHP與WEB開發

不斷創新創造價值,每一個客戶定制都精心打造,讓您的企業無憂網絡運維

乾元數碼邀請各技術大牛,齊心協力,共同創造!

利用Frp服務內網穿透,詳細設置教程

[很久沒有更新博客了,今天我們談談frp內網穿透。]

frp基本信息
frp全名Fast Reverse Proxy,是用于提供內網穿透服務的工具,主要用于解決一些內網服務沒有公網ip但是卻需要提供外網訪問的問題。使用frp你可以將內網中的TCP、UDP、HTTP、HTTPS等協議類型的服務發布到公網,并且支持Web服務根據域名進行路由轉發。

為什么要有這么個東西呢?
1,公網IP越來越少,ISP服務商開始使用NAT到你家里,但是你就是想要訪問家里服務,比如某臺電腦,或者監控?
2,基本屬于1的情況,但是比較現實,就是出租房內只有一個光貓,你又拿不到上網賬號,只有個識別碼。
3,為了裝逼,可以實現在各種平臺。
4,為了產品的開發,方便公網調試。

5b513c1f55b15.png

如圖的frp架構圖所示:
1、(必須)想要使用frp服務,將內網中的服務發布到公網。你需要先擁有一臺擁有公網ip的網絡設備搭建frp服務端,再在內網需要穿透的設置中搭建frp客戶端服務才能進行穿透;


2、(非必需)你需要擁有一個域名解析到公網的ip地址,才能夠實現web服務的通過域名進行路由轉發的功能。


使用方法

項目地址:https://github.com/fatedier/frp

服務端:

去github下載最新的適合您機子的版本的軟件


Frp服務的搭建

搭建frp很簡單,關鍵的步驟只有三步:

1、獲取frp文件;

2、設置frp配置文件,

3、啟動frp服務。(注意frp搭建的的這三步是分為客戶端和服務端的,但是操作基本是一致的。)本教程frp服務的搭建主要介紹frp搭建的主要三步,以及frp服務端和客戶端配置文件內容的解釋說明,以及如何將frp在linux系統中創建systemd服務,進行服務管理。

第一步:獲取frp文件
frp支持linux平臺和windows平臺。參照你的設置的運行平臺下載linux版本的文件或者是windows的。https://github.com/fatedier/frp/releases
一般linux平臺下載的版本為:frp_版本號_linux_amd64.tar.gz,windows平臺下載的版本為:frp_版本號_windows_amd64.zip。
linux版本文件的解壓命令為tar -zxvf 文件名 ;windows版本文件直接右鍵解壓即可。
文件解壓后,一般都含有frps(frp服務端運行文件)、frpc(frp客戶端運行文件)、frps.ini(frp服務端配置文件)、frpc.ini(frp客戶端配置文件),以及frp_full.ini(frp全部配置文件解釋說明和參考。)

第二步:frp配置文件設置
frp配置文件分為服務端和客戶端,想要正常只用frp工具,我們需要對服務端和客戶端的配置文件分別進行設置。

frps.ini(服務端)配置文件解釋說明

[common]
# 服務端控制面板訪問賬號和密碼,不設置則默認admin
#注意以及幾個是我隨便填寫的,請根據自己的實際情況,自行修改。
dashboard_user = user
dashboard_pwd = password
# 客戶端連接令牌
token = access_token
# 路由地址
subdomain_host = frp.x.com

###########下列配置默認即可,無需改動###############
#穿透監聽端口與地址(0.0.0.0表示允許任何地址)
bind_addr = 0.0.0.0
bind_port = 7000
# udp協議監聽端口
bind_udp_port = 7001
#udp協議支持kcp模式。kcp的運行端口,不設置表示禁用。可以與'bind_port'端口一致
kcp_bind_port = 7000
#虛擬主機穿透監聽端口(指http與https的訪問端口)
vhost_http_port = 80
vhost_https_port = 443
#服務端控制面板訪問端口
dashboard_addr = 0.0.0.0
dashboard_port = 7500
# frp日志記錄路徑
log_file = ./frps.log
# 日志記錄級別(trace, debug, info, warn, error)
log_level = info
# 日志記錄滾動天數
log_max_days = 3
# 客戶端與服務端連接心跳檢測
heartbeat_timeout = 90
# 允許客戶端使用的穿透端口,不設置則全部允許
#allow_ports = 1000-100000
# 穿透服務允許的連接數
max_pool_count = 5
# 單個客戶端允許建立的穿透服務,0為不限制
max_ports_per_client = 0
# 連接超時
authentication_timeout = 900
# tcp流多路復用(可以理解為優化傳輸) 
tcp_mux = true

frpc.ini(客戶端)配置文件解釋說明

#該配置文件,我做了相關的刪減,只保留了我們最常用到的幾個穿透功能。
#[common為公共配置區域必須存在]
[common]
# 與服務端連接令牌
token = access_token
# 客戶端標識
user = nas
#服務端的訪問地址(可用ip或者域名)。
server_addr = 111.222.222.111

####################此處為common的默認配置區域無需修改###################
#服務端用于穿透的端口,與服務端保持一致。
server_port = 7000
# 日志記錄路徑
log_file = ./frpc.log
# 日志記錄級別(trace, debug, info, warn, error)
log_level = info
# 日志記錄滾動天數
log_max_days = 3
# frpc客戶端管理界面
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_passwd = admin
# 連接池
pool_count = 5
# tcp數據流多路復用,默認開啟,服務端客戶端需要保持一致
tcp_mux = true
# 失敗重連
login_fail_exit = true
# 服務端與客戶端通信協議,支持tcp\upd
protocol = tcp
# dns服務選用
# dns_server = 8.8.8.8
#客戶端向服務端心跳檢查間隔與超時時間
heartbeat_interval = 10
heartbeat_timeout = 90
##############以上為客戶端服務的公共信息配置區域############

###############具體的穿透服務功能啟用(表示你要使用frp的那個功能)##############
[ssh]
#穿透類型
type = tcp
#需穿透服務本地訪問地址
local_ip = 127.0.0.1
#需穿透服務本地訪問端口
local_port = 22
#是否使用通訊加密,默認false
use_encryption = false
#是否使用通訊壓縮,默認false
use_compression = false
#穿透后外網訪問端口。
remote_port = 6001

[dns]
type = udp
local_ip = 114.114.114.114
local_port = 53
remote_port = 6002
use_encryption = false
use_compression = false

#http或者https模式主要針對于虛擬主機,訪問的取決于frps.ini文件中的vhost_http_port設置
[web01]
type = http
local_ip = 127.0.0.1
local_port = 80
use_encryption = false
use_compression = true
#虛擬主機訪問賬戶密碼設置,如果不設置的話。自己通過地址即可訪問。
http_user = admin
http_pwd = admin
# if domain for frps is frps.com, then you can access [web01] proxy by URL http://test.frps.com
#如果你的frps域名是yourdomain.com,那么你可以通過web01.yourdomain.com 來訪問web01這個穿透服務。
subdomain = web01
#自己定義域名
custom_domains = yourdomain.com
# locations is only available for http type
locations = /,/pic
# http重定向地址
host_header_rewrite = example.com
# http請求文件頭
header_X-From-Where = frp

[web02]
type = https
local_ip = 127.0.0.1
local_port = 8000
use_encryption = false
use_compression = false
subdomain = web02
custom_domains = web02.yourdomain.com

[plugin_static_file]
type = tcp
remote_port = 6006
plugin = static_file
plugin_local_path = /var/www/blog
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc

第三步:啟動服務

linux環境下啟動服務,需要先把運行文件添加可執行權限。例如我的文件實在root文件夾中,我需要搭建frp服務端,那么待設置好服務端配置文件(frps.ini)后執行以下命令即可。

cd /root
chmod +x frps
nohup ./frps -c ./frps.ini &

執行成功后,會顯示frp的進程號碼。你也可以通過命令來查看frps運行的進程編號。

ps -e | grep frps

在windows環境下則是以管理員身份運行cmd命令提示符。進入相應的目錄后,運行命令即可。

frps -c frps.ini &


關于frp管理的優化設置

debian8.0,或者是centos7.0以上的版本,服務都是基于systemd的方式進行管理的。frp通過設置后也可以實現systemd的方式進行管理,這樣我們就可以通過systemctl命令來進行服務的統一管理,同時通過這樣的設置也可以將frp服務加入開機自啟動。

1、將frp設置成linux系統的服務,基于systemd方式管理

# 編寫 frp service 文件,以 centos7 為例
vim /usr/lib/systemd/system/frps.service

# 內容如下
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target

[Service]
Type=simple
#此處的路勁地址根據自己的實際放置的地址進行修改
ExecStart=/root/frp/frps -c /root/frp/frps.ini
Restart=always
RestartSec=1min

[Install]
WantedBy=multi-user.target

2、將frp設置成開機自啟動

systemctl enable frps
systemctl restart frps

以上就是關于frp內網穿透的基本教程了,搭建可以嘗試照著教程搭建一下,如果還有不懂的地方歡迎加入乾元數碼交流群進行交流。

為您推薦

北京pk10计划 完美真人平台 秒速时时彩哪个平台好 历史开奖2021记录查询 澳洲有没有澳洲幸运10 任选9场奖金最少是多少 浙江11选5开奖情况 快乐十分怎么玩才能中奖 山东11选5缩水软件下载 吉利平特肖主论坛 pk10五码定位胆技巧 6场半全场胜负规则0 广西快3现场开奖视频直播 福彩3d走势图带连线专业所 淘宝快3开奖 舟山体彩飞鱼和值 甘肃快3走势分析