[運維] 內網穿透最佳實戰-基於frp

序言: 幾年前寫了一篇全面的,但是涉及管制被刪,最近發現身邊不少朋友也在用這個(英雄所見略同),而且發現新版本的frp可以用來實現負載均衡了(而且是可以跨機房的),感覺很贊,所以打算重新寫一篇關於它的文章,這篇文章只介紹frp這個工具的使用方法,不涉違法。
  1. 什麼是內網穿透:如你在家裏的電腦的ip地址是192.168.1.100, 有這個ip你是無法在公司通過這個局域網ip訪問到家裏的電腦的,內網穿透的任務就是讓你可以在公司訪問到家裏的電腦
  2. 可以去github上去下載frp和閱讀完整文檔https://github.com/fatedier/frp, 本文比官方文檔接地氣一些,實踐經驗。
  3. frp 的工作原理
    在這裏插入圖片描述
    3.1. 在公網服務器上的服務器運行 frp的服務端frps, 這臺公網服務器的ip得是可以直接訪問的(假設這個ip是111.114.114.114)。
    3.2. 在內網電腦上運行frp的客戶端frpc, 把內網的某ip( 假設這個ip是192.168.1.100)的某端口映(假設 22)射到公網服務器的某些端口上(假設10022)。
    3.3. 那麼在非局域網訪問111.114.114.114:10022和你在局域網訪問192.168.1.100:80是等效的。
  4. 這一過程的服務端配置文件 frps.ini
[common]
# 配置服務端tcp服務端口
bind_port = 10000 
# 配置服務端udp服務端口
bind_udp_port = 10001
# 配置服務端kcp服務端口
kcp_bind_port = 10002
# 虛擬站點服務,不配置他我爲apache2 配置的多個v-host會指向同一個v-host
vhost_http_port = 10080
# 服務密碼
token = sfmam23tmmmfeti4
# 日誌文件
log_file = ./frps.log
# 日誌保存天數
log_max_days = 7
# 日誌輸出等級 trace, debug, info, warn, error
log_level = info
# 服務網頁可視化面板配置
dashboard_addr = 0.0.0.0
dashboard_port = 10003
dashboard_user = admin
dashboard_pwd = admin
# 允許被用來做反向代理的端口
allow_ports = 10000-50000
# 連接池
max_pool_count = 15
# 每個客戶端允許使用的端口數,0代表不限制
max_ports_per_client = 0

  1. 啓動服務端的方案,我們一般需其後臺運行
    5.1. Mac/Linux/Unix (./frps -c frps.ini &)
    5.2. Mac/Linux/Unix 關閉ps -ef |grep frps |awk '{print $2}'|xargs kill -9 (找到進行id,kill掉即可)
    5.3. Windows 後臺運行需要寫個腳本 start_frpc.bat
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
.\frps.exe -c frps.ini
  1. 客戶端配置frpc.ini
[common]
# 公網服務器ip
server_addr = 111.114.114.114
# frps端配置的服務端口
server_port = 10001
# 服務密碼
token = sfmam23tmmmfeti4
# 日誌
log_file= log.txt
##### 下面是每個端口映射,[名稱]在整個系統中是不能重複的 ########################
# 網站1
[my_pc_80]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 10080

# 網站二
[my_pc_vhost_frontend]
type=tcp
local_ip = local.frontend.funshop.io
local_port=80
remote_port=10081

# tcp一
[my_pc_ssh]
type=tcp
local_ip = 192.168.1.100
local_port=22
remote_port=10022
  1. 啓動客戶端,和啓動服務端類似
    6.1. Mac/Linux/Unix (./frpc -c frpc.ini &)
    6.2. Mac/Linux/Unix 關閉ps -ef |grep frpc |awk '{print $2}'|xargs kill -9 (找到進行id,kill掉即可)
    6.3. 對於windows系統
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
.\frpc.exe -c frpc.ini
  1. 瀏覽器訪問111.114.114.114:10003可以查看連接情況。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章