在實際開發(fā)和運維工作中,我們經(jīng)常需要訪問內(nèi)網(wǎng)資源卻苦于沒有公網(wǎng)IP。今天我向大家推薦一款國產(chǎn)開源的內(nèi)網(wǎng)穿透利器——NPS,它比frp更簡單易用,比Ngrok更穩(wěn)定高效,是遠程辦公、物聯(lián)網(wǎng)開發(fā)、本地調(diào)試的完美解決方案!
?? NPS是什么?
NPS(Network Penetration System)是一款輕量級、高性能的內(nèi)網(wǎng)穿透代理服務(wù)器,采用Golang開發(fā)。它可以幫助你將內(nèi)網(wǎng)服務(wù)安全地暴露到公網(wǎng),支持TCP/UDP/HTTP/HTTPS等多種協(xié)議。
?? 核心優(yōu)勢
- ? 高性能:基于Golang開發(fā),低資源消耗
- ?? 安全性:支持TLS加密傳輸
- ?? 多協(xié)議:TCP/UDP/HTTP(S)/SOCKS5全支持
- ??? 多用戶:完善的客戶端權(quán)限管理
- ?? 可視化:內(nèi)置Web管理面板
- ?? 跨平臺:Windows/Linux/macOS/ARM全兼容
?? 與主流穿透工具對比
特性 | NPS | FRP | Ngrok | Zerotier |
---|
部署難度 | ???? | ??? | ???? | ????? |
管理界面 | ?? 內(nèi)置 | ? 需第三方 | ?? 專業(yè)版 | ?? 云管理 |
協(xié)議支持 | TCP/UDP/HTTP(S)/SOCKS5 | TCP/UDP/HTTP(S) | HTTP(S) | P2P虛擬網(wǎng)絡(luò) |
身份驗證 | 客戶端ID+密鑰 | Token認證 | Token認證 | 證書認證 |
性能表現(xiàn) | ???? | ??? | ?? | ????? |
??? 安裝部署指南
1. 服務(wù)端安裝(公網(wǎng)服務(wù)器)
環(huán)境要求:
- 公網(wǎng)服務(wù)器1臺(CentOS/Ubuntu)
- 開放至少80、443、8024端口
步驟1:下載安裝
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
tar -zxvf linux_amd64_server.tar.gz
cd nps
sudo ./nps install
步驟2:配置服務(wù)器
appname = nps
http_proxy_ip=0.0.0.0
http_proxy_port=80
https_proxy_port=443
bridge_port=8024
public_vkey=your_public_key_here
步驟3:啟動服務(wù)
sudo nps start
sudo nps status
sudo systemctl enable nps
2. 客戶端安裝(內(nèi)網(wǎng)機器)
Windows客戶端:
- 下載windows_amd64_client.tar.gz
- 解壓后編輯conf/npc.conf:
[common]
server_addr=your_server_ip:8024
conn_type=tcp
vkey=your_private_key
auto_reconnection=true
- 運行npc.exe
Linux客戶端:
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
tar -zxvf linux_amd64_client.tar.gz
cd npc
sudo ./npc install -server=your_server_ip:8024 -vkey=your_private_key
sudo npc start
?? 管理面板使用
訪問 http://your_server_ip:8080
(默認用戶名密碼admin/123)
核心功能模塊:
- 客戶端管理 - 查看/添加/刪除客戶端
- 隧道配置 - 端口映射規(guī)則設(shè)置
- 域名解析 - 自定義域名綁定
- 靜態(tài)文件 - 文件分享功能
- 系統(tǒng)設(shè)置 - 服務(wù)端參數(shù)調(diào)整
?? 六大典型應(yīng)用場景
1. 遠程桌面訪問(RDP/VNC)
[rdp]
mode = tcp
server_port = 33389
target_addr = 192.168.1.100
target_port = 3389
訪問方式:your_server_ip:33389
2. SSH穿透
[ssh]
mode = tcp
server_port = 2222
target_addr = 192.168.1.101
target_port = 22
連接命令:ssh -p 2222 username@your_server_ip
3. HTTP/HTTPS網(wǎng)站發(fā)布
[web]
mode = http
server_port = 80
target_addr = 192.168.1.102
target_port = 8080
host = demo.yourdomain.com
訪問:demo.yourdomain.com
4. 數(shù)據(jù)庫遠程訪問
[mysql]
mode = tcp
server_port = 3306
target_addr = 192.168.1.103
target_port = 3306
連接:mysql -h your_server_ip -u root -p
5. 本地開發(fā)調(diào)試
[dev-api]
mode = http
server_port = 8899
target_addr = 127.0.0.1
target_port = 3000
前端可直接對接:http://your_server_ip:8899/api
6. 物聯(lián)網(wǎng)設(shè)備穿透(MQTT)
[mqtt]
mode = udp
server_port = 1883
target_addr = 192.168.1.104
target_port = 1883
?? 安全保障措施
1. 身份驗證機制
- 每個客戶端需要唯一驗證密鑰(vkey)
- 支持IP白名單限制
- Web管理面板可設(shè)二次驗證
2. 傳輸加密配置
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout nps.key -out nps.crt
https_just_proxy=true
https_default_cert_file=conf/nps.crt
https_default_key_file=conf/nps.key
3. 防火墻建議規(guī)則
iptables -A INPUT -p tcp --dport 8024 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
?? 高階配置技巧
1. 負載均衡配置
[web-cluster]
mode = tcp
server_port = 8080
locations = 192.168.1.100:8080,192.168.1.101:8080
2. 流量壓縮與加密
[secure-tunnel]
mode = tcp
server_port = 5432
target_addr = 192.168.1.105
target_port = 5432
compress = true
crypt = true
3. 帶寬限制
[limited-tunnel]
mode = tcp
server_port = 22222
target_addr = 192.168.1.106
target_port = 22
flow_limit = 1024
??? 性能調(diào)優(yōu)建議
連接池配置:
[server]
p2p_ip=your_server_ip
p2p_port=6000
task_chan_num=100
日志輪轉(zhuǎn):
/var/log/nps/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 root root
}
監(jiān)控指標:
- job_name: 'nps'
static_configs:
- targets: ['your_server_ip:8081']
?? 與常見工具集成
1. 結(jié)合Docker使用
# Dockerfile示例
FROM alpine:latest
RUN wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz \
&& tar -zxvf linux_amd64_client.tar.gz \
&& mv npc /usr/local/bin/
CMD ["npc", "-server=your_server_ip:8024", "-vkey=your_vkey"]
2. 與Kubernetes集成
apiVersion: apps/v1
kind: Deployment
metadata:
name: npc-client
spec:
replicas: 1
template:
spec:
containers:
- name: npc
image: your-registry/npc-client:latest
env:
- name: NPC_SERVER
value: "your_server_ip:8024"
- name: NPC_VKEY
valueFrom:
secretKeyRef:
name: npc-secrets
key: vkey
?? 常見問題排查
Q1: 客戶端連接失敗
- ? 檢查服務(wù)端8024端口是否開放
- ? 驗證vkey是否正確
- ? 查看服務(wù)端日志:
tail -f /var/log/nps/log.log
Q2: 隧道已連接但無法訪問
- ?? 確認目標服務(wù)在內(nèi)網(wǎng)可訪問
- ?? 檢查防火墻規(guī)則
- ?? 測試本地telnet:
telnet 目標IP 目標端口
Q3: 管理面板無法登錄
- ?? 默認密碼admin/123
- ?? 重置密碼:
nps stop && nps reset
?? 性能測試數(shù)據(jù)
測試環(huán)境:1核1G云服務(wù)器 + 100M帶寬
并發(fā)連接數(shù) | 平均延遲 | 吞吐量 | CPU使用率 |
---|
100 | 28ms | 12MB/s | 15% |
500 | 45ms | 48MB/s | 42% |
1000 | 83ms | 85MB/s | 78% |
?? 適用場景推薦
- 遠程辦公:安全訪問公司內(nèi)網(wǎng)OA/ERP
- 物聯(lián)網(wǎng)開發(fā):調(diào)試遠程設(shè)備
- 微信開發(fā):本地調(diào)試公眾號/小程序
- 演示環(huán)境:臨時展示本地項目
- 混合云架構(gòu):打通公有云與私有云
?? 總結(jié)
NPS作為一款國產(chǎn)開源內(nèi)網(wǎng)穿透工具,具有以下突出優(yōu)勢:
- 部署簡單:5分鐘即可完成基礎(chǔ)配置
- 功能全面:覆蓋各類穿透需求
- 管理便捷:可視化Web面板操作
- 資源友好:1核1G服務(wù)器可支持500+并發(fā)
延伸資源:
轉(zhuǎn)自https://juejin.cn/post/7490977437674373155
該文章在 2025/4/9 15:26:49 編輯過