看完本文会得到什么
一般来说,有内网穿透需求的小伙伴无非是如下几类需求:
针对以上第一类需求给出如下选择:
家用 nas 请出门左转搜索 群晖,这里是群晖京东自营旗舰店,不要自建内网穿越,毫无意义。
针对第二类需求,显然你需要的是 windows 客户端
本文主要介绍的如何启动 Linux 客户端和 nps 服务端建立通讯连接的。
首先推荐查看官方文档关于客户端这一章节,直达链接nps 安装,抄作业的跟着我走也行。
Windows
强烈推荐 Windows 客户端查看官方文档,Windows 的安装超级简单,就下载一个 exe 文件就可以了,客户端的文件配置跟 Linux 一样本文后面会讲解。
本文以 Ubuntu 为范例,其他 Linux 版本如果有操作不顺的,请联系我。
假设你拥有一台 Ubuntu 的机器(不管是云服务器还是你自己的电脑装有 Ubuntu 都可以)
第一步通过 ssh 登录进入
$ ssh [email protected]
shouyicheng
是我 Ubuntu 机器的用户名,而 5.6.8.9
是我 Ubuntu 机器的 IP,注意这个 IP 可以是你云服务器的公网 IP 或者你家里的 Ubuntu 电脑的内网 IP,只要你当前使用的电脑能登录进去就可以,但是如果你就是直接在家真机实体操作你的 Ubuntu,可以省去 ssh 登录这一步
首先更新一下仓库
$ apt update #如果你不是 root 用户,请执行 sudo apt update
然后安装如下几个非常重要的工具
$ apt install -y curl wget telnet # 如果你不是 root 用户,请执行 sudo apt apt install -y curl wget telnet
然后随便进入一个文件夹,推荐进入当前用户的文件夹目录
$ cd /home/shouyicheng/ # shouyicheng 是我的 ssh 登录用户名,请你换成你的
紧接着下载 Linux 对应的客户端,我这里挑选的是 linux_amd64_client.tar.gz
,因为我自己的 Ubuntu 实体机是 x86 架构的,如果你的 Linux 机器是运行在 arm 架构上的,请用如下方式下载对应的版本。
$ wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz # 或者也可以用 curl 进行下载 curl https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz --output linux_amd64_client.tar.gz
下载之后,进行解压
$ tar zxvf linux_amd64_client.tar.gz
安装好了之后,会在当前目录创建一个默认的 conf
文件夹,我们要去找到配置文件进行修改
$ cd ./conf
进入文件夹之后,查看当前文件夹包含的内容
$ ls # 会显示 2 个文件 # multi_account.conf npc.conf
非高端玩家不需要在乎 multi_account.conf
,我们查看 npc.conf
$ cat 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 target_addr=123.206.77.88:22
至此,客户端的安装已经完成,现在要回到服务端去创建一个客户端。
打开你的服务端管理的界面:
http://1.2.3.4:8080
(请忽略我自己的配置,因为我已经创建好了一个客户端)
你需要做的是点击 -> 新建
这里按照如下信息填写:
其余均可留空,它默认会帮你生成。
创建完成之后你会看到跟我界面类似的列表
然后回到你的客户端 Linux,去修改 npc.conf
。
找到刚才那么一长串的配置文件,你只需要修改的只有如下几个参数
server_addr=127.0.0.1:8024 vkey=123
这个 server_addr 的值就是你在 nps 从零启动 - 1. 服务端 配置的服务器的地址,注意这里需要加上 nps 服务端的桥接转发端口号 bridge_port
,假设你没有修改过这个参数的话,并且你的服务端 IP 地址是 1.2.3.4,在客户端你的 server_addr 就应该是 1.2.3.4:8024
而这个 vkey 就是你在服务端管理界面上刚才创建的客户端的 唯一验证密钥
,假设你的唯一验证密钥是 abcdefghihjklmn
,那么你只需要修改成如下内容即可,把除了以下几行之外的所有配置,全都删除,我们刚刚开始学会使用某一项工具的时候,先不要被过多的参数打扰,只要是暂时用不上的全都删除。
server_addr=1.2.3.4:8024 vkey=abcdefghihjklmn conn_type=tcp auto_reconnection=true
然后启动客户端向服务端发出建立连接请求,测试一下网络连通性和密钥是否匹配:
$ ./npc
你会看到如下内容:
(忽略我的服务器地址就是我当前的域名,你在这里看见的就是你自己的服务端的 IP 地址,例如 1.2.3.4:8024
2022/09/25 07:57:11.986 [I] [npc.go:231] the version of client is 0.26.10, the core version of client is 0.26.0 2022/09/25 07:57:11.987 [I] [control.go:97] Loading configuration file conf/npc.conf successfully 2022/09/25 07:57:12.191 [N] [control.go:174] web access login username:user password:abcdefghihjklmn 2022/09/25 07:57:12.337 [I] [client.go:72] Successful connection with server 1.2.3.4:8024
恭喜你,已经实现了把你当前的客户端暴露在外网,可以让外网进行访问了。但是目前你本地机器上什么好玩的服务都没有……所以 ->
桥豆麻袋
这里还需要额外的操作才能让你的机器开机就自动连接到服务端,这样省略你每次开机要手动执行 npc start 的步骤
还是在当前文件夹下执行:
$ sudo ./npc install -config=/root/npc/conf/npc.conf # 这里必须是绝对路径并且是指定到具体的 npc.conf 文件,不是指定 conf 文件夹,一定要看清楚
然后启动并且设置它开机自动启动:
$ sudo npc start
为了确保正确运行,可以执行如下来查看状态
$ npc status
如果遇到意外情况即使输入
shell$ sudo npc stop $ sudo npc restart $ sudp npc uninstall
出现意外情况
2022/09/27 05:11:56.077 [E] [npc.go:139] Valid actions: ["start" "stop" "restart" "install" "uninstall"] Failed to stop nps内网穿透客户端: exit status 5 [email protected]:~$ sudo npc uninstall 2022/09/27 05:12:03.368 [E] [npc.go:160] Valid actions: ["start" "stop" "restart" "install" "uninstall"] Failed to uninstall nps内网穿透客户端: exit status 1 [email protected]:~$ sudo npc restart 2022/09/27 05:12:13.159 [E] [npc.go:139] Valid actions: ["start" "stop" "restart" "install" "uninstall"] Failed to restart nps内网穿透客户端: exit status 5
我们可以采取强制措施删除它的可执行文件即可,再重新执行安装和启动的步骤。
$ sudo rm -f /usr/bin/npc $ sudo rm -f /usr/bin/npc-update
紧接着我们就该考虑,如何把自己电脑上可以共享的服务和资源让别人也享受一下,我能想到的最好的就是博客了,正如你现在所看见的博客一样,它就是我通过 nps 技术将我自己家里的服务器建立的博客分享出来的,接下来我就要来手把手还原我是如何建立当前这个博客小站点的。😋