前言
LanProxy項目地址: https://github.com/ffay/lanproxy
當前內容參考自:https://blog.csdn.net/u012104219/article/details/85051893
材料准備
- 一台具有公網ip的服務器
- 服務器安裝好了docker
- 防火牆最好提前關閉下,包括服務器銷售商那兒,出網入網協議端口規則
dokcer部署LanProxy
部署之前,先確定一個概念。
因為LanProxy實現內網穿透的本質,是通過監聽某個宿主機的端口,當收到任意協議的請求之后,將請求再轉發給客戶端,即我們的內網的機器(關於LanProxy怎么和內網機器通信,后面部分會有說明)
所以為保證處於容器中的LanProxy能夠監聽宿主機的端口,所以你先要確定一個端口范圍,這一整個端口范圍在后面將會用於的“內網穿透”
當前假設,你的這個端口范圍是 12000到12100 ,我開放 100 個端口號給LanProxy做內網穿透用,所以docker部署命令會是以下的內容
docker run -d --name lanproxy-server -p 8090:8090 -p 4900:4900 -p 12000-12100:12000-12100 biodwhu/lanproxy
這行命令會自動下載最新版本的鏡像,8090和4900端口都是固定端口,12000-12100這個端口范圍可以自由變更
進入容器內部的命令
docker exec -it lanproxy-server sh
瀏覽器中輸入服務器的ip地址或域名,然后加端口號8090,打開這個地址后,就能進入到lanproxy的管理界面
使用賬號admin,密碼admin登錄進去
客戶端配置(即自己內網的機器)
瀏覽器中打開上面配置好后的lanproxy服務端管理界面,並且登錄進去
自己新建一個客戶端
接下來在自己內網機器做以下操作
1、下載lanproxy的客戶端,地址為:https://github.com/ffay/lanproxy-go-client/releases
我自己打算的是在Windows上使用,所以我下載的是
接下來的客戶端使用,也會是針對window系統環境,如果你們想知道linux的內網機器如何使用這個客戶端的話,請進入作者開源地址 https://github.com/ffay/lanproxy ,其中有詳細介紹
2、解壓到本地,你可以找到里面有個 exe的可執行文件 ,這里最好自己改下文件夾名字和這個exe文件的名字,因為接下來要使用命令行的方式啟動它
在地址欄輸入 cmd ,打開命令行
按照作者給出的文檔來看,啟動這個工具的命令為:./client_windows_amd64.exe -s [SERVER_IP] -p [SERVER_PORT] -k [CLIENT_KEY]
- SERVER_IP:即上面我們用docker部署的那個lanproxy-server的服務器地址
- SERVER_PORT:docker部署lanproxy-server的時候,如果4900端口你沒改的話,那就是4900,否則使用自己更改的端口
- CLIENT_KEY:你在管理頁面新建客戶端時設置的那個客戶端秘鑰
因為我改掉了這個exe文件的文件名,所以在我這里,最終的客戶端啟動命令為:
./lanproxy -s tencent.shapman.cn -p 4900 -k shapman_lanproxy_key
這一句命令也是可以簡化的,如果你服務端lanproxy 4900端口沒有重新映射,-p 參數可以不要。同時這個exe文件的路徑,你可以加到系統環境變量的Path當中,最終的客戶端啟動命令為
lanproxy -s tencent.shapman.cn -k shapman_lanproxy_key
添加內網穿透規則
到目前為止,服務端和客戶端都已經配置完畢,並且都在運行(客戶端啟動后,如果要退出,請按下Ctrl+C,但是如果要保證內網穿透服務一直可用,請讓他保持一直運行)
lanproxy實現內網穿透的原理在於,通過啟動客戶端,實現與服務端的socket連接,讓服務端能將監聽端口而得到的數據轉發給內網機器的指定端口上。
在lanproxy的管理界面中添加配置,注意公網端口必須是在部署lanproxy-server時的那個端口范圍之中。例如我這里是12000-12100,所以選擇設置公網端口的時候,我就是從12000-12100這個范圍選擇
這時候,你就能通過訪問服務器ip加公網端口號,來訪問內網機器的指定端口