内网穿透工具nps使用

内网穿透工具有很多,相比frp,nps页面更友好,本文介绍nps的安装和简单使用。

准备工作

  • 一台有公网IP的服务器,假设公网ip是1.1.1.1,系统为CentOS。
  • 一台可连外网的内网服务器,假设内网IP是192.168.0.127,系统为CentOS。
  • 本机,假设是一台Mac。

服务端

请从github上下载最新版本。当前最新版本v0.26.10

mac下载darwin开头的版本

在公网服务器上

下载

1
2
3
4
5
6
cd /usr/local/src/
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz
mkidr nps
mv linux_amd64_server.tar.gz nps/
cd nps
tar -zxvf linux_amd64_server.tar.gz

安装

执行安装命令

1
sudo ./nps install

对于windows,管理员身份运行cmd,进入安装目录 nps.exe install

安装后windows配置文件位于 C:\Program Files\nps,linux和darwin位于/etc/nps

修改配置

1
vim /etc/nps/conf/nps.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
appname = nps
#Boot mode(dev|pro)
runmode = pro(修改)

#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0
http_proxy_port=
https_proxy_port=
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=test(修改)

#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=1.1.1.1(公网IP)
web_username=admin(建议修改)
web_password=admin123456(建议修改)
web_port = (建议修改)
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 =1234567812345678(需修改)

#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

根据实际情况修改,通常需要修改的选项已在上面标注。

运行

1
nps start

对于windows,管理员身份运行cmd,进入程序目录 nps.exe start

停止和重启可用,stoprestart

访问服务端并添加客户端

防火墙或云服务器开放外网端口80898024(根据安全性适当调整开放力度)

访问地址 1.1.1.1:8089,填写账号密码adminadmin123456

点击左侧客户端,新增,填写对应信息(唯一验证密钥填写test)后确定,即可添加客户端,添加成功后如下,点击左侧➕,展开可查看客户端命令,复制客户端命令:

image-20210519115115580

客户端

在内网服务器上下载安装最新客户端

1
2
3
4
5
6
cd /usr/local/src/
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz
mkidr npc
mv linux_amd64_client.tar.gz npc/
cd npc
tar -zxvf linux_amd64_client.tar.gz

运行上面复制好的客户端命令:

1
./npc -server=1.1.1.1:8024 -vkey=test -type=tcp

使用

通过私密代理从本机访问连接内网机器SSH

私密代理相比tcp隧道代理优点是更安全且无需占用多余端口,缺点是本机需要安装客户端。

  • 本机安装客户端,安装步骤同上
  • 在web管理页面,点击左侧私密代理,点击新增。填写客户端id,目标ip填写192.168.0.127:22,唯一标识密钥填写test123
  • 添加成功后在私密代理列表页,点击ID前的➕,展开,复制访问端命令
  • 在本机上粘贴并执行访问端命令./npc -server=1.1.1.1:8024 -vkey=test -type=tcp -password=test123 -local_type=secret
  • 本机上执行ssh -p 2000 root@127.0.0.1,如需指定本地端口可加参数-local_port=xx,默认为2000

通过TCP隧道代理SSH

通过外网ip代理8027端口到内网。需要在防火墙或云服务器开放8027端口。

  • 在web管理页面,点击左侧TCP隧道,点击新增,服务端端口填写8027,目标ip填写192.168.0.127:22
  • 本机上执行 ssh -p 8027 root@1.1.1.1

代理HTTP

访问外网8028端口,代理到内网80端口。需要在防火墙或云服务器开放8028端口。

内网穿透工具nps使用

https://blog.yhan219.com/nps/

作者

yhan219

发布于

2021-05-19

更新于

2021-05-19

许可协议