Docker安裝frp實現(xiàn)遠(yuǎn)程桌面連接

[TOC]


前言

由于沒有公網(wǎng)IP,無法遠(yuǎn)程連接家里的電腦,搜到了frp這個項目,嘗試使用后發(fā)現(xiàn)效果不錯,所以寫出安裝過程分享。
frp是一個反向代理工具,可以將流量轉(zhuǎn)發(fā)到目標(biāo)主機(jī),包括TCP,UDP,HTTP,HTTPS。其基本原理是目標(biāo)主機(jī)安裝客戶端連接到代理服務(wù)器建立固定連接,客戶主機(jī)通過代理服務(wù)器連接到目標(biāo)主機(jī)進(jìn)行訪問。
市面上有向日葵,TeamViewer也是類似原理,只不過這里變成代理服務(wù)器需要我們自己提供,比如從騰訊云或者阿里云購買一臺輕量服務(wù)器作為代理服務(wù)器,有固定的公網(wǎng)IP可以訪問。自建服務(wù)器的好處是帶寬獨享,可以有更穩(wěn)定的連接效果。
而制作鏡像是希望能夠方便多次部署。


安裝

1. 環(huán)境

  • 代理服務(wù)器 百度輕量云服務(wù)器 CentOS-7.6
  • docker-ce-20.10.16-3.el7
  • frp 0.41.0
  • 目標(biāo)主機(jī) Windows10
  • 客戶主機(jī) Windows10
  • 假定代理服務(wù)器IP 106.13.127.200

2. 步驟

查看SELinux

SELinux是關(guān)閉狀態(tài),不需要處理

getenforce
image.png

查看防火墻

防火墻是關(guān)閉狀態(tài),把防火墻開啟

systemctl status firewalld
systemctl start firewalld
systemctl enable firewalld
systemctl status firewalld
image.png

image.png

image.png

添加端口

提前開放一段端口范圍,用于frp流量轉(zhuǎn)發(fā)。

firewall-cmd --add-port=20000-20030/tcp --permanent
firewall-cmd --add-port=20000-20030/udp --permanent
firewall-cmd --reload
firewall-cmd --list-all
image.png

安裝docker

查看docker


image.png

docker還沒安裝,需要自己安裝。
添加docker的安裝源。

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
image.png

查看docker-ce版本

yum list docker-ce --showduplicates | sort -r
image.png

這里看到提示versionlock,由于只是安裝frp,所以先把鎖刪掉。

yum versionlock list
yum versionlock clear
image.png

Docker可以默認(rèn)安裝最新版本,或者指定版本安裝,分別指令如下。

yum install docker-ce -y
yum install docker-ce-20.10.16-3.el7 -y

這里直接安裝最新版本,等待安裝完成


image.png

image.png

安裝完后確認(rèn)docker版本,并啟動docker服務(wù)

docker -v
systemctl status docker
systemctl enable docker
systemctl start docker
systemctl status docker
image.png

配置frps

登錄代理服務(wù)器,創(chuàng)建目錄并將frp復(fù)制到目錄下

mkdir frp && cd frp
chmod +x frps
image.png

將frps.ini備份并編輯frps.ini。

bind_port 監(jiān)聽tcp端口
bind_udp_port 監(jiān)聽udp端口,實際上p2p模式才會用到,這里用不上
dashboard_port 監(jiān)控網(wǎng)頁端口
dashboard_user dashboard_pwd 監(jiān)控網(wǎng)頁用戶和密碼
token 用戶客戶端frpc連接frps時進(jìn)行校驗

vi frps.ini

[common]
bind_port = 20000
bind_udp_port = 20000
dashboard_port = 20001
dashboard_user = frp
dashboard_pwd = frpisawesome
token = frpisawesome

編輯Dockerfile

vi Server.Dockerfile

FROM centos:7
WORKDIR /root/frp
ADD ./* ./
RUN chmod +x frps
CMD ./frps -c ./frps.ini

制作鏡像

配置完畢,可以開始構(gòu)建鏡像
構(gòu)建需要拉取CentOS,根據(jù)網(wǎng)速可能需要等待一會兒

docker build -f Server.Dockerfile -t wenneryu/linux_frps:v1 .
image.png

查看鏡像,可以看到鏡像已經(jīng)制作完成,TAG是v1

docker images
image.png

基于鏡像開啟容器

docker run -itd -p 20000-20010:20000-20010 -p 20000-20010:20000-20010/udp --name frps wenneryu/linux_frps:v1
docker ps
image.png

查看監(jiān)聽端口是否開啟

netstat -anp | grep 200
image.png

查看容器日志

docker logs -f frps
image.png

目前看來一切正常。嘗試訪問監(jiān)控面板。
之前配置端口 dashboard_port = 20001,假設(shè)代理服務(wù)器IP是106.13.127.200,那么通過 http://106.13.127.200:20001 訪問監(jiān)控面板
正常情況下,會提示輸入之前配置的用戶和密碼,并看到如下頁面


image.png

配置目標(biāo)主機(jī)

代理服務(wù)器配置好后,配置目標(biāo)主機(jī),
關(guān)于遠(yuǎn)程連接的配置這里不做說明,默認(rèn)已配置好遠(yuǎn)程連接的參數(shù),只是需要代理服務(wù)器中轉(zhuǎn)。
frpc和frps配置類似,編輯frpc.ini

server_addr 服務(wù)器地址
server_port 服務(wù)器端口
token 用于連接代理服務(wù)器時檢驗口令
type 由于遠(yuǎn)程連接同時支持TCP和UDP,所以這里兩個都進(jìn)行配置
local_ip 本地ip
local_port 本地開放的端口,遠(yuǎn)程連接默認(rèn)端口是3389
remote_port 遠(yuǎn)程服務(wù)器開放的端口,用于客戶主機(jī)連接
use_compression 是否啟用壓縮,用于節(jié)省流量
訪問流程可以描述為
目標(biāo)主機(jī)登錄代理服務(wù)器106.13.127.200:20000
客戶主機(jī) -> 代理服務(wù)器106.13.127.200:20010 -> 目標(biāo)主機(jī):3389

具體配置

[common]
server_addr = 106.13.127.200
server_port = 20000
token = frpisawesome

[mstsc_tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 20010
use_compression = true

[mstsc_udp]
type = udp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 20010
use_compression = true

運(yùn)行frpc

frpc.exe -c frpc_tcp_udp.ini >> frpc.log

查看frpc的日志frpc.log


image.png

查看frps的日志


image.png

目標(biāo)主機(jī)與代理服務(wù)器成功建立TCP和UDP連接

測試遠(yuǎn)程連接

客戶主機(jī)打開遠(yuǎn)程桌面連接,輸入IP和端口進(jìn)行連接106.13.127.200:20010
可以看到成功連接,并且已啟用UDP


image.png

3. 其他

關(guān)于P2P模式

frp也支持P2P模式,即客戶主機(jī)和目標(biāo)主機(jī)直接建立連接,理論上會有更好的連接效果。但是由于現(xiàn)實中的網(wǎng)絡(luò)環(huán)境,這種模式可能失敗。本人嘗試過有失敗情況,也有成功情況。可以參考frp文檔自行嘗試。

關(guān)于遠(yuǎn)程桌面

Windows遠(yuǎn)程桌面會嘗試使用UDP提供更好的效果,所以這里同時配置了TCP和UDP代理。如果希望有更好的效果,可以考慮配置GPU渲染。關(guān)于遠(yuǎn)程桌面的流量和GPU有機(jī)會其他文章說明。


總結(jié)

  • 使用代理的原因是因為沒有公網(wǎng)IP,如果有動態(tài)公網(wǎng)IP,可以考慮DDNS實現(xiàn)直連。
  • IPV6可能會有固定的IP,如果有的話也可以嘗試IPV6直連。
  • frp的基本功能是流量轉(zhuǎn)發(fā),所以不止遠(yuǎn)程桌面,內(nèi)網(wǎng)服務(wù)器也可以通過frp對外提供服務(wù)。
  • IP訪問不太方便,可以綁定域名訪問,不過國內(nèi)域名需要備案。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容