1. 程式人生 > 其它 >FRP搭建內網穿透

FRP搭建內網穿透

前言

frp是一個開源的專案, 可用於內網穿透的高效能的反向代理應用,支援 tcp, udp 協議,為 http 和 https 應用協議提供了額外的能力,且嘗試性支援了點對點穿透。
frp可以通過有公網IP的的伺服器將內網的主機暴露給網際網路,從而實現通過外網能直接訪問到內網主機;frp有服務端和客戶端,服務端需要裝在有公網ip的伺服器上,客戶端裝在內網主機上。

準備

  1. 公網伺服器或公網IP(我用的是騰訊雲的centos7)
  2. 內網的電腦(我用的是win10)
  3. 下載frp,地址:https://github.com/fatedier/frp/releases (客戶端和服務端的版本一定要一樣,這裡我用v0.38.0)

因為我服務端是用linux,客戶端是用windows。所以需要下載兩個包分別是:

說明

客戶端檔案是frpc(執行檔案)、frpc.ini(配置檔案)
服務端檔案是frps(執行檔案)、frps.ini(配置檔案)
其實c就是client,s就是server,還是挺好分和記憶的

配置伺服器

  1. 把安裝包frp_0.38.0_linux_386.tar.gz 傳到伺服器
  2. 到安裝包的目錄後操作:
tar -zxvf frp_0.38.0_linux_386.tar.gz
cd frp_0.38.0_linux_386
mv frp_0.38.0_linux_386 /usr/local/frp

3.修改服務端的配置檔案

以下的值都是可以自定義,但是要注意是否和其他的服務的埠衝突等

bind_port = 7000 #繫結埠,就是客戶端連線到服務端時的埠
token = eewerwer #token,就是客戶端連線到服務端時的鑑權
dashboard_port = 7500 #訪問服務端面板的埠
dashboard_user = admin #訪問服務端面板的賬號
dashboard_pwd = admin #訪問服務端面板的密碼
vhost_http_port = 8080 http穿透埠
vhost_https_port = 10443 https穿透埠

配置完就可以啟動了:

訪問服務端面板,輸入公網的ip:埠;這裡的埠就是配置檔案dashboard_port的值(我已經登陸進去了)

至此,服務端已配置完成

配置客戶端

  1. 把安裝包frp_0.38.0_windows_386.zip 解壓,然後進入目錄
  2. 配置配置檔案
[common]
server_addr = 106.5X.XX.XXX #這是公網伺服器的ip
server_port = 7000 #這是伺服器配置檔案bind_port的值
token = eewerwer #對應伺服器的token

[web] #代理名稱,隨意命名
type = http #協議型別,此處為http,還可以配置tcp,udp等
local_port = 8072 #代理的本地埠,就是你訪問本地專案時的埠
custom_domains = 106.5X.XX.XXX #公網的也可以是域名

啟動客戶端

訪問方法

使用custom_domains 指定的地址或者域名,埠為服務端的 vhost_http_port 指定的埠,此處為8080, 訪問後就相當於訪問到了本地的埠 8072
此處為: xxx.xxx.xxx.xxx:8080
代理方式相當於: xxx.xxx.xxx.xxx:8080 --> 127.0.0.1:8072

建立多個反向代理

這裡的服務端和客戶端是一對一的,所以需要重新建立服務端,指定不同的frp埠和http的埠

踩坑

一開始訪問,網頁返回ERR_UNSAFE_PORT
原因是:配置了一些埠,如一開始vhost_http_port=10080,訪問時瀏覽器會識別為不安全埠,不能訪問;例如以下部分埠:

1, // tcpmux
7, // echo
9, // discard
11, // systat
13, // daytime
15, // netstat
17, // qotd
19, // chargen
20, // ftp data
21, // ftp access
22, // ssh
23, // telnet
25, // smtp
37, // time
42, // name
43, // nicname
53, // domain
77, // priv-rjs
79, // finger
87, // ttylink
95, // supdup
101, // hostriame
102, // iso-tsap
103, // gppitnp
104, // acr-nema
109, // pop2
110, // pop3
111, // sunrpc
113, // auth
115, // sftp
117, // uucp-path
119, // nntp
123, // NTP
135, // loc-srv /epmap
139, // netbios
143, // imap2
179, // BGP
389, // ldap
465, // smtp+ssl
512, // print / exec
513, // login
514, // shell
515, // printer
526, // tempo
530, // courier
531, // chat
532, // netnews
540, // uucp
556, // remotefs
563, // nntp+ssl
587, // stmp?
601, // ??
636, // ldap+ssl
993, // ldap+ssl
995, // pop3+ssl
2049, // nfs
3659, // apple-sasl / PasswordServer
4045, // lockd
6000, // X11
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]
6668, // Alternate IRC [Apple addition]
6669, // Alternate IRC [Apple addition]