NPS安装入门

吴书松
吴书松
发布于 2024-03-21 / 55 阅读
2
1

NPS安装入门

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


评论