內(nèi)網(wǎng)穿透是指將內(nèi)網(wǎng)中的軟件服務(wù)通過網(wǎng)絡(luò)代理方式暴露給廣域網(wǎng)用戶客年。可以實現(xiàn)內(nèi)網(wǎng)穿透的方式很多,比如通過防火墻硬件仅财、網(wǎng)絡(luò)穿透軟件來進行實現(xiàn)膘茎。本文主要介紹通過NPS軟件實現(xiàn)典型的內(nèi)網(wǎng)穿透轧坎。
NPS介紹
nps是一款輕量級煎娇、高性能眉踱、功能強大的內(nèi)網(wǎng)穿透代理服務(wù)器语卤。目前支持tcp追逮、udp流量轉(zhuǎn)發(fā),可支持任何tcp粹舵、udp上層協(xié)議(訪問內(nèi)網(wǎng)網(wǎng)站钮孵、本地支付接口調(diào)試、ssh訪問眼滤、遠程桌面巴席,內(nèi)網(wǎng)dns解析等等……),此外還支持內(nèi)網(wǎng)http代理诅需、內(nèi)網(wǎng)socks5代理漾唉、p2p等,并帶有功能強大的web管理端堰塌。
其官方網(wǎng)站為:https://ehang-io.github.io/nps 其官網(wǎng)文檔對軟件的安裝赵刑、使用描述的非常完整,基本根據(jù)官方文檔就可以進行順利安裝與使用场刑。
基本概念
了解該軟件的使用般此,首先需要了解一個基本的內(nèi)網(wǎng)穿透使用場景。
- 服務(wù)器端牵现,一般安裝在公網(wǎng)服務(wù)器上铐懊,是所有內(nèi)網(wǎng)資源對外的統(tǒng)一入口。
- 客戶端瞎疼,一般安裝在內(nèi)網(wǎng)服務(wù)器上科乎,是內(nèi)網(wǎng)服務(wù)器與公網(wǎng)服務(wù)器的橋梁。
- 客戶端連接端口贼急,客戶端使用該秘鑰連接服務(wù)端連接端口建立長連接茅茂,用于將外網(wǎng)服務(wù)器請求信息轉(zhuǎn)發(fā)至對應(yīng)客戶端捏萍,對應(yīng)客戶端也通過該端口返回相關(guān)信息。
- 客戶端秘鑰玉吁,在服務(wù)端部署完成后照弥,需要建立客戶端秘鑰,并在客戶端連接時需要使用該秘鑰進行連接进副。
一個服務(wù)器端这揣,可以對應(yīng)多個客戶端。在服務(wù)器端的不同端口影斑,可以映射在不同客戶端的對應(yīng)本地端口之上给赞。
典型場景
本文我們設(shè)計一個最常見的場景,來說明整個軟件的使用過程矫户。我們設(shè)定基本需求如下片迅。
- 我們有一臺具備公網(wǎng)IP的服務(wù)器,服務(wù)器名稱為public-server皆辽,操作系統(tǒng)為linux
- 我們有兩臺內(nèi)網(wǎng)服務(wù)器inner-server1(linux)柑蛇、inner-server2(windows)
- 我們將公網(wǎng)服務(wù)器的8081端口,映射至inner-server1:80;8082端口映射至inner-server2:80端口驱闷。
- 兩個代理協(xié)議均為TCP協(xié)議
操作步驟
外網(wǎng)服務(wù)器public-server(linux)服務(wù)端nps安裝
-
首先耻台,需要登錄其github項目發(fā)布版本頁面 (https://github.com/ehang-io/nps/releases ) 下載對應(yīng)版本服務(wù)端nps軟件。根據(jù)public-server的情況這里我們下載空另,linux_amd64_server.tar.gz版本盆耽。
-
通過ssh登錄public-server,并將文件上傳至對應(yīng)安裝目錄扼菠,需要首先進行解壓縮摄杂。(假定文件上傳至目錄/usr/nps)
tar -xzvf linux_amd64_server.tar.gz
- 解壓縮完成后進入解壓目錄,需要執(zhí)行對應(yīng)安裝命令循榆,以保障我們可以將nps相關(guān)命令與加載至bin資源下
sudo ./nps install
- 之后我們需要啟動相關(guān)服務(wù)端軟件析恢,并在控制臺查看是否啟動成功。
sudo nps start
配置網(wǎng)絡(luò)代理并開啟publiic-server WEB服務(wù)端端口
- 在啟動成功后秧饮,我們需要打開防火墻8080端口映挂,使得可以通過瀏覽器登錄其管理臺。同時需要打開8024端口浦楣,使得客戶端可以連接到服務(wù)端通訊端口。
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=8024/tcp
sudo firewall-cmd --reload
- 使用瀏覽器登錄相關(guān)端口咪辱,提示用戶名稱與密碼振劳。使用如下默認用戶名密碼進行登錄。
admin/123
- 登錄成功后一定要修改相關(guān)密碼油狂,修改配置文件 nps.conf
sudo vim /etc/nps/conf/nps.conf
web_username
web_password
- 重新啟動相關(guān)服務(wù)并嘗試重新登錄
sudo nps stop
sudo nps start
通過web管理臺配置客戶端接入信息
-
使用瀏覽器登錄相關(guān)端口历恐,提示用戶名稱與密碼寸癌。使用如下修改后用戶名密碼進行登錄。
-
點擊 客戶端 -> 新增 弱贼,依次填寫 備注(inner-server1)蒸苇、允許客戶端通過配置文件連接(是)、壓縮(是)吮旅、加密(是)溪烤,不填寫Basic 認證用戶名、Basic 認證密碼庇勃、唯一驗證密鑰
-
點擊 客戶端 -> 新增 ,依次填寫 備注(inner-server2)责嚷、允許客戶端通過配置文件連接(是)鸳兽、壓縮(是)、加密(是)罕拂,不填寫Basic 認證用戶名揍异、Basic 認證密碼、唯一驗證密鑰
-
新建完成后查看客戶端清單爆班,保存好兩臺服務(wù)器自動生成的唯一驗證密鑰衷掷、客戶端ID備用,在這里我們假定其分別為“client-key”蛋济、"client-id"
內(nèi)網(wǎng)服務(wù)器inner-server1安裝npc(linux)客戶端并連接
-
需要登錄其github項目發(fā)布版本頁面 ( https://github.com/ehang-io/nps/releases ) 下載對應(yīng)版本客戶端nps軟件棍鳖。根據(jù)public-server的情況這里我們下載,linux_amd64_client.tar.gz 版本碗旅。
-
通過ssh登錄inner-server1渡处,并將文件上傳至對應(yīng)安裝目錄,需要首先進行解壓縮祟辟。(假定文件上傳至目錄/usr/npc)
tar -xzvf linux_amd64_client.tar.gz
- 解壓縮完成后進入解壓目錄医瘫,需要執(zhí)行對應(yīng)安裝命令,以保障我們可以將npc相關(guān)命令與加載至bin資源下旧困,同時設(shè)置服務(wù)器ip地址端口以及連接秘鑰(上一步新建客戶端時自動生成并備用的信息)醇份。
sudo ./npc install -server=public-server:8024 -vkey=client-key
- 之后我們需要啟動相關(guān)服務(wù)端軟件,并在控制臺查看是否啟動成功吼具。
sudo npc stop
sudo npc start
內(nèi)網(wǎng)服務(wù)器inner-server2安裝npc(windows)客戶端并連接
-
需要登錄其github項目發(fā)布版本頁面 ( https://github.com/ehang-io/nps/releases ) 下載對應(yīng)版本客戶端nps軟件僚纷。根據(jù)public-server的情況這里我們下載,windows_amd64_client.tar.gz 版本拗盒。
-
通過ssh登錄inner-server1怖竭,并將文件上傳至對應(yīng)安裝目錄,需要首先進行解壓縮陡蝇。(假定文件上傳至目錄D:\npc)
tar -xzvf windows_amd64_client.tar.gz
- 解壓縮完成后進入解壓目錄痊臭,需要執(zhí)行對應(yīng)安裝命令哮肚,同時設(shè)置服務(wù)器ip地址端口以及連接秘鑰(上一步新建客戶端時自動生成并備用的信息)。
npc.exe install -server=public-server:8024 -vkey=inner-server2唯一驗證密鑰
- 之后我們需要啟動相關(guān)服務(wù)端軟件广匙,并在控制臺查看是否啟動成功允趟。
npc.exe stop
npc.exe start
外網(wǎng)服務(wù)器public-server(linux)服務(wù)端端口映射配置
- 使用瀏覽器登錄相關(guān)端口,提示用戶名稱與密碼鸦致。使用如下修改后用戶名密碼進行登錄潮剪。
- 在此需要使用到上文談到創(chuàng)建客戶端后自動生成的客戶端ID。
- 選擇TCP 隧道->新增 蹋凝,依次填寫 模式(TCP)鲁纠、客戶端ID(client-id)、備注(inner-server1-80)鳍寂、**服務(wù)端端口(8081)改含、目標(biāo)(127.0.0.1:80)
- 選擇TCP 隧道->新增 ,依次填寫 模式(TCP)迄汛、客戶端ID(client-id)捍壤、備注(inner-server2-80)、**服務(wù)端端口(8082)鞍爱、目標(biāo)(127.0.0.1:80)
- 打開public-server相關(guān)防火墻
sudo firewall-cmd --permanent --add-port=8081/tcp
sudo firewall-cmd --permanent --add-port=8082/tcp
sudo firewall-cmd --reload
- 測試訪問public-server:8081/8082端口并觀察服務(wù)端鹃觉、客戶端日志進行驗證轉(zhuǎn)發(fā)是否成功。
總結(jié)
至此睹逃,我們基于nps完成了最常見的內(nèi)網(wǎng)穿透配置盗扇,其實nps所支持的協(xié)議、操作系統(tǒng)非常多沉填,大家可以根據(jù)官方文檔進行逐步學(xué)習(xí)疗隶、驗證即可。整體系統(tǒng)的可用性非常好翼闹,我部署了一年沒有出現(xiàn)過任何問題斑鼻。
版權(quán)聲明,本文首發(fā)于 數(shù)字魔盒 https://www.dm2box.com/ 歡迎轉(zhuǎn)載猎荠。