NPS内网穿透搭建(使用docker实现)、详细版

本文档详述了如何使用Docker在阿里云服务器上部署NPS服务端,实现代理内网服务器并配置HTTPS访问。同时,介绍了在内网服务器上配置NPC客户端,通过NPS实现内网穿透。步骤包括安装Docker、拉取NPS及NPC镜像、配置服务端与客户端的NPS.conf和npc.conf文件,以及启动Docker容器。文章强调了配置文件中的关键参数,并给出了无配置文件时的简便启动方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我手上是有一台阿里云服务器,一台内网服务器,想给内网服务器做内网穿透,并使用域名https访问到

搭建的详细步骤官方文档已经很详细了:nps官方文档

docker安装nps文档:server client

这里我记录一下自己的安装过程(使用docker实现)

1、安装docker

首先要有docker,没有的话yum install -y docker

2、服务端(有公网ip的主机)安装nps

2.1 docker拉取镜像:

命令:docker pull ffdfgdfg/nps

查看一下:

image-20220308170617830

2.2 配置conf文件(也可以不配置用默认的,服务端推荐配置)

需要下载一下官方的conf文件然后自己配置成自己的,这里主要是为了把docker里运行的nps的配置文件目录挂载到docker外面,方便修改,如果可以进入容器中修改配置文件的话可以直接启动,不用下配置文件。

GitHub慢的话可以在gitee同步GitHub的镜像里面下:nps镜像站

下载后的配置文件有这些:

image-20220308155216648

修改其中的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处理

我这里直接采用方式二

appname = nps
runmode = dev

http_proxy_ip=0.0.0.0
http_proxy_port=20000
https_proxy_port=20001
https_just_proxy=true

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

bridge_type=tcp
bridge_port=20002
bridge_ip=0.0.0.0

public_vkey=123

log_level=7

web_host=a.o.com
web_username=admin
web_password=admin
web_port = 20003
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
auth_crypt_key =1234567887654321
allow_user_login=false
allow_user_register=false
allow_user_change_username=false
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
http_cache=false
http_cache_length=100
http_add_origin_header=false

配置文件(/etc/nps/conf/nps.conf)的含义:

名称含义
web_portweb管理端口
web_passwordweb界面管理密码
web_usernameweb界面管理账号
web_base_urlweb管理主路径,用于将web管理置于代理子路径后面
bridge_port服务端客户端通信端口
https_proxy_port域名代理https代理监听端口
http_proxy_port域名代理http代理监听端口
auth_keyweb api密钥
bridge_type客户端与服务端连接方式kcp或tcp
public_vkey客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式
ip_limit是否限制ip访问,true或false或忽略
flow_store_interval服务端流量数据持久化间隔,单位分钟,忽略表示不持久化
log_level日志输出级别
auth_crypt_key获取服务端authKey时的aes加密密钥,16位
p2p_ip服务端Ip,使用p2p模式必填
p2p_portp2p模式开启的udp端口
pprof_ipdebug pprof 服务端ip
pprof_portdebug pprof 端口
disconnect_timeout客户端连接超时,单位 5s,默认值 60,即 300s = 5mins

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-20220308163016317

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-20220308154738451

3.2 配置配置文件(不配置配置文件更方便,客户端推荐不配置)

[common]
server_addr=1.1.1.1:8024
conn_type=tcp
vkey=123
username=111
password=222
compress=true
crypt=true
rate_limit=10000
flow_limit=100
remark=test
max_conn=10
#pprof_addr=0.0.0.0:9999

参数解释:

含义
server_addr服务端ip/域名:port
conn_type与服务端通信模式(tcp或kcp)
vkey服务端配置文件中的密钥(非web)
usernamesocks5或http(s)密码保护用户名(可忽略)
passwordsocks5或http(s)密码保护密码(可忽略)
compress是否压缩传输(true或false或忽略)
crypt是否加密传输(true或false或忽略)
rate_limit速度限制,可忽略
flow_limit流量限制,可忽略
remark客户端备注,可忽略
max_conn最大连接数,可忽略
pprof_addrdebug pprof ip:port

我这里实现想通过域名+https到访问内网主机的8080端口,所以我的配置文件是这样的:

[common]
server_addr=域名:20002
conn_type=https
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=域名
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-20220311220424214

拿到客户端命令:

image-20220311220601536

然后就可以在客户端上用docker创建一个实例:

docker run -d --name npc --net=host ffdfgdfg/npc -server=ip地址:20002 -vkey=z8lduhyk0g0cashx -type=tcp

接下来你就可以看到你的客户端上线了:

image-20220311220803837

4、配置内网穿透

这里有几个点需要注意:

  • 域名解析不能配置端口号,且只能解析到你配置好的http端口和https端口
  • 只要在内网主机上做好了https,可以直接用TCP,很方便

像这样:

image-20220311221634700

然后就可以直接访问了!!!!!!!!

image-20220311221846104

### 回答1: 腿骨CT数据是指通过计算机断层扫描(CT)技术所得到的腿部骨骼的图像数据。DICOM(Digital Imaging and Communications in Medicine)是医学图像相关信息的数字化存储传输的标准格式。 腿骨CT数据使用DICOM格式存储有以下几个优点。首先,DICOM格式是医学图像领域中最常用的标准格式,它允许不同设备软件之间的交互性兼容性。这意味着无论使用哪种CT扫描设备,生成的图像数据都可以以相同的DICOM格式进行存储传输。 其次,DICOM格式除了存储图像本身外,还包含了与图像相关的患者信息、扫描参数、设备信息等,这些附加信息对医生研究人员来说都非常重要。通过DICOM格式,医生可以获得完整的患者信息,从而更好地进行病情分析诊断。 此外,DICOM格式还支持压缩算法,可以将图像数据以较小的文件大小进行存储传输,节省存储空间传输时间。 对于腿骨CT数据,通过DICOM格式的存储传输,医生可以方便地进行图像重建、分析处理。通过专业的医学图像处理软件,医生可以进行骨骼分割、三维重建、病灶检测等操作,从而更好地了解患者的骨骼结构病变情况。 总之,腿骨CT数据的DICOM格式具有广泛的应用价值,能够为医生提供更全面、准确的诊断信息,有助于改善临床诊疗效果。 ### 回答2: 腿骨CT数据是指通过计算机断层扫描(CT)技术获取的关于腿骨的图像数据。CT扫描是一种非侵入性的医学影像技术,可以生成横断面图像,通过观察这些图像,医生可以对患者的腿骨进行诊断评估。 DICOM(数字影像与通信在医学中)是一种医学影像的标准格式,在医疗领域被广泛使用。其定义了医学图像相关信息的存储、传输共享的规范,保证了医学图像的互操作性数据的一致性。 腿骨CT数据的DICOM格式将腿骨的图像数据以及与之相关的患者信息、扫描参数、时间戳等元数据进行组织封装。通过使用DICOM格式,医生其他医疗专业人员可以方便地查看、分析处理腿骨CT图像数据,以进行疾病诊断、手术规划、治疗方案制定等。 腿骨CT数据的DICOM格式的重要性在于它提供了一个标准通用的媒介,使不同的医学设备之间可以互相交流共享数据。无论是用于特定的设备、软件还是在不同的医疗机构之间传输数据,DICOM格式能够确保数据的一致性完整性。 总之,腿骨CT数据以DICOM格式存储,这样做的目的是为了方便医生医疗专业人员对腿骨的诊断治疗进行准确、高效的评估,以提高患者治疗质量医疗资源的利用率。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值