之前听过nps是在内网碰到不出网的时候可以实现内网穿透,最近听师傅说可以docker部署nps然后利用socks5实现隐藏ip(也就是访问ip变成了我们vps从而实现隐藏ip),所以实际搭建了一下。一开始我把nps放到vps把上npc放在我的主机上,但是发现代理出去的ip和地址还是我自己的,不知道是哪里出了问题,最后问了几个师傅才明白其实真正实现socks转发的是npc,而nps只是用来启一个web管理端的,最后把nps、npc都放在vps上后成功实现功能完成隐藏ip
原理nps一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http、p2p等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等,并且带有功能强大的web管理端。
像nps、frp、ngork都是cs客户端服务端的代理工具,这类工具原理都是通过服务端生成相应的客户端,而生成的客户端才是需要真正走代理的服务器,可能说起来比较绕,用到这里来,其实nps就是用来搭建起web管理页面,并用来生成npc、赋予npc相应的隧道/代理功能,所以最终起socks作用的是npc,而nps只是个管理npc的服务端。
搭建这里搭建分三部分,docker部署nps、执行npc、本地代理配置。配置用到的环境
1.vps(阿里云centos7) 2.火狐插件FoxyProxy或Proxifier代理软件docker部署nps
这里我把可能用到的端口都放到了19000:19010,所以首先保证服务器的相应端口开放,如果有宝塔的话也要将端口放行。首先先拉取nps的镜像
docker pull ffdfgdfg/nps
在vps云服务器上做挂载目录(这个目录挂哪都行)
mkdir -p /mnt/sdc/nps/conf
从https://github.com/ehang-io/nps 把代码下载出来,把里面的conf文件夹目录里面的东西拷贝到上面的挂载目录里面(我这里有宝塔所以直接上传了,可以用xftp或者直接下载)
上传到服务器后,修改挂在目录里面的 nps.conf 文件,主要修改 http_proxy_port、 https_proxy_port、web_port 、web_username、web_password。
appname = nps #Boot mode(dev|pro) runmode = dev http_proxy_ip=0.0.0.0 (官方下载下来没有此项) http_proxy_port=19000 # 域名代理http代理监听端口 https_proxy_port=19001 # 域名代理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=19002 # 服务端客户端通信端口,也就是说客户端通过访问服务端的这个端口可以进行连接 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=1 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 # 服务端IP,使用p2p模式必填 #p2p_port=6000 # p2p模式开启的udp端口 #web web_host=a.o.com web_username=admin # web界面管理账号 web_password=123 # web界面管理密码 web_port = 19003 # 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服务,设置对外映射端口
docker run -d -p 19000-19010:19000-19010 -v /mnt/sdc/nps/conf:/conf –name=nps ffdfgdfg/nps
访问vpsip:19003进入web管理页面,使用上面设置的admin:admin登录
来到客户端点击新增,填一个备注,下面三个都选是即可
创建完成后为其添加一个socks隧道,模式就是socks,id是第一张图里的,端口我这里写19005,这个端口是后面主机上开启socks代理对应的端口
直接在https://github.com/ehang-io/nps/releases/tag/v0.26.10下载一个linux的客户端
也可以使用命令下载
wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_client.tar.gz tar -zxvf linux_amd64_client.tar.gz
解压出一个npc一个conf,这里客户端的这个conf可以不配置直接使用,不配置的使用命令在web管理端查看
在npc所在位置执行
这里我使用火狐插件Foxyproxy,也可以使用Proxifier或者其他的一些工具
放一张配置图,这里ip就填vps的ip,端口填刚刚nps添加socks隧道时候填的19005
最后执行效果
参考nps内网穿透,docker安装,保姆级教程,学不会找我



