NPS安装
nps是一个开源的内网穿透工具。配置和安装简单。重点是免费!
首先你需要一个服务器来安装服务端(公网),这样你的客户端才可以内网穿透。
NPS 服务端安装
1、下载:根据自己的系统,选择对应的版本。

将服务端上传到公网服务器中,解压安装
tar -zxvf linux_arm64_server.tar.gz
./nps install

2、配置
配置文件地址 /etc/nps/conf/nps.conf
主要修改web部分,用户名,密码,端口号。用来登录管理中心。
#web
web_host=a.o.com
web_username=admin
web_password=123456
web_port = 8081 # web端访问端口
web_ip=0.0.0.0
web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key
bridge_port=8024 # 客户端连接的端口

3、启动服务端
./nps start

一般来讲就启动成功了,可以在浏览器访问看看。
浏览器访问地址 xx.xx.xx.xx:8081
(xx.xx.xx.xx 为服务器IP地址)


如果启动失败,查看日志文件 cat /var/log/nps.log
端口冲突就去修改端口。
# nps 的几个命令
./nps start
./nps stop
./nps restart
./nps uninstall
./nps update
# 设置开机自启
sudo systemctl enable nps
4、添加客户端


现在还是离线的,需要先启动客户端。下面就是安装客户端。
NPC客户端安装
客户端是我自己的win10电脑,这里我下载win版本的客户端

启动命令

-server:nps的服务IP和端口,端口不是web端访问端口,是连接端口,可以在配置中做修改,默认8024
-vkey:客户端设置的密钥
./npc -server=192.168.1.111:8024 -vkey=123456 -type=tcp
端口修改


服务就在线了

添加TCP隧道
隧道就是具体穿透的端口号
访问:
这里直接访问nps的IP+隧道端口就可以代理到我本地的服务了

编写启动脚本
win
npc.exe -server=192.168.1.111:8024 -vkey=123456 -type=tcp

linux
nohup ./npc -server=192.168.1.111:8024 -vkey=123456 -type=tcp &
六大典型应用场景
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
# 配置conf/nps.conf
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 # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS
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 # KB/s
性能调优建议
1、连接池配置
# conf/nps.conf
[server]
p2p_ip=your_server_ip
p2p_port=6000
task_chan_num=100
2 日志轮转
# 使用logrotate
/var/log/nps/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 root root
}
3 监控指标
# Prometheus监控配置
- 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集成
# deployment.yaml示例
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