建站,搞机记录,VPS

NPS内网穿透教程 群晖

群晖使用NPS内网穿透教程

环境需要

部署acme.sh,申请免费SSL证书 - ZM Blog (b-log.ga)

Nginx安装与配置 - ZM Blog (b-log.ga)

域名解析

为服务器添加域名解析,一个泛域名就够了,这里指所有二级域名都解析指向服务器

后面在nps服务端内配置各个服务需要的二级域名就可以了,这样dns解析省去重复配置

安装nps

下载服务端安装文件

wget https://github.com/yisier/nps/releases/download/v0.26.12.3/linux_amd64_server.tar.gz

解压安装文件

tar -zxvf linux_amd64_server.tar.gz

安装nps

./nps install

启动nps

nps start

停止和重启可用,stop和restart

  • 访问服务端ip:web服务端口(默认为8080)
  • 使用用户名和密码登陆(默认admin/123,正式使用一定要更改)

服务端配置

配置服务端文件nano /etc/nps/conf/nps.conf

#调整为非80端口,不占用后面nginx监听80端口
http_proxy_port=8020                                                                   
#不设置https端口,即关闭nps的https反代理,后面配合nginx实现https
https_proxy_port=                   
#修改后台管理web的登录信息以及端口
web_username=admin
web_password=ww354770
web_port = 8080

配置重载

nps reload
nps restart

登录后台管理web

新增一个客户端,没啥可选择的其实都可以默认

TCP协议代理

客户列表点击隧道-新增一个TCP连接,设置服务器映射的端口;目标(内网)的IP:端口,点击新增即可。

http协议代理

客户列表点击主机-新增一个http连接,设置主机(你的域名),模式默认或者http;目标写内网IP:端口,点击新增

因为前面域名解析使用的是泛域名解析,所以这里主机xx.example.com,xx是可以随意设置成你想要的二级域名

DNS均会解析到NPS服务端,再由服务端对应的域名前缀转发到对应内网端口。

服务端配置备份

tar czvf /etc/nps/conf.tar /etc/nps/conf/

服务器更换后可拷贝到新服务器nps同目录下生效

客户端配置

我是群晖做客户端直接使用套件安装吧,群晖套件中心添加社区套件来源,其他安装方式见官方文档

https://spk7.imnks.com/

安装好套件,打开填写服务端配置ip:端口;连接密钥,保存即可。

再回到服务端后台管理web,这里客户端列表显示在线,就已经连接上了

配合Nginx实现SSL

在Nginx默认配置目录下新建一个ssl文件夹,用于存放ssl证书

mkdir /etc/nginx/ssl

使用acme.sh申请好SSL证书后,使用以下命令部署到Nginx

example.com 修改为自己acme.sh申请时使用的域名

acme.sh --install-cert -d *.example.com \
--key-file       /etc/nginx/ssl/*.example.com.key \
--fullchain-file /etc/nginx/ssl/*.example.com.cer \
--reloadcmd     "service nginx force-reload"

编辑nano /etc/nginx/nginx.conf配置文件,选择添加或替换以下配置,注意替换*.example.com

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
    worker_connections 768;
    # multi_accept on;
}

#http监听80端口转发到nps端口8020
http      
{
server {
    listen 80;
    server_name *.example.com;
    location / {
        proxy_set_header Host  $http_host;
        proxy_pass http://127.0.0.1:8020;
    }
    #http强制跳转https
    rewrite ^(.*) https://$host$uri permanent;
    #return      301 https://$server_name$request_uri;
}

#https监听443端口并配置ssl
server {
    listen 443;
    server_name *.example.com;
    ssl on;
    ssl_certificate /etc/nginx/ssl/*.example.com.cer;
    ssl_certificate_key /etc/nginx/ssl/*.example.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_set_header Host  $http_host;
        proxy_pass http://127.0.0.1:8020;
    }
}

}

重载nginx配置

systemctl reload nginx

搞定。

参考

Document (ehang-io.github.io)
本文来源于互联网,著作权归作者 [  ] 享有,本文仅供个人学习、研究和欣赏使用,如有异议,请联系站务及时处理。

发表留言