nps 是一款輕量級(jí)、高性能、功能強(qiáng)大的內(nèi)網(wǎng)穿透代理服務(wù)器。
目前支持 tcp、udp 流量轉(zhuǎn)發(fā),可支持任何 tcp、udp 上層協(xié)議(訪(fǎng)問(wèn)內(nèi)網(wǎng)網(wǎng)站、本地支付接口調(diào)試、ssh 訪(fǎng)問(wèn)、遠(yuǎn)程桌面,內(nèi)網(wǎng) dns 解析等等……),此外還支持內(nèi)網(wǎng) http 代理、內(nèi)網(wǎng) socks5 代理、p2p 等,并帶有功能強(qiáng)大的 web 管理端。
功能
協(xié)議支持全面,兼容幾乎所有常用協(xié)議,例如 tcp、udp、http(s)、socks5、p2p、http 代理...
全平臺(tái)兼容(linux、windows、macos、群輝等),支持一鍵安裝為系統(tǒng)服務(wù)
控制全面,同時(shí)支持服務(wù)端和客戶(hù)端控制
https 集成,支持將后端代理和 web 服務(wù)轉(zhuǎn)成 https,同時(shí)支持多證書(shū)
操作簡(jiǎn)單,只需簡(jiǎn)單的配置即可在 web ui 上完成其余操作
展示信息全面,流量、系統(tǒng)信息、即時(shí)帶寬、客戶(hù)端版本等
擴(kuò)展功能強(qiáng)大,該有的都有了(緩存、壓縮、加密、流量限制、帶寬限制、端口復(fù)用等等)
域名解析具備自定義 header、404 頁(yè)面配置、host 修改、站點(diǎn)保護(hù)、URL 路由、泛解析等功能
服務(wù)端支持多用戶(hù)和用戶(hù)注冊(cè)功能
快速開(kāi)始
安裝
https://github.com/ehang-io/nps/releases
下載對(duì)應(yīng)的系統(tǒng)版本即可,服務(wù)端和客戶(hù)端是單獨(dú)的
服務(wù)端啟動(dòng)
下載完服務(wù)器壓縮包后,解壓,然后進(jìn)入解壓后的文件夾
執(zhí)行安裝命令
對(duì)于 linux|darwin
sudo ./nps install
對(duì)于 windows,管理員身份運(yùn)行 cmd,進(jìn)入安裝目錄
nps.exe install
默認(rèn)端口
nps 默認(rèn)配置文件使用了 80,443,8080,8024 端口
80 與 443 端口為域名解析模式默認(rèn)端口
8080 為 web 管理訪(fǎng)問(wèn)端口
8024 為網(wǎng)橋端口,用于客戶(hù)端與服務(wù)器通信
啟動(dòng)
對(duì)于 linux|darwin
sudo nps start
對(duì)于 windows,管理員身份運(yùn)行 cmd,進(jìn)入程序目錄
nps.exe start
安裝后 windows 配置文件位于 C:\Program Files\nps
,linux 和 darwin 位于/etc/nps
如果發(fā)現(xiàn)沒(méi)有啟動(dòng)成功,可以查看日志(Windows 日志文件位于當(dāng)前運(yùn)行目錄下,linux 和 darwin 位于/var/log/nps.log
)
訪(fǎng)問(wèn)服務(wù)端 ip:web 服務(wù)端口(默認(rèn)為 8080)
使用用戶(hù)名和密碼登陸(默認(rèn) admin/123,正式使用一定要更改)
客戶(hù)端連接
點(diǎn)擊 web 管理中客戶(hù)端前的+號(hào),復(fù)制啟動(dòng)命令
執(zhí)行啟動(dòng)命令,linux 直接執(zhí)行即可,windows 將./npc
換成 npc.exe
用 cmd 執(zhí)行 如果需要注冊(cè)到系統(tǒng)服務(wù)可查看注冊(cè)到系統(tǒng)服務(wù)
https://ehang-io.github.io/nps/#/use?id=注冊(cè)到系統(tǒng)服務(wù)
配置
客戶(hù)端連接后,在 web 中配置對(duì)應(yīng)穿透服務(wù)即可
可以查看使用示例
使用示例
統(tǒng)一準(zhǔn)備工作(必做)
開(kāi)啟服務(wù)端,假設(shè)公網(wǎng)服務(wù)器 ip 為 1.1.1.1
,配置文件中bridge_port
為 8024,配置文件中web_port
為 8080
訪(fǎng)問(wèn) 1.1.1.1:8080
在客戶(hù)端管理中創(chuàng)建一個(gè)客戶(hù)端,記錄下驗(yàn)證密鑰
內(nèi)網(wǎng)客戶(hù)端運(yùn)行(windows 使用 cmd 運(yùn)行加.exe)
./npc -server=1.1.1.1:8024 -vkey=客戶(hù)端的密鑰
注意:
運(yùn)行服務(wù)端后,請(qǐng)確保能從客戶(hù)端設(shè)備上正常訪(fǎng)問(wèn)配置文件中所配置的bridge_port
端口,telnet,netcat 這類(lèi)的來(lái)檢查
域名解析
適用范圍:
小程序開(kāi)發(fā)、微信公眾號(hào)開(kāi)發(fā)、產(chǎn)品演示
注意:
域名解析模式為 http 反向代理,不是 dns 服務(wù)器,在 web 上能夠輕松靈活配置
假設(shè)場(chǎng)景:
有一個(gè)域名 proxy.com
,有一臺(tái)公網(wǎng)機(jī)器 ip 為 1.1.1.1
兩個(gè)內(nèi)網(wǎng)開(kāi)發(fā)站點(diǎn) 127.0.0.1:81
,127.0.0.1:82
想通過(guò)(http|https://)a.proxy.com
訪(fǎng)問(wèn)127.0.0.1:81
,通過(guò)(http|https://)b.proxy.com
訪(fǎng)問(wèn)127.0.0.1:82
使用步驟:
將*.proxy.com
解析到公網(wǎng)服務(wù)器 1.1.1.1
點(diǎn)擊剛才創(chuàng)建的客戶(hù)端的域名管理,添加兩條規(guī)則規(guī)則:
域名:a.proxy.com
,內(nèi)網(wǎng)目標(biāo):127.0.0.1:81
,
域名:b.proxy.com
,內(nèi)網(wǎng)目標(biāo):127.0.0.1:82
現(xiàn)在訪(fǎng)問(wèn)(http|https://)a.proxy.com
,b.proxy.com
即可成功
tcp 隧道
適用范圍:
ssh、遠(yuǎn)程桌面等 tcp 連接場(chǎng)景
假設(shè)場(chǎng)景:
想通過(guò)訪(fǎng)問(wèn)公網(wǎng)服務(wù)器 1.1.1.1 的 8001 端口,連接內(nèi)網(wǎng)機(jī)器 10.1.50.101
的 22 端口,實(shí)現(xiàn) ssh 連接
使用步驟:
在剛才創(chuàng)建的客戶(hù)端隧道管理中添加一條 tcp 隧道,填寫(xiě)監(jiān)聽(tīng)的端口(8001)、內(nèi)網(wǎng)目標(biāo) ip 和目標(biāo)端口(10.1.50.101:22
),保存。
訪(fǎng)問(wèn)公網(wǎng)服務(wù)器 ip(1.1.1.1),填寫(xiě)的監(jiān)聽(tīng)端口(8001),相當(dāng)于訪(fǎng)問(wèn)內(nèi)網(wǎng) ip(10.1.50.101):目標(biāo)端口(22),例如:ssh -p 8001 root@1.1.1.1
udp 隧道
適用范圍:
內(nèi)網(wǎng) dns 解析等 udp 連接場(chǎng)景
假設(shè)場(chǎng)景:
內(nèi)網(wǎng)有一臺(tái) dns(10.1.50.102:53
),在非內(nèi)網(wǎng)環(huán)境下想使用該 dns,公網(wǎng)服務(wù)器為 1.1.1.1
使用步驟:
在剛才創(chuàng)建的客戶(hù)端的隧道管理中添加一條 udp 隧道,填寫(xiě)監(jiān)聽(tīng)的端口(53)、內(nèi)網(wǎng)目標(biāo) ip 和目標(biāo)端口(10.1.50.102:53
),保存。
修改需要使用的 dns 地址為 1.1.1.1,則相當(dāng)于使用 10.1.50.102
作為 dns 服務(wù)器
socks5 代理
適用范圍:
在外網(wǎng)環(huán)境下如同使用 vpn 一樣訪(fǎng)問(wèn)內(nèi)網(wǎng)設(shè)備或者資源
假設(shè)場(chǎng)景:
想將公網(wǎng)服務(wù)器 1.1.1.1 的 8003 端口作為 socks5 代理,達(dá)到訪(fǎng)問(wèn)內(nèi)網(wǎng)任意設(shè)備或者資源的效果
使用步驟:
在剛才創(chuàng)建的客戶(hù)端隧道管理中添加一條 socks5 代理,填寫(xiě)監(jiān)聽(tīng)的端口(8003),保存。
在外網(wǎng)環(huán)境的本機(jī)配置 socks5 代理(例如使用 proxifier 進(jìn)行全局代理),ip 為公網(wǎng)服務(wù)器 ip(1.1.1.1),端口為填寫(xiě)的監(jiān)聽(tīng)端口(8003),即可暢享內(nèi)網(wǎng)了
注意:
經(jīng)過(guò) socks5 代理,當(dāng)收到 socks5 數(shù)據(jù)包時(shí) socket 已經(jīng)是 accept 狀態(tài)。表現(xiàn)是掃描端口全 open,建立連接后短時(shí)間關(guān)閉。若想同內(nèi)網(wǎng)表現(xiàn)一致,建議遠(yuǎn)程連接一臺(tái)設(shè)備。
http 正向代理
適用范圍:
在外網(wǎng)環(huán)境下使用 http 正向代理訪(fǎng)問(wèn)內(nèi)網(wǎng)站點(diǎn)
假設(shè)場(chǎng)景:
想將公網(wǎng)服務(wù)器 1.1.1.1 的 8004 端口作為 http 代理,訪(fǎng)問(wèn)內(nèi)網(wǎng)網(wǎng)站
使用步驟:
在剛才創(chuàng)建的客戶(hù)端隧道管理中添加一條 http 代理,填寫(xiě)監(jiān)聽(tīng)的端口(8004),保存。
在外網(wǎng)環(huán)境的本機(jī)配置 http 代理,ip 為公網(wǎng)服務(wù)器 ip(1.1.1.1),端口為填寫(xiě)的監(jiān)聽(tīng)端口(8004),即可訪(fǎng)問(wèn)了
注意:
對(duì)于私密代理與 p2p,除了統(tǒng)一配置的客戶(hù)端和服務(wù)端,還需要一個(gè)客戶(hù)端作為訪(fǎng)問(wèn)端提供一個(gè)端口來(lái)訪(fǎng)問(wèn)
私密代理
適用范圍:
無(wú)需占用多余的端口、安全性要求較高可以防止其他人連接的 tcp 服務(wù),例如 ssh。
假設(shè)場(chǎng)景:
無(wú)需新增多的端口實(shí)現(xiàn)訪(fǎng)問(wèn)內(nèi)網(wǎng)服務(wù)器 10.1.50.2
的 22 端口
使用步驟:
在剛才創(chuàng)建的客戶(hù)端中添加一條私密代理,并設(shè)置唯一密鑰 secrettest 和內(nèi)網(wǎng)目標(biāo) 10.1.50.2:22
在需要連接 ssh 的機(jī)器上以執(zhí)行命令
./npc -server=1.1.1.1:8024 -vkey=vkey -type=tcp -password=secrettest -local_type=secret
如需指定本地端口可加參數(shù)-local_port=xx
,默認(rèn)為2000
注意:
password 為 web 管理上添加的唯一密鑰,具體命令可查看 web 管理上的命令提示
假設(shè) 10.1.50.2 用戶(hù)名為 root,現(xiàn)在執(zhí)行ssh -p 2000 root@127.0.0.1
即可訪(fǎng)問(wèn) ssh
p2p 服務(wù)
適用范圍:
大流量傳輸場(chǎng)景,流量不經(jīng)過(guò)公網(wǎng)服務(wù)器,但是由于 p2p 穿透和 nat 類(lèi)型關(guān)系較大,不保證 100%成功,支持大部分 nat 類(lèi)型。nat 類(lèi)型檢測(cè)
假設(shè)場(chǎng)景:
想通過(guò)訪(fǎng)問(wèn)使用端機(jī)器(訪(fǎng)問(wèn)端,也就是本機(jī))的 2000 端口---->訪(fǎng)問(wèn)到內(nèi)網(wǎng)機(jī)器 10.2.50.2 的 22 端口
使用步驟:
在nps.conf中設(shè)置p2p_ip(nps 服務(wù)器 ip)和p2p_port
(nps 服務(wù)器 udp 端口)
注:若 p2p_port 設(shè)置為 6000,請(qǐng)?jiān)诜阑饓﹂_(kāi)放 6000~6002(額外添加 2 個(gè)端口)udp 端口
在剛才剛才創(chuàng)建的客戶(hù)端中添加一條 p2p 代理,并設(shè)置唯一密鑰 p2pssh
在使用端機(jī)器(本機(jī))執(zhí)行命令
./npc -server=1.1.1.1:8024 -vkey=123 -password=p2pssh -target=10.2.50.2:22
如需指定本地端口可加參數(shù)-local_port=xx
,默認(rèn)為2000
注意:
password 為 web 管理上添加的唯一密鑰,具體命令可查看 web 管理上的命令提示
假設(shè)內(nèi)網(wǎng)機(jī)器為 10.2.50.2 的 ssh 用戶(hù)名為 root,現(xiàn)在在本機(jī)上執(zhí)行ssh -p 2000 root@127.0.0.1
即可訪(fǎng)問(wèn)機(jī)器 2 的 ssh,如果是網(wǎng)站在瀏覽器訪(fǎng)問(wèn) 127.0.0.1:2000 端口即可。
開(kāi)源地址
https://github.com/ehang-io/nps
該文章在 2024/5/7 11:29:49 編輯過(guò)