×

nps/npc内网穿透工具使用总结(nps in action)

Falcon 2024-12-13 views:
自动摘要

正在生成中……

服务端 nps

在vps安装,我使用 docker的方式:

注意:需要在防火墙开放 8024 (默认端口)供客户端连接。

  • compose.yml:
services:
  nps:
    image: yisier1/nps
    container_name: nps
    network_mode: host
    volumes:
      - ./conf:/conf
    restart: always
  • 配置文件 conf/nps.conf
appname = nps
#Boot mode(dev|pro)
runmode = dev

#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0
http_proxy_port=8001
https_proxy_port=8002
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key

##bridge
bridge_type=tcp
bridge_port=8024
bridge_ip=0.0.0.0

# Public password, which clients can use to connect to the server
# After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file.
public_vkey=pub_vkey

#Traffic data persistence interval(minute)
#Ignorance means no persistence
#flow_store_interval=1

# log level LevelEmergency->0  LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
log_level=7
#log_path=nps.log

#Whether to restrict IP access, true or false or ignore
#ip_limit=true

#p2p
#p2p_ip=127.0.0.1
#p2p_port=6000

#web
web_host=web_host.example.com
web_username=web_username
web_password=web_password
web_port = 8003
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
# if web under proxy use sub path. like http://host/nps need this.
#web_base_url=/nps

#Web API unauthenticated IP address(the len of auth_crypt_key must be 16)
#Remove comments if needed
#auth_key=test
auth_crypt_key =cry_key

#allow_ports=9001-9009,10001,11000-12000

#Web management multi-user login
allow_user_login=false
allow_user_register=false
allow_user_change_username=false


#extension
allow_flow_limit=false
allow_rate_limit=false
allow_tunnel_num_limit=false
allow_local_proxy=false
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false

#cache
http_cache=false
http_cache_length=100

#get origin ip
http_add_origin_header=false

#pprof debug options
#pprof_ip=0.0.0.0
#pprof_port=9999

#client disconnect timeout
disconnect_timeout=60

其中最重要的是

web_host=web_host.example.com
web_username=web_username
web_password=web_password
web_port = 8003

是web访问相关的,可以通过反代 8003 加入https, 建议使用npm或openresty。

web添加客户端

会得到一个唯一验证密钥

客户端连接

docker 模式

比较简单 cat compose.yml

services:
  npc:
    image: yisier1/npc
    container_name: npc2alihost
    restart: always
    network_mode: host
    command: -server=${HOST}:${PORT} -vkey=${VKEY}

cat .env

HOST=nps的地址
PORT=8024
VKEY=前面的唯一验证密钥

windows

我在win7下折腾了好久,尝试了默认的安装服务,和自己写计划任务开机启动,还是使用了安装系统服务。

下载客户端 ,解压到目录比如 I:\npc,包含npc.execonf/npc.conf

打开命令行执行npc install会安装到系统服务。

修改npc.conf 文件:

[common]
server_addr=nps主机:8024
vkey=前面的唯一验证密钥
conn_type=tcp

需要注意的是这个配置文件要使用 LF 进行换行,如果使用windows默认的CL/LF换行,启动时会报错,提示超时。可以安装notepadd++查看不可见字符确认。

进入系统服务点击start,如果成功,在网页的客户端列表可以看到这两项均为绿色。

使用私密代理远程桌面(rdp)

在指定的windows客户端新建隧道 设置如下

填入并记住这个私密代理唯一标识密钥 , 比如 secret

在其他客户端比如mac,这个mac的客户端也需要先在web添加客户端并获取VKEY(参考第二步)

连接这个私密代理的远程桌面,这里也使用docker。

services:
  officerdp:
    image: yisier1/npc
    restart: always
    network_mode: host
    command: -server=${HOST}:${PORT} -vkey=${VKEY} -type=tcp -password=私密代理唯一标识密钥 -local_type=secret -local_port=13389

启动后远程桌面客户端连接本地的13389端口可以连入windows的远程桌面。

Update 20241226

windows将npc加入服务后经常会掉线,在浏览文档后发现有一个配置参数可以断线重连

[common]
auto_reconnection=true

先测试一段时间看看

本文收录于