FRP 內網穿透搭建(全)


frp 內網穿透 Github 地址 https://github.com/fatedier/frp

下載機型對應的版本

 或者 Linux上執行(版本號 0.36.0 自行更換) --no-check-certificate 參數是取消 HTTPS 的證書驗證

wget https://github.com/fatedier/frp/releases/download/v0.36.0/frp_0.36.0_linux_amd64.tar.gz --no-check-certificate

解壓后:

tar -zxvf frt_xxxxx.tar.gz

服務端放在公網上,保證 網絡中能訪問 


服務端配置詳解:

[common]                        # 通用配置段
bind_addr = 0.0.0.0             # 綁定的IP地址,支持IPv6,不指定默認0.0.0.0;
bind_port = 7000                # 服務端口;
bind_udp_port = 7001            # 是否使用udp端口,不使用刪除或注釋本行;
kcp_bind_port = 7000            # 是否使用kcp協議,不使用刪除或注釋本行;
 
# proxy_bind_addr = 127.0.0.1   # 代理監聽地址,默認和bind_addr相同;
 
# 虛擬主機
vhost_http_port = 80            # 是否啟用虛擬主機,端口可以和bind_port相同;
vhost_https_port = 443
vhost_http_timeout = 60         # 后端虛擬主機響應超時時間,默認為60s;
 
# 開啟frps儀表盤可以檢查frp的狀態和代理的統計信息。可視化界面操作
dashboard_addr = 0.0.0.0        # frps儀表盤綁定的地址;
dashboard_port = 7500           # frps儀表盤綁定的端口;
dashboard_user = admin          # 訪問frps儀表盤的用戶;
dashboard_pwd = admin           # 密碼;
assets_dir = ./static           # 儀表盤頁面文件目錄,只適用於調試;
 
# 日志配置文件
log_file = ./frps.log           # 日志文件,不指定日志信息默認輸出到控制台;
log_level = info                # 日志等級,可用等級“trace, debug, info, warn, error”;
log_max_days = 3                # 日志保存最大保存時間;
 
# 客戶端與服務端通信的身份驗證令牌
token = 12345678
  
# 心跳檢測超時時間,不建議修改默認配置,默認值為90;?
heartbeat_timeout = 90          
 
# 指定允許客戶端使用的端口范圍,未指定則沒有限制;
allow_ports = 2000-3000,3001,3003,4000-50000
 
max_pool_count = 5              # 每個客戶端連接服務端的最大連接數;
max_ports_per_client = 0        # 每個客戶端最大可以使用的端口,0表示無限制
 
authentication_timeout = 900    # 客戶端連接超時時間(秒),默認為900s;
 
subdomain_host = frps.com       # 自定義子域名,需要在dns中將域名解析為泛域名;
 
tcp_mux = true                  # 是否使用tcp復用,默認為true;
 
# frp只對同意客戶端的連接進行復用;

如: 阿里雲中配置服務端:

[common]
bind_port=7000
 
# frp服務端可視化界面管理控制面板相關配置
dashboard_port=9527
# 可視化管理界面的登錄用戶 dashboard_user=behelpful
# 可視化管理界面的登錄密碼 dashboard_pwd
=behelpful9527

# 客戶端與服務端連接認證密碼 token = behelpful@8888

啟動:在啟動文件當前路徑下

nohup /opt/frp/frps -c  /opt/frp/frps.ini >/dev/null 2>&1 &

[root@izj6chfur6qfa919i2o7shz frp]# nohup ./frps -c frps.ini >/dev/null 2>&1 &

 


客戶端配置詳解

[common]                        # 通用配置段
 
server_addr = 0.0.0.0           # server的IP地址;支持IPv6
server_port = 7000              # server的端口;
 
# 如果要通過http或socks5代理連接frps,可以在此處或在全局環境變量中設置代理,只支持tcp協議;
 
# http_proxy = http://user:passwd@192.168.1.128:8080
 
# http_proxy = socks5://user:passwd@192.168.1.128:1080
 
# 客戶端日志
 
log_file = ./frpc.log       # 指定日志文件;
log_level = info            # 指定日志等級;
log_max_days = 3
 
# 客戶端與服務端通信的身份驗證令牌
token = 12345678
 
# 設置管理地址,用於通過http api控制frpc的動作,如重新加載;
admin_addr = 127.0.0.1
admin_port = 7400
# 沒有安全需求的話不需要設置用戶名和密碼,直接就可以登錄查看客戶端配置及連接狀態
admin_user = admin
admin_passwd = admin
 
 
pool_count = 5              # 初始連接池的數量,默認為0;
tcp_mux = true              # 是否啟用tcp復用,默認為true;
user = your_name            # frpc的用戶名,用於區別不用frpc的代理;
login_fail_exit = true      # 首次登錄失敗時退出程序,否則連續重新登錄到frps;
protocol = tcp              # 用於連接服務器的協議,支持tcp、kcp、websocket;
dns_server = 8.8.8.8        # 為frp 客戶端指定一個單獨的DNS服務器;
 
# start = ssh,dns           # 要啟用的代理的名字,默認為空表示所有代理;
 
# 心跳檢查
# heartbeat_interval = 30   # 失敗重試次數
# heartbeat_timeout = 90    # 超時時間
 
# 配置示例
 
[ssh]                   # 代理配置段名稱,如果配置user=your_name,則顯示為your_name.ssh;
type = tcp              # 協議默認tcp,可選tcp,udp,http,https,stcp,xtcp;
local_ip = 127.0.0.1            # 本地地址
local_port = 22             # 本地端口
use_encryption = false      # 是否加密服務端和客戶端的通信信息,默認為不加密;
use_compression = false     # 是否開啟壓縮,默認不開啟;
 
remote_port = 6001          # 在服務器端開啟的遠程端口;
 
# 負載均衡配置
group = test_group          # 負載均衡組名,會將同一組內的客戶端進行負載;
group_key = 123456          # 負載均衡組密鑰;
 
# web示例
[web01]
 
type = http             # 使用http
 
local_ip = 127.0.0.1
 
local_port = 80
 
use_encryption = false
 
use_compression = true
 
http_user = admin           # 訪問web01頁面啟用認證,用戶名admin
 
http_pwd = admin            # 密碼
 
subdomain = web01           # 子域名,需要服務端配置了subdomain_host參數;
 
custom_domains = web02.example.com   # web01的域名,和subdomain二選一
 
locations = /,/pic              # 指定用於路由的URL前綴;
 
host_header_rewrite = example.com    # 配置http包頭域名重寫;
 
header_X-From-Where = frp       # 添加包頭信息X-From-Where: frp

如本地 Linux 電腦配置 ES 分享給外網使用,為了方便管理,被代理的 機器 服務的端口號映射外界的端口號為一致,方便記憶使用

[common]
# 服務端的鏈接信息,密碼,IP ,端口 token
= behelpful@8888 server_addr = 192.168.xx.xxx server_port = 7000 # 客戶端可視化管理界面的 IP (127.0.0.1 就行了,當然如下寫具體 IP 也是可以的) 端口 admin_addr = 192.168.xx.xxx admin_port = 9527
# 代理 ES [behelpful
-es] type = tcp local_ip = 192.168.xx.xxx local_port = 9200 remote_port = 9200
# 代理 Kibana [kibana] type
= tcp local_ip = 192.168.xx.xxx local_port = 5601 remote_port = 5601

啟動:在啟動文件當前路徑下執行

[root@agent2 frp]# nohup ./frpc -c frpc.ini >/dev/null 2>&1 &

添加開機啟動

在路徑:/etc/init.d  添加一個啟動腳本,如: frpc
解釋:服務必須在運行級2,3,4,5下被啟動或關閉,啟動的優先級是90,關閉的優先級是10。優先級范圍是0-100,數字越大,優先級越低;

# chkconfig:   2345 90 10
# description:  內網穿透frpc 客戶端啟動
 
nohup /opt/frp/frpc -c /opt/frp/frpc.ini >/dev/null 2>&1 &

授權:

[root@behelpful]# chmod +x /etc/init.d/frpc

添加到chkconfig,開機自啟動

[root@behelpful]# chkconfig --add frpc

 


Windows 系統下使用案例( Windows系統中的禪道分享公網使用)

[common]
 
# FRP 服務端密碼
token = behelpful@8888# 服務端連接地址
server_addr = xx.xx.xx.xx
# 服務端端口號
server_port = 7000
 
# 管理用的
admin_addr = 127.0.0.1
admin_port = 9527
 
[zentao]
type = tcp
local_ip = 127.0.0.1
local_port = 10086
remote_port = 10086

啟動:在啟動文件當前路徑下

C:\FRP>.\frpc.exe -c c:\FRP\frpc.ini

服務端 管理視圖化界面: http://xxx.xxx.xxx:9527  ---->>>  輸入配置文件中配置的 用戶名:behelpful,密碼:behelpful@8888

 

 

 客戶端管理界面(局域網中訪問):http://192.168.0.1:9527  / http://192.168.0.12:9527

 補充:Windows 開機自啟動 frp 服務 (推薦方式: https://diannaobos.com/post/405.html

在目錄 : C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp   下創建一個開機啟動腳本  frp.vbs  (名字自定義,拓展名 必須  .vbs)

內容為 運行 frp 命令:

run "cmd /c 啟動程序的路徑 -c 啟動程序配置文件的路徑"

Set ws = CreateObject("Wscript.Shell")
    ws.run "cmd /c D:\Tools\FRP\frpc.exe -c D:\Tools\FRP\frpc.ini",vbhide

 


重點:

docker版運行 frp

 

方式一:

  手動下載 GitHub 上的 frp tar包文件上傳到 Linux 系統中(網絡環境不佳的方式,一段時間GitHub訪問特別困難,使用此方式)

將下載好的 tar 包文件,和編寫好的配置文件 frps.ini(服務端為例子)放入 Dockerfile 同一個目錄下,切記同一個目錄下,或者只要符合 COPY 的原則即可

編寫Dockerfile (手動下載的 0.36.0 版本)

FROM centos
 
MAINTAINER Alay<chxlay@gmail.com>
 
# 將GitHub 下載的 frp 文件拷貝到 Dockerfile 同一個路徑下
COPY frp_0.36.0_linux_amd64.tar.gz /opt/frp_0.36.0_linux_amd64.tar.gz
 
RUN set -x \
    && cd /opt \
    && tar -zxvf frp_0.36.0_linux_amd64.tar.gz \
    && mv frp_0.36.0_linux_amd64 frp/
 
# 由於運行時配置文件加載位置為:./conf 路徑下,所以為以下COPY 配置文件准備配置文件目錄
RUN mkdir /opt/frp/conf/ -p \
 
# 服務端配置文件由本地拷貝到容器(二選一即可)
# COPY frps.ini /opt/frp/conf/frps.ini
# 掛載配置文件路徑到宿主機,掛載與上面的復制配置文件到容器內(二選一即可)推薦
VOLUME /opt/frp/conf
 
# 設置當前工作目錄
WORKDIR /opt/frp
 
# 服務端暴露的端口號
EXPOSE 7000
# 管理頁面暴露的端口號
EXPOSE 9527
 
# 啟動 frp 服務的命令,客戶端則改為 frpc即可
ENTRYPOINT ./frps -c frps.ini

構建:

docker build -t="behelpful/frps" .

運行(不掛載與掛載二選一)

docker run -d --name frps --restart=always -p 7000:7000 -p 9527:9527 a77a0e3bd382
docker run -it --name frps --restart=always -v /opt/frp:/opt/frp/conf -p 7000:7000 -p 9527:9527 a77a0e3bd382

方式二:

  聯網下載 GitHub 上的  frp tar包(網絡環境不錯的方式)

任意目錄下均可執行

FROM centos
 
MAINTAINER Alay<chxlay@gmail.com>
 
ARG FRP_VERSION=0.36.0
 
# 安裝工具,下面用完后移除
RUN yum -y install wget
 
# 安裝此工具是解決 wget https 時 Unable to establish SSL connection.報錯
# 同時 wget 需要攜帶參數:--no-check-certificate
RUN yum -y install openssl
 
# 創建臨時工作目錄,下載 frp tar包文件的
WORKDIR /tmp
 
RUN set -x \
    && wget https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz --no-check-certificate \
    && tar -zxvf frp_${FRP_VERSION}_linux_amd64.tar.gz \
    && mv frp_${FRP_VERSION}_linux_amd64 /opt/frp/ \
    && yum remove -y wget \
    && yum remove -y openssl \
    && yum autoremove -y
 
# 由於運行時配置文件加載位置為:./conf 路徑下,所以為以下COPY 配置文件准備配置文件目錄
RUN mkdir /opt/frp/conf/ -p
 
# 服務端配置文件由本地拷貝到容器(二選一即可)
# COPY frps.ini /opt/frp/conf/frps.ini
# 掛載配置文件路徑到宿主機,掛載與上面的復制配置文件到容器內(二選一即可)推薦
VOLUME /opt/frp/conf
 
# 服務端暴露的端口號
EXPOSE 7000
# 管理頁面暴露的端口號
EXPOSE 9527
 
# 設置當前工作目錄
WORKDIR /opt/frp
 
ENTRYPOINT ./frps -c ./conf/frps.ini

構建、運行 等和方式同步執行


方式三(強烈推薦):

   docker-compose 方式,這里以網絡方式下載 GitHub 中 frp 的 tar 包文件(網絡環境不好的自行改為本地 COPY 模式)

編寫 Dockerfile

FROM centos
 
MAINTAINER Alay<chxlay@gmail.com>
 
ARG FRP_VERSION=0.36.0
 
# 安裝工具,下面用完后移除
RUN yum -y install wget
 
# 安裝此工具是解決 wget https 時 Unable to establish SSL connection.報錯
# 同時 wget 需要攜帶參數:--no-check-certificate
RUN yum -y install openssl
 
# 創建臨時工作目錄,下載 frp tar包文件的
WORKDIR /tmp
 
RUN set -x \
    && wget https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz --no-check-certificate \
    && tar -zxvf frp_${FRP_VERSION}_linux_amd64.tar.gz \
    && mv frp_${FRP_VERSION}_linux_amd64 /opt/frp/ \
    && yum remove -y wget \
    && yum remove -y openssl \
    && yum autoremove -y
 
# 由於運行時配置文件加載位置為:./conf 路徑下,所以為以下COPY 配置文件准備配置文件目錄
RUN mkdir /opt/frp/conf/ -p
 
# 服務端配置文件由本地拷貝到容器(二選一即可)
# COPY frps.ini /opt/frp/conf/frps.ini
# 掛載配置文件路徑到宿主機,掛載與上面的復制配置文件到容器內(二選一即可)推薦
VOLUME /opt/frp/conf
 
# 設置當前工作目錄
WORKDIR /opt/frp
 
VOLUME /opt/frp
 
ENTRYPOINT ./frps -c ./conf/frps.ini

創建   docker-compose.yml 文件進行管理容器(以下是 Dockerfile 和 docker-compose.yml 在同一個目錄下  context: ./ )

version: '2'
services:
    frps:
      # 構建 Docker 鏡像
      build:
        # 構建的上下文參數路徑,相對 docker-compose.yml 的路徑
        context: ./
        # 指定Dockerfile 文件相當於 docker build -f 只有一個Dockerfile 的時候可以省略不寫
        dockerfile: Dockerfile
 
      image: alay/frps:latest
      container_name: frps
      ports:
        # 服務端的端口號,需要容器重映射到宿主機
        - 7000:7000
        # 服務端管理頁面的端口號,需要容器重映射到宿主機
        - 9527:9527
        # 每增加一個客戶端代理的端口都需要進行映射暴露給宿主機
        - 20031:20031
 
      # 這里沒有其他容器訪問,不需要暴露 link 端口號給其他容器
      # expose:
      # - 80
      #  - 443
 
      # 掛載容器卷給宿主機
      volumes:
        - /opt/frp:/opt/frp/conf
 
      # 開機自動啟動容器
      restart: always
 
      # 如果沒有域名綁定的,需要刪除下面的配置
      environment:
        # 指定需要綁定的域名
        VIRTUAL_HOST: ''

運行 指定運行 frps ,如果不指定則 docker-compose.yml 文件中所有的 service 全部啟動, -d 是不打印日志后台啟動,省略 -d 的話打印日志依然后台啟動

docker-compose up -d frps

客戶端依葫蘆畫瓢,frps   --- 改為 ---->>> frpc ,其他的大同小異,自行實現即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM