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