NPS内网穿透使用小计
本文部分内容是本人撰写后经由AI润色的

NPS是一款设计精致、性能出众且功能齐全的内网穿透代理服务器解决方案。

它支持TCP、UDP、SOCKS5代理、HTTP代理等多种数据转发类型,大幅增强了对内网资源的访问能力。

使用NPS,用户可以轻松完成访问内部网站、安全调试本地支付接口、SSH远程连接、远程桌面控制、内网DNS解析服务以及建立内网SOCKS5代理等多种应用场景。

NPS提供了一个直观的Web管理面板,而且其客户端连接时无需任何配置文件,这在功能上远超过Frp。

服务端和客户端是单独的。服务端称为NPS,客户端软件称为NPC(NPS Client)。NPS项目的Release文件包括了NPS和NPC两部分。

NPS具有以下特点

  • 协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理。
  • 全平台兼容(linux、windows、macos、群辉等),支持一键安装为系统服务,亦可直接运行调试。
  • 控制全面,同时支持服务端和客户端控制。
  • https集成,支持将后端代理和web服务转成https,同时支持多证书。
  • 操作简单,只需简单的配置即可在web ui上完成其余操作。
  • 展示信息全面,流量、系统信息、即时带宽、客户端版本等
  • 扩展功能强大,具有缓存、压缩、加密、流量限制、带宽限制、端口复用等功能
  • 域名解析具备自定义header、404页面配置、host修改、站点保护、URL路由、泛解析等功能
  • 服务端支持多用户和用户注册功能

由于原作者长时间不更新NPS,这里使用yisier修改的的分支版本,大体使用和原版无异。

NPS服务端安装

以AMD64架构下Debian 11系统为例进行展示,在Releases · yisier/nps (github.com)里找到对应系统架构的文件,注意服务端要选server字样的。

# 创建一个名为NPS的目录  
mkdir NPS  
  
# 进入NPS目录  
cd NPS  
  
# 下载nps服务器二进制文件的压缩包(发稿时最新版本是0.26.19,以实际情况为准)
wget https://github.com/yisier/nps/releases/download/v0.26.19/linux_amd64_server.tar.gz  
  
# 列出当前目录下的文件和目录(此时应该只看到下载的压缩包)  
ls  
# 输出应该类似于:  
# linux_amd64_server.tar.gz  
  
# 解压压缩包  
tar -xzf linux_amd64_server.tar.gz  
  
# 再次列出当前目录下的文件和目录(此时应该看到解压后的内容)  
ls  
# 输出可能类似于(具体取决于压缩包中的内容):  
# conf  linux_amd64_server.tar.gz  nps  web

在当前目录下,直接运行

./nps

即可以默认配置直接启动NPS服务器,此时使用的是/NPS/conf/nps.conf的配置(即二进制文件目录下的conf文件)

Ctrl+C可以终止进程

用于正式环境时,请将nps注册为系统服务,使用如下命令

sudo ./nps install

此时NPS会在/etc/nps/conf下生成nps.conf配置文件,随后均以该配置文件为准


nano /etc/nps/conf/nps.conf

配置文件说明:

appname = nps
#Boot mode(dev|pro)
runmode = dev

##下面是http/https代理使用的默认端口
#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0 
http_proxy_port=80    
https_proxy_port=443  
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key


#用于和NPC客户端链接的配置
##bridge  
bridge_type=tcp 
bridge_port=8024  #NPC客户端链接的端口,NPC客户端会与NPS服务端的bridge_port保持链接,请确保该端口可被访问。
bridge_ip=0.0.0.0

# Public password, which clients can use to connect to t>
# After the connection, the server will be able to open >
public_vkey=123

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

# log level LevelEmergency->0  LevelAlert->1 LevelCritic>
log_level=6
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管理NPS面板的信息,如需使用域名访问控制面板,请把域名解析到NPS服务器的IP,然后把下面web_host改为你的域名。
##用户名和端口需要注意修改

#web
web_host=a.o.com
web_username=admin
web_password=123
web_port = 8081
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 >
#web_base_url=/nps

#Web API unauthenticated IP address(the len of auth_cryp>
#Remove comments if needed
#auth_key=test
auth_key=123
#获取服务端authKey时的aes加密密钥,16位
auth_crypt_key =213

#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=true
#带宽限制
allow_rate_limit=true
#客户端最大隧道数限制
allow_tunnel_num_limit=true
allow_local_proxy=false
#客户端最大连接数
allow_connection_num_limit=true
#每个隧道监听不同的服务端端口
allow_multi_ip=true
system_info_display=true

#获取用户真实ip
#获取用户真实ip
http_add_origin_header=true

#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

#管理面板开启验证码校验
open_captcha=true


# 是否开启tls
tls_enable=true
tls_bridge_port=8025

NPS存在严重的未授权访问漏洞,未授权用户可伪造请求,具体参考以下:

参见:NPS未授权访问漏洞详解 – FreeBuf网络安全行业门户

NPS反制之绕过登陆验证 (huclilu.github.io)

解决方案:去除#auth_key=test前的注释,auth_key和auth_crypt_key改为随机值

保存并关闭nano,

sudo nps start

即可启动nps

此时可通过

sudo nps status

来查看NPS的运行情况,

图片中的错误信息指示8081和443端口被占用

sudo npc start

sudo npc stop

进行启动停止,无需人为干涉。

NPC(客户端)默认是不需要进行参数配置的,只需要程序本身和一行命令即可,使用起来极其方便。

当NPC与NPS建立链接后,即可在NPS面板上操作,无需理会NPC

此外,如需更改注册参数(如更换NPS服务器),需要

sudo npc uninstall

卸载后,再次执行install。

需要注意的是,也可以直接运行:./npc -server=1.1.1.1:8024 -vkey=verifykey -type=tcp   运行,在ssh中观察情况。

注意,这种情况下,ssh断开后立刻停止

在临时调试时,也可以使用nohup ./npc -server=1.1.1.1:8024 -vkey=verifykey -type=tcp >/var/npClient/nps.txt &

命令,让npc在后台运行。此时,使用

ps -ef

找到npc进程的id后,kill。即可停止运行。这种情况在测试时相对方便。

本站所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明出处!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇