序言: 幾年前寫了一篇全面的,但是涉及管制被刪,最近發現身邊不少朋友也在用這個(英雄所見略同),而且發現新版本的frp可以用來實現負載均衡了(而且是可以跨機房的),感覺很贊,所以打算重新寫一篇關於它的文章,這篇文章只介紹frp這個工具的使用方法,不涉違法。
- 什麼是內網穿透:如你在家裏的電腦的ip地址是
192.168.1.100
, 有這個ip你是無法在公司通過這個局域網ip訪問到家裏的電腦的,內網穿透的任務就是讓你可以在公司訪問到家裏的電腦。
- 可以去github上去下載
frp
和閱讀完整文檔https://github.com/fatedier/frp, 本文比官方文檔接地氣一些,實踐經驗。
- 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是等效的。
- 這一過程的服務端配置文件
frps.ini
[common]
bind_port = 10000
bind_udp_port = 10001
kcp_bind_port = 10002
vhost_http_port = 10080
token = sfmam23tmmmfeti4
log_file = ./frps.log
log_max_days = 7
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
max_ports_per_client = 0
- 啓動服務端的方案,我們一般需其後臺運行
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
- 客戶端配置
frpc.ini
[common]
server_addr = 111.114.114.114
server_port = 10001
token = sfmam23tmmmfeti4
log_file= log.txt
[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
[my_pc_ssh]
type=tcp
local_ip = 192.168.1.100
local_port=22
remote_port=10022
- 啓動客戶端,和啓動服務端類似
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
- 瀏覽器訪問
111.114.114.114:10003
可以查看連接情況。