对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器是一个问题。通常解决方案就是用内网穿透工具将内网的服务穿透到公网中,便于远程管理和在外部访问。内网穿透工具之前已经介绍了不少了,比如 Frp、lanproxy、Holer 等,现在再介绍个带 Web 面板的穿透工具 nps,之前叫 easyProxy,只是改名了而已,该工具是一款使用 go 语言编写的轻量级、功能强大的内网穿透服务器。支持 tcp、udp 流量转发,支持内网 http、socks5 代理,同时支持 snappy 压缩(节省带宽和流量)、站点保护、加密传输、多路复用、header 修改等,同时还支持 web 图形化管理。
Github 地址:https://github.com/cnlh/nps
通常内网穿透工具都有服务端和客户端,安装要求如下:
服务端:需要安装在一个有公网 IP 的服务器上,系统为 Linux/Windows/Mac 均可。
客户端:一般安装在一个内网的 VPS 服务器或 Windows/Mac 电脑上使用。
提示:编译安装主要讲的 Linux 系统,其它系统(Win/Mac,也包括 Linux)建议直接使用作者编译好的文件即可。
#Debian/Ubuntu系统
apt-get -y install golang
#创建目录并定义GOPATH环境变量指向该目录
mkdir ~/workspace
echo 'export GOPATH="$HOME/workspace"' >> ~/.bashrc
source ~/.bashrc
#CentOS/RHEL系统
yum -y install golang
#创建目录并定义GOPATH环境变量指向该目录。
mkdir ~/workspace
echo 'export GOPATH="$HOME/workspace"' >> ~/.bashrc
source ~/.bashrc
#Debian/Ubuntu系统
apt-get -y install git
#CentOS/RHEL系统
yum -y install git
go get github.com/cnlh/nps
编译服务端和客户端:
#进入指定目录
cd ~/workspace/src/github.com/cnlh/nps
#编译服务端
go build cmd/nps/nps.go
#编译客户端
go build cmd/npc/npc.go
编译好了后,就会在当前目录生成 npc 或 nps 二进制文件了,就可以直接拿来用了。编译的时候可能出现的问题解决方法:
#只拿一种常见的错误做例子,有时候可能会出现很多种这样的提示
lib/kcp/crypt.go:14:2: cannot find package "golang.org/x/crypto/pbkdf2" in any of:
/usr/lib/go-1.7/src/golang.org/x/crypto/pbkdf2 (from $GOROOT)
/root/workspace/src/golang.org/x/crypto/pbkdf2 (from $GOPATH)
#意思是缺少这种包,然后记住提示的地址,比如上面的golang.org/x/crypto/pbkdf2,有时候也会提示的github地址。
然后再使用命令 go get golang.org/x/crypto/pbkdf2 命令安装一下就行了。
除了自己编译外,作者也直接提供了编译好的文件给你使用,文件下载地址:点击进去,然后再根据自己的系统架构下载对应的最新版服务端和客户端。如果对于 Linux 服务器还是不知道怎么选择的,这里拿 Vultr、搬瓦工大多数 VPS 为例。先使用命令 getconf LONG_BIT 获取系统版本,32 位就选 386,64 就选 amd64,具体还是以实际情况为准。
这里博主使用的是 Vultr Linux x64 服务器,直接使用命令:
#记得复制前先将下面链接替换成当前最新版地址
cd ~
#下载并解压服务端
wget https://github.com/cnlh/nps/releases/download/v0.0.14/linux_amd64_server.tar.gz && tar zxvf linux_amd64_server.tar.gz
#编辑配置文件
cd nps
nano conf/nps.conf
#web管理端口
httpport
#web界面管理密码
password
#服务端客户端通信端口
bridePort
#ssl certFile绝对路径
pemPath
#ssl keyFile绝对路径
keyPath
#域名代理https代理监听端口
httpsProxyPort
#域名代理http代理监听端口
httpProxyPort
#web api免验证IP地址
authip
#客户端与服务端连接方式kcp或tcp
bridgeType
然后启动服务端:
./nps start
#重启/停止服务端
./nps stop|restart
然后打开地址 http://ip:8080 访问管理界面,具体端口以自己修改的为准,再使用密码登录进去,默认为 123。
#如果打不开Web界面,就需要开启防火墙,一般CentOS系统出现情况最多
#Centos 6系统
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
service iptables save
service iptables restart
#CentOS 7系统
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
对于有些服务器,比如阿里云,谷歌云等,还需要在服务器管理面板上开放 Web 端口才行。
1、Linux 系统
#比如下载的客户端文件在根目录,先进入根目录
cd ~
#启动客户端,比如服务端公网IP为1.1.1.1,服务端配置文件中tcpport为8284
./npc -server=1.1.1.1:8284 -vkey=客户端的密钥
2、Windows 系统
首先按住 Win+R,输入 cmd 进入命令窗口,然后使用命令:
#比如下载的客户端文件在D盘,先进入到D盘
cd /d d:
#启动客户端,比如服务端公网IP为1.1.1.1,服务端配置文件中tcpport为8284
npc.exe -server=1.1.1.1:8284 -vkey=客户端的密钥
至于 Mac 系统启动参考上面就行。
专业提供WordPress主题安装、深度汉化、加速优化等各类网站建设服务,详询在线客服!