在實際開發和運維工作中,我們經常需要訪問內網資源卻苦于沒有公網IP。今天我向大家推薦一款國產開源的內網穿透利器——NPS,它比frp更簡單易用,比Ngrok更穩定高效,是遠程辦公、物聯網開發、本地調試的完美解決方案!
?? NPS是什么?
NPS(Network Penetration System)是一款輕量級、高性能的內網穿透代理服務器,采用Golang開發。它可以幫助你將內網服務安全地暴露到公網,支持TCP/UDP/HTTP/HTTPS等多種協議。
?? 核心優勢
- ? 高性能:基于Golang開發,低資源消耗
- ?? 安全性:支持TLS加密傳輸
- ?? 多協議:TCP/UDP/HTTP(S)/SOCKS5全支持
- ??? 多用戶:完善的客戶端權限管理
- ?? 可視化:內置Web管理面板
- ?? 跨平臺:Windows/Linux/macOS/ARM全兼容
?? 與主流穿透工具對比
特性 | NPS | FRP | Ngrok | Zerotier |
---|
部署難度 | ???? | ??? | ???? | ????? |
管理界面 | ?? 內置 | ? 需第三方 | ?? 專業版 | ?? 云管理 |
協議支持 | TCP/UDP/HTTP(S)/SOCKS5 | TCP/UDP/HTTP(S) | HTTP(S) | P2P虛擬網絡 |
身份驗證 | 客戶端ID+密鑰 | Token認證 | Token認證 | 證書認證 |
性能表現 | ???? | ??? | ?? | ????? |
??? 安裝部署指南
1. 服務端安裝(公網服務器)
環境要求:
- 公網服務器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:配置服務器
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:啟動服務
sudo nps start
sudo nps status
sudo systemctl enable nps
2. 客戶端安裝(內網機器)
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)
核心功能模塊:
- 客戶端管理 - 查看/添加/刪除客戶端
- 隧道配置 - 端口映射規則設置
- 域名解析 - 自定義域名綁定
- 靜態文件 - 文件分享功能
- 系統設置 - 服務端參數調整
?? 六大典型應用場景
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網站發布
[web]
mode = http
server_port = 80
target_addr = 192.168.1.102
target_port = 8080
host = demo.yourdomain.com
訪問:demo.yourdomain.com
4. 數據庫遠程訪問
[mysql]
mode = tcp
server_port = 3306
target_addr = 192.168.1.103
target_port = 3306
連接:mysql -h your_server_ip -u root -p
5. 本地開發調試
[dev-api]
mode = http
server_port = 8899
target_addr = 127.0.0.1
target_port = 3000
前端可直接對接:http://your_server_ip:8899/api
6. 物聯網設備穿透(MQTT)
[mqtt]
mode = udp
server_port = 1883
target_addr = 192.168.1.104
target_port = 1883
?? 安全保障措施
1. 身份驗證機制
- 每個客戶端需要唯一驗證密鑰(vkey)
- 支持IP白名單限制
- Web管理面板可設二次驗證
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. 防火墻建議規則
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
??? 性能調優建議
連接池配置:
[server]
p2p_ip=your_server_ip
p2p_port=6000
task_chan_num=100
日志輪轉:
/var/log/nps/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 root root
}
監控指標:
- job_name: 'nps'
static_configs:
- targets: ['your_server_ip:8081']
?? 與常見工具集成
1. 結合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: 客戶端連接失敗
- ? 檢查服務端8024端口是否開放
- ? 驗證vkey是否正確
- ? 查看服務端日志:
tail -f /var/log/nps/log.log
Q2: 隧道已連接但無法訪問
- ?? 確認目標服務在內網可訪問
- ?? 檢查防火墻規則
- ?? 測試本地telnet:
telnet 目標IP 目標端口
Q3: 管理面板無法登錄
- ?? 默認密碼admin/123
- ?? 重置密碼:
nps stop && nps reset
?? 性能測試數據
測試環境:1核1G云服務器 + 100M帶寬
并發連接數 | 平均延遲 | 吞吐量 | CPU使用率 |
---|
100 | 28ms | 12MB/s | 15% |
500 | 45ms | 48MB/s | 42% |
1000 | 83ms | 85MB/s | 78% |
?? 適用場景推薦
- 遠程辦公:安全訪問公司內網OA/ERP
- 物聯網開發:調試遠程設備
- 微信開發:本地調試公眾號/小程序
- 演示環境:臨時展示本地項目
- 混合云架構:打通公有云與私有云
?? 總結
NPS作為一款國產開源內網穿透工具,具有以下突出優勢:
- 部署簡單:5分鐘即可完成基礎配置
- 功能全面:覆蓋各類穿透需求
- 管理便捷:可視化Web面板操作
- 資源友好:1核1G服務器可支持500+并發
延伸資源:
轉自https://juejin.cn/post/7490977437674373155
該文章在 2025/4/9 15:26:49 編輯過