1 nps工具介绍

NPS工具是一款使用go语言编写的轻量级、功能强大的内网穿透工具。支持TCP、UDP流量转发,支持内网HTTP、SOCKS5代理,同时支持snappy压缩(节省带宽和流量)、站点保护、加密传输、多路复用、header修改等。同时还支持web图形化管理。该工具使用简单,相比于FRP,NPS是图形化界面,因此配置更加简单。

nps同frp工作原理相似。

官方文档:

https://ehang-io.github.io/nps/#/api

https://ehang-io.github.io/nps/#/nps_extend

1.1 nps服务端与客户端

NPS工具由NPS服务器端和NPS客户端组成,我们一般将NPS服务器端放在具有公网IP的VPS上,并且会开启一个端口等待NPS的客户端进行连接(一般会在NPS服务器的配置文件中进行说明),而NPS的客户端一般会被放在我们已经拿下的内网主机上,我们会指定NPS服务器的客户端需要连接的NPS服务器的IP和端口,这样,我们就成功的将NPS的服务器端和NPS的客户端连接了起来。

1.2 nps内网穿透

按照上面的方法,我们已经配置好了NPS服务,现在服务器端和客户端是可以连通的,但是,我们又怎么可以通过NPS进行内网穿透呢?其实,NPS是会在配置文件里面设置图形化界面的登录后台,我们通过登录NPS的后台,然后使用配置文件中设置的账号密码进行登录,登录后台之后,首先添加一个客户端,这个客户端会自动生成一个唯一验证密钥,我们需要在配置文件中输入这个唯一验证密钥,这样就可以将NPS的客户端和服务端连接起来了,随后我们可以根据我们的需求添加隧道,如HTTP隧道、SOCKS隧道等多条隧道,我们通过隧道设置的端口进行访问,即可访问到内网主机。

2 下载安装

2.1 下载

下载地址:

https://github.com/ehang-io/nps/releases/tag/v0.26.9

实验环境:

服务器:鲲鹏arm 64 架构

虚拟机centos:amd 64架构

win10:amd64架构

查看服务器版本:

# 服务器
[root@charles frp]# arch
aarch64# 虚拟机 centos
[root@slave1 tools]# arch
x86_64

2.2 服务端安装与配置

linux

tar -zxvf linux_arm64_server.tar.gz
./nps install

windows

nps.exe install

配置文件

[root@charles socks]# cd conf/
[root@charles conf]# ll
total 12
-rw-r--r-- 1 1001 116    0 Oct  6  2020 clients.json
-rw-r--r-- 1 1001 116    0 Oct  6  2020 hosts.json
-rwxr-xr-x 1 1001 116 1926 Oct  6  2020 nps.conf
-rw-r--r-- 1 1001 116 1679 Oct  6  2020 server.key
-rw-r--r-- 1 1001 116 1346 Oct  6  2020 server.pem
-rw-r--r-- 1 1001 116    0 Oct  6  2020 tasks.json
[root@charles conf]# vim nps.conf
appname = nps
#Boot mode(dev|pro)
runmode = devhttp_proxy_ip=0.0.0.0  (官方下载下来没有此项)
http_proxy_port=80     # 域名代理http代理监听端口
https_proxy_port=443   # 域名代理https代理监听端口(一般会修改这两个端口,避免端口冲突)
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        # 客户端与服务端连接方式kcp或tcp
bridge_port=8024   # 服务端客户端通信端口,也就是说客户端通过访问服务端的这个端口可以进行连接
bridge_ip=0.0.0.0# Public password, which clients can use to connect to the server
public_vkey=123        # 客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式#Traffic data persistence interval(minute)
#Ignorance means no persistence
#flow_store_interval=1log_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  # 服务端IP,使用p2p模式必填
#p2p_port=6000     # p2p模式开启的udp端口#web
web_host=a.o.com
web_username=admin # web界面管理账号
web_password=123   # web界面管理密码
web_port = 8080        # web管理端口,通过访问该端口可以访问NPS后台
web_ip=0.0.0.0
web_base_url=      # web管理主路径,用于将web管理置于代理子路径后面
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 =1234567812345678   # 获取服务端authKey时的aes加密密钥,16位#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      # debug pprof 服务端IP
#pprof_port=9999       # debug pprof 端口#client disconnect timeout
disconnect_timeout=60  # 客户端连接超时,单位 5s,默认值 60,即 300s = 5mins

注意:在上面的配置文件中,我们主要是要注意以下方面:

①:一般会修改域名代理的端口,避免端口冲突

②:NPS的web页面默认端口是8080,默认用户名密码是admin/123

③:NPS的服务端和客户端进行连接的默认端口是8024,这个端口可以进行修改,修改之后,在连接时注意使用修改后的端口

④:NPS服务端开启的端口(也就是我们需要访问的VPS的端口)不在配置文件中,需要我们web界面中进行配置

2.3 客户端

tar -zxvf linux_amd64_client_nps.tar.gz

2.3 客户端连接方式

2.3.1 客户端连接方式

方法一:使用vkey进行连接

Windows:npc.exe -server=ip:port -vkey=服务端生成的key
Linux:./npc -server=ip:port -vkey=服务端生成的key

方法二:使用配置文件进行连接

windows:   npc.exe -config=npc配置文件路径
linux:     ./npc -config=npc配置文件路径

2.3.2 配置文件

cd conf
vim npc.conf
[common]
server_addr=127.0.0.1:8024
conn_type=tcp
vkey=123
auto_reconnection=true
max_conn=1000
flow_limit=1000
rate_limit=1000
basic_username=11
basic_password=3
web_username=user
web_password=1234
crypt=true
compress=true
#pprof_addr=0.0.0.0:9999
disconnect_timeout=60[health_check_test1]
health_check_timeout=1
health_check_max_failed=3
health_check_interval=1
health_http_url=/
health_check_type=http
health_check_target=127.0.0.1:8083,127.0.0.1:8082[health_check_test2]
health_check_timeout=1
health_check_max_failed=3
health_check_interval=1
health_check_type=tcp
health_check_target=127.0.0.1:8083,127.0.0.1:8082[web]
host=c.o.com
target_addr=127.0.0.1:8083,127.0.0.1:8082[tcp]
mode=tcp
target_addr=127.0.0.1:8080
server_port=10000[socks5]
mode=socks5
server_port=19009
multi_account=multi_account.conf[file]
mode=file
server_port=19008
local_path=/Users/liuhe/Downloads
strip_pre=/web/[http]
mode=httpProxy
server_port=19004[udp]
mode=udp
server_port=12253
target_addr=114.114.114.114:53[ssh_secret]
mode=secret
password=ssh2
target_addr=123.206.77.88:22[ssh_p2p]
mode=p2p
password=ssh3[secret_ssh]
local_port=2001
password=ssh2[p2p_ssh]
local_port=2002
password=ssh3

注意:NPS的客户端启动有两种启动方式,一种是不需要配置文件,直接输入相关命令即可启动,另一种是使用配置文件启动NPS客户端。如果需要使用配置文件来启动NPS客户端,那么需要配置如下内容(其余内容可以忽略)。

server_addr   #服务端ip/域名:port
conn_type     #与服务端通信模式(tp或kcp)
vkey          #服务端配置文件中的密钥

首先server_addr*是需要填写NPS服务端的IP和端口,*conn_type选择合适的类型(一般选择TCP),vkey的值设置为服务端配置文件的密钥。这样服务端和客户端就可以进行连接了。

3 使用

3.1 服务端

3.1.1 修改配置

避免端口冲突

vim ./conf/nps.conf
http_proxy_port=8000
https_proxy_port=4430

重载配置文件

./nps reload

3.1.2 启动/关闭/重启服务端

./nps start

停止与重启

./nps stop
./nps restart

3.1.3 访问

服务端配置文件的web部分客户查看用户名和密码,也可以通过配置文件分配一个域名

默认用户名:admin

默认密码:123

http://121.**.**.124:8080/

3.1.4 新建客户端

这块新建的客户端主要是要使用生成的唯一验证密钥,通过这个唯一验证密钥才能将NPS的服务端和客户端连接起来,因此至少需要添加一个客户端。

3.1.5 添加SOCKS代理

3.2 客户端

3.2.1 无配置文件

Windows:npc.exe -server=ip:port -vkey=服务端生成的key
Linux:./npc -server=ip:port -vkey=服务端生成的key

linux测试

./npc -server=121.**.**.124:8024 -vkey=o86e5rilpj9cre62

客户端连接成功

还有怎么使用

3.2.2 有配置文件

此模式使用nps的公钥或者客户端私钥验证,各种配置在客户端完成,同时服务端web也可以进行管理

修改配置文件(客户端:内网主机)

vim ./conf/npc.conf
[common]
server_addr=121.**.**.124:8024 # vps ip:port
conn_type=tcp  # 连接类型
vkey=123       # 设置key

执行下列命令

格式

windows:   npc.exe -config=npc配置文件路径
linux:     ./npc -config=npc配置文件路径

linux测试

./npc -config=./conf/npc.conf

连接成功,后面还有什么代理访问

4 nps代理ssh服务

4.1 服务端创建TCP隧道

4.3 启动客户端连接服务端

./npc -server=ip:port -vkey=服务端生成的key
./npc -server=121.**.**.124:8024 -vkey=o86e5rilpj9cre62

4.4 任意一台linux主机访问

ssh root@121.**.**.124 -p 5566

隐藏通信隧道技术:内网穿透工具 nps相关推荐

  1. 内网穿透工具NPS安装使用

    摘要:在内网部署的 gitlab 同事在出差的时候,导致无法使用,继而重新回到以前使用的 马云gitee 上面.这里记录一下通过 nps 将gitlab 映射到公网,使其可以直接访问. 相关文章 内网 ...

  2. 内网穿透工具nps使用教程 - 来自内部交流群

    内网穿透工具nps使用教程.docx 内网穿透工具nps使用教程 感谢 感谢开源软件开发者,github链接https://github.com/cnlh/nps/ 感兴趣的去star下吧~ 视频教程 ...

  3. 内网穿透工具-NPS使用实战

    前言 nps是什么?nps是一款轻量级.高性能.功能强大的内网穿透代理服务器.目前支持tcp.udp流量转发,可支持任何tcp.udp上层协议,此外还支持内网http代理.内网socks5代理.p2p ...

  4. 内网穿透工具-NPS

    文章目录 官网概述 NPS内网穿透配置 1.原理图 2.服务器端配置 2.1 配置server端

  5. 内网穿透工具nps和frp

    nps https://github.com/cnlh/nps 免费,nps 的优势在于有一套官方提供的web管理端. service端在云上搭建. ip:8080 登陆service,账号:admi ...

  6. ipv6 访问内网_【内网渗透】—— 隐藏通信隧道技术之网络层隧道技术

    hidden:是否完全隐藏控制面板,还有很多设置参数,比如也可以设置显示面板,然后设置宽高WIDTH="整数" 和 HIGH="整数". 1. 隐藏通信隧道基础 ...

  7. 内网安全 隐藏通信隧道技术——应用层.(遨游于 内网任何主机)

    隐藏通信隧道技术. 隐藏通信隧道就是一种 绕过端口屏蔽的通信方式.防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信.当被封装的数据包到达目的地时,将数据包 ...

  8. 内网安全 隐藏通信隧道技术——传输层.(遨游于 内网任何主机)

    隐藏通信隧道技术. 隐藏通信隧道就是一种 绕过端口屏蔽的通信方式.防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信.当被封装的数据包到达目的地时,将数据包 ...

  9. 第三章 隐藏通信隧道技术

    第三章 隐藏通信隧道技术 3.1 隐藏通信隧道基础知识 3.1.1 隐藏通信隧道概述 什么是隧道? 在实际的网络中,通常会通过各种边界设备.软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异 ...

  10. DAY43(DAY44拓展):隐藏通信隧道技术的概述与使用

    DAY43(DAY44拓展):隐藏通信隧道技术的概述与使用 OSI 七层模型 物链网传会表应 常用的隧道技术: (1)网络层:IPv6隧道.ICMP隧道.GRE隧道 (2)传输层:TCP隧道.UDP隧 ...

最新文章

  1. [ASP.NET4之旅]Circular file references are not allowed
  2. [C# 网络编程系列]专题十:实现简单的邮件收发器
  3. Interviews(内连接,左外连接,分组、聚合)
  4. Python学习 Day 3 字符串 编码 list tuple 循环 dict set
  5. VsFTP出现500 OOPS: cannot change directory的解决办法
  6. c语言英文星期几,输入字母,判断星期几,求大神指点
  7. JavaScript之 函数
  8. oracle 日期改字符格式_oracle 日期转换格式
  9. JavaScript 框架库 - jQuery
  10. java基础----java调用oracle存储过程(转)
  11. linux ac97声卡驱动下载,《声卡驱动》AC97声卡/创新/主板集成
  12. 酒店管理系统--C语言版
  13. Python自动化填写问卷星问卷
  14. 飞书文档如何添加代码块 ```
  15. JMeter元件详解之逻辑控制器
  16. 计算机二级WPS 选择题(模拟和解析三)
  17. 小米应用商店错误日志查看教程(含工具下载)
  18. 团体程序设计天梯赛-练习集 L1-039 古风排版
  19. 项目经理三大法宝之一挣值管理详解
  20. mysql商品规格设计_[电商]我的商品规格设计思路

热门文章

  1. 【Linux】rpm包是什么
  2. 去了一趟少林寺 竟然发现...
  3. MySQL什么情况会导致索引失效?
  4. 台式计算机2017排行分析,台式电脑CPU性能排行 桌面CPU天梯图2017年9月最新版 (全文)...
  5. 软考- 高级信息系统项目管理师,第一章 信息化与信息系统
  6. 小红花代表什么_《送你一朵小红花》:细品后才知道,结尾处的平行世界代表着什么...
  7. 以太网误码率测试软件,最完美的PAM4标准通信数据测试方案大全
  8. 我的职业梦计算机软件,我的职业梦作文1000字
  9. python写法教程_Python的表达式写法
  10. c#日期时间的操作的函数总结