微信扫一扫 分享朋友圈

已有 211 人浏览分享

开启左侧

使用docker实现NPS内网穿透搭建详细教程

[复制链接]
211 0
1、安装docker
首先要有docker,没有的话yum install -y docker
2、服务端(有公网ip的主机)安装nps
2.1 docker拉取镜像:
命令:docker pull ffdfgdfg/nps
查看一下:
image.png
2.2 配置conf文件(也可以不配置用默认的,服务端推荐配置)
需要下载一下官方的conf文件然后自己配置成自己的,这里主要是为了把docker里运行的nps的配置文件目录挂载到docker外面,方便修改,如果可以进入容器中修改配置文件的话可以直接启动,不用下配置文件。
GitHub慢的话可以在gitee同步GitHub的镜像里面下:nps镜像站
下载后的配置文件有这些:

image.png
修改其中的nps.conf,主要是一些端口号,我这里是想要通过域名+https访问到,这里官方提供了两种方式:

方式一: 类似于nginx实现https的处理
在配置文件中将https_proxy_port设置为443或者其他你想配置的端口,将https_just_proxy设置为false,nps 重启后,在web管理界面,域名新增或修改界面中修改域名证书和密钥。
此外: 可以在nps.conf中设置一个默认的https配置,当遇到未在web中设置https证书的域名解析时,将自动使用默认证书,另还有一种情况就是对于某些请求的clienthello不携带sni扩展信息,nps也将自动使用默认证书

方式二: 在内网对应服务器上设置https
在nps.conf中将https_just_proxy设置为true,并且打开https_proxy_port端口,然后nps将直接转发https请求到内网服务器上,由内网服务器进行https处理
我这里直接采用方式二

  1. appname = nps
  2. runmode = dev

  3. http_proxy_ip=0.0.0.0
  4. http_proxy_port=20000
  5. https_proxy_port=20001
  6. https_just_proxy=true

  7. https_default_cert_file=conf/server.pem
  8. https_default_key_file=conf/server.key

  9. bridge_type=tcp
  10. bridge_port=20002
  11. bridge_ip=0.0.0.0

  12. public_vkey=123

  13. log_level=7

  14. web_host=a.o.com
  15. web_username=admin
  16. web_password=admin
  17. web_port = 20003
  18. web_ip=0.0.0.0
  19. web_base_url=
  20. web_open_ssl=false
  21. web_cert_file=conf/server.pem
  22. web_key_file=conf/server.key
  23. auth_crypt_key =1234567887654321
  24. allow_user_login=false
  25. allow_user_register=false
  26. allow_user_change_username=false
  27. allow_flow_limit=false
  28. allow_rate_limit=false
  29. allow_tunnel_num_limit=false
  30. allow_local_proxy=false
  31. allow_connection_num_limit=false
  32. allow_multi_ip=false
  33. system_info_display=false
  34. http_cache=false
  35. http_cache_length=100
  36. http_add_origin_header=false
复制代码
配置文件(/etc/nps/conf/nps.conf)的含义:
image.png
2.3 docker跑一个nps实例(有配置文件)
    自己挂载了外部配置文件:
    docker run -d --name nps --net=host -v <本机conf目录>:/conf ffdfgdfg/nps
    参数解释一下:
    -d后台运行,–name给当前镜像起一个名字 -v挂载目录(将docker外的目录映射到docker内的目录,这样就读外面的了)
    我是在/root/nps/conf这个目录下放了配置文件,所以我的命令就是:
    docker run -d -p 20000-20010:20000-20010 -v /root/nps/conf:/conf --name=nps ffdfgdfg/nps

    没有挂载外部配置文件(用容器内的)

    官方:
    docker run -d --name nps --net=host ffdfgdfg/nps

    我的命令是:
    docker run --net=host --name nps-server -d ffdfgdfg/nps

    在阿里的防火墙记得也要打开指定端口
然后就可以访问到web界面了(配置了配置文件的):
image.png

2.4 docker跑一个nps实例(无配置文件)
用默认配置的话就异常方便了,直接命令:
docker run --net=host --name nps_server -d ffdfgdfg/nps

然后就可以访问页面了(默认端口8024)
3、客户端(内网ip主机)安装npc
3.1 docker拉取镜像
注意这里拉取的是npc,不是nps
docker pull ffdfgdfg/npc
查看一下:

image.png
3.2 配置配置文件(不配置配置文件更方便,客户端推荐不配置)
  1. [common]
  2. server_addr=1.1.1.1:8024
  3. conn_type=tcp
  4. vkey=123
  5. username=111
  6. password=222
  7. compress=true
  8. crypt=true
  9. rate_limit=10000
  10. flow_limit=100
  11. remark=test
  12. max_conn=10
  13. #pprof_addr=0.0.0.0:9999
复制代码
image.png
我这里实现想通过域名+https到访问内网主机的8080端口,所以我的配置文件是这样的:
  1. [common]
  2. server_addr=域名:20002
  3. conn_type=https
  4. vkey=123
  5. auto_reconnection=true
  6. max_conn=1000
  7. flow_limit=1000
  8. rate_limit=1000
  9. basic_username=11
  10. basic_password=3
  11. web_username=user
  12. web_password=1234
  13. crypt=true
  14. compress=true
  15. #pprof_addr=0.0.0.0:9999
  16. disconnect_timeout=60

  17. [health_check_test1]
  18. health_check_timeout=1
  19. health_check_max_failed=3
  20. health_check_interval=1
  21. health_http_url=/
  22. health_check_type=http
  23. health_check_target=127.0.0.1:8083,127.0.0.1:8082

  24. [health_check_test2]
  25. health_check_timeout=1
  26. health_check_max_failed=3
  27. health_check_interval=1
  28. health_check_type=tcp
  29. health_check_target=127.0.0.1:8083,127.0.0.1:8082

  30. [web]
  31. host=域名
  32. target_addr=127.0.0.1:8080

复制代码
3.3 docker启动一个镜像实例(有配置文件)
同样在外面创建一个文件映射的地址
命令:
docker run -d -p 18080-18090:8080-8090 -v /root/npc/conf:/conf --name=npc ffdfgdfg/npc

3.4 docker启动一个镜像实例(无配置文件,推荐,异常方便)
首先我们要在我们的网页上配置一下(可以不配置直接新增):

image.png
拿到客户端命令:
image.png
然后就可以在客户端上用docker创建一个实例:
    docker run -d --name npc --net=host ffdfgdfg/npc -server=ip地址:20002 -vkey=z8lduhyk0g0cashx -type=tcp

接下来你就可以看到你的客户端上线了:
image.png
4、配置内网穿透
这里有几个点需要注意:
    域名解析不能配置端口号,且只能解析到你配置好的http端口和https端口
    只要在内网主机上做好了https,可以直接用TCP,很方便
像这样:

image.png
image.png


免责声明:
1,海欣资源网所发布的资源由网友上传和分享,不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
2,海欣资源网的资源来源于网友分享,仅限用于学习交流和测试研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3,海欣资源网所发布的资源由网友上传和分享,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
4,如果您喜欢,请支持正版,购买正版,得到更好的正版服务,如有侵权,请联系我们删除并予以真诚的道歉,联系方式邮箱 haixinst@qq.com
海欣资源-企业信息化分享平台。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

41

主题
热度排行
回复排行
最新贴子

Archiver|手机版|海欣资源 ( 湘ICP备2021008090号-1 )|网站地图

GMT+8, 2022-11-27 23:33 , Gzip On, Redis On.

免责声明:本站所发布的资源和文章均来自网络,仅限用于学习交流和测试研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 如果您喜欢,请支持正版,购买正版,得到更好的正版服务,如有侵权,请联系我们删除并予以真诚的道歉。