1. 概述
frp 是一個(gè)專注于內(nèi)網(wǎng)穿透的高性能的反向代理應(yīng)用咆瘟,支持 TCP嚼隘、UDP、HTTP袒餐、HTTPS 等多種協(xié)議飞蛹。可以將內(nèi)網(wǎng)服務(wù)以安全灸眼、便捷的方式通過具有公網(wǎng) IP 節(jié)點(diǎn)的中轉(zhuǎn)暴露到公網(wǎng)卧檐。
通過在具有公網(wǎng) IP 的節(jié)點(diǎn)上部署 frp 服務(wù)端,可以輕松地將內(nèi)網(wǎng)服務(wù)穿透到公網(wǎng)焰宣,同時(shí)提供諸多專業(yè)的功能特性霉囚,這包括:
- 客戶端服務(wù)端通信支持 TCP、KCP 以及 Websocket 等多種協(xié)議匕积。
- 采用 TCP 連接流式復(fù)用盈罐,在單個(gè)連接間承載更多請(qǐng)求,節(jié)省連接建立時(shí)間闪唆。
- 代理組間的負(fù)載均衡盅粪。
- 端口復(fù)用,多個(gè)服務(wù)通過同一個(gè)服務(wù)端端口暴露悄蕾。
- 多個(gè)原生支持的客戶端插件(靜態(tài)文件查看票顾,HTTP、SOCK5 代理等),便于獨(dú)立使用 frp 客戶端完成某些工作库物。
- 高度擴(kuò)展性的服務(wù)端插件系統(tǒng)霸旗,方便結(jié)合自身需求進(jìn)行功能擴(kuò)展。
- 服務(wù)端和客戶端 UI 頁面戚揭。
github: https://github.com/fatedier/frp/
2. 準(zhǔn)備工作
2.1. 下載frp
release: https://github.com/fatedier/frp/releases
2.2. 機(jī)器準(zhǔn)備
- 一臺(tái)具有公網(wǎng)IP的機(jī)器,作為Frp Server
- 一臺(tái)內(nèi)網(wǎng)內(nèi)的機(jī)器撵枢,作為Frp Client
3. Frp Server
- 下載docker image
采用docker方式啟動(dòng)
https://hub.docker.com/r/lihaixin/frp/dockerfile
https://github.com/lihaixin/frp-docker
$ docker pull lihaixin/frp
- 修改配置文件
$ cat docker-compose.yml
version: '2.3'
services:
frp-server:
image: 'lihaixin/frp'
ports:
- '21010-21040:21010-21040'
mem_limit: 500m
environment:
- TOKEN=XXYYZZ1122
- FRP_PORT=21010
- ALLOW_PORTS=21011-21040
network_mode: bridge
- 啟動(dòng)
$ docker-compose up -d
- 查看dashboard
配置DASHBOARD_PWD
民晒,通過7000端口,可以查看frp運(yùn)行情況(以后嘗試下)
4. Frp Client
- 下載frp_0.33.0_linux_amd64.tar.gz锄禽,修改配置文件
$ cat frpc.ini
[common]
server_addr = 111.222.333.444
server_port = 21010
authentication_method = token
token = XXYYZZ1122
[frpc-ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 21011
- 創(chuàng)建開機(jī)啟動(dòng)
$ cat /etc/systemd/system/frpc.service
[Unit]
Description=FRPC
After=network-online.target
[Service]
Type=simple
ExecStart=/u/devops/frp/frpc -c /u/devops/frp/frpc.ini
KillMode=process
Restart=on-failure
RestartSec=1min
[Install]
WantedBy=multi-user.target
加載服務(wù)潜必,并enable開機(jī)啟動(dòng)
sudo systemctl daemon-reload
sudo systemctl enable frpc
sudo systemctl start frpc
- 備注:frpc也可以通過docker啟動(dòng),這樣不用設(shè)置開機(jī)啟動(dòng)
5. 測(cè)試
- 找另外一個(gè)nat內(nèi)的機(jī)器沃但,測(cè)試是否ok
ssh ssh-account@111.222.333.444 -p 21011