avatar

十六小站

欢迎来到我的个人主页! 期待与您分享我的经验与故事,一起探索技术的无穷可能!

  • 首页
  • NAS专题
  • 关于
Home 群晖NAS使用nps获取到真实访问IP
文章

群晖NAS使用nps获取到真实访问IP

Posted 2023-09-27 Updated 2024-10- 19
By 十六
12~15 min read

背景

由于使用黑群晖,自己使用nps搭建的内网穿透,由于经常有莫名的访问日志,又看不到访问者IP,未配置前,如果: file 能够看到所有访问的ip都是127.0.0.1,日志也无任何参考意义。

思路

收到一片博客启发,自己动手搭建试了试然后成功了。 原文地址:http://k.sina.com.cn/article_1823348853_6cae187502001b77i.html

  1. nps穿透前面加一层haproxy代理。
  2. nps内网穿透
  3. nginx代理携带真实ip,代理到nas的访问地址

外网服务器安装haproxy

对于ubuntu/debian用下面的命令安装

apt update && apt upgrade && apt install haproxy

对于centos用下面的命令安装

yum install epel-release -ysudo yum update -y && yum install haproxy -y

编辑haproyx的配置文件

vim /etc/haproxy/haproxy.cfg

按“i”键进入编辑模式,在文件的最后面插入下面的内容,要根据的自己的实际情况更改。

listen web
    bind 0.0.0.0:5001
    mode tcp
    option forwardfor
    # haproxy转发给nps监听的5043端口
    server web1 127.0.0.1:5043 send-proxy check inter 3000 fall 3 rise 5

注意缩进,linux下全部使用空格缩进不要使用tab,养成良好习惯。 修改完成后按ESC,输入:wq,保存并退出。 执行 haproxy -f /path/to/haproxy.cfg 检查文件格式是否正确。 如果无错误,则说明没有问题。 file 执行命令启动服务:

systemctl start haproxy

中间如果修改配置文件,修改完成后则使用下列命令重启:

systemctl start haproxy

下列命令查看服务是否启动成功

systemctl status haproxy

配置Nas上的nginx

cd /etc/nginx/conf.d/
vim http.ip.conf

贴入以下内容:

server {
    # 监听IPv4,并开启Proxy Protocol协议
    listen 5501 ssl proxy_protocol;

    # 监听IPv6,并开启Proxy Protocol协议
    listen [::]:5501 ssl proxy_protocol;

    # 监听的域名,你解析给云服务器的域名
    server_name [你内网穿透服务器对应的域名];

    # 排除Cloudflare CDN的IP
    # 如果你有使用到CDN的服务的话,一般NAS不会使用到此类IP
    # 仅供参考
    set_real_ip_from 173.245.48.0/20;
    set_real_ip_from 103.21.244.0/22;
    set_real_ip_from 103.22.200.0/22;
    set_real_ip_from 103.31.4.0/22;
    set_real_ip_from 141.101.64.0/18;
    set_real_ip_from 108.162.192.0/18;
    set_real_ip_from 190.93.240.0/20;
    set_real_ip_from 188.114.96.0/20;
    set_real_ip_from 197.234.240.0/22;
    set_real_ip_from 198.41.128.0/17;
    set_real_ip_from 162.158.0.0/15;
    set_real_ip_from 104.16.0.0/13;
    set_real_ip_from 104.24.0.0/14;
    set_real_ip_from 172.64.0.0/13;
    set_real_ip_from 131.0.72.0/22;
    set_real_ip_from 2400:cb00::/32;
    set_real_ip_from 2606:4700::/32;
    set_real_ip_from 2803:f800::/32;
    set_real_ip_from 2405:b500::/32;
    set_real_ip_from 2405:8100::/32;
    set_real_ip_from 2a06:98c0::/29;
    set_real_ip_from 2c0f:f248::/32;

    # 排除本地IP,请根据你的具体情况配置
    set_real_ip_from 192.168.3.0/16;
    set_real_ip_from 172.0.0.0/8;

    # 排除服务器IP
    set_real_ip_from 42.194.245.33/32;

    # 真实IP使用proxy_protocol协议
    real_ip_header proxy_protocol;

    # 开启排除IP功能
    real_ip_recursive on;

    proxy_headers_hash_max_size 512;
    proxy_headers_hash_bucket_size 128;

    # 反向代理
    location / {
        # 目标地址,群晖默认HTTPS地址为5001,请根据实际情况调整
        proxy_pass https://localhost:5001;

        # 兼容http
        # proxy_set_header Upgrade-Insecure-Requests 1;
        # 告诉后端使用ssl
        proxy_ssl_server_name on;

        # 客户端使用的http协议
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Scheme $scheme;

        # 客户端host
        proxy_set_header Host $host;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-Host $http_host;

        # 完整URI
        proxy_set_header X-Original-URI $request_uri;

        # 客户端使用的端口
        proxy_set_header X-Real-Port $proxy_protocol_port;

        # 多层代理IP
        proxy_set_header X-Forwarded-For $proxy_protocol_addr;

        # 客户端IP,群晖默认会通过X-Real-IP获取用户IP
        proxy_set_header X-Real-IP $proxy_protocol_addr;

        # 支持Websocket
        # 如果你使用诸如Docker bash此类的功能,则需要开启Websocket
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection Upgrade;
        proxy_connect_timeout 60s;
        proxy_read_timeout 60s;
        proxy_send_timeout 12s
    }
}

按ESC键,输入:wq保存并退出

重启nginx

cd /usr/bin/
nginx -s reload

注意

这里就已经完成了,但是有以下事项要注意:

  1. 公网服务器的haproxy绑定了5001端口,就不能再有5001的内网穿透映射了。需要在nps管理控制台删除掉。
  2. 访问nas还是和以前内网穿透一样 ,公网ip或域名+5001(https)。
  3. 其他的使用nginx代理的web station门户也是同样配置 ,自己可以根据本教程举一反三。
  4. 本教程针对于有一定基础的人群。
NAS专题
群晖
License:  CC BY 4.0
Share

Further Reading

Nov 1, 2023

群晖搭建iSCSI服务

iSCSI是什么 这里首先来介绍下iSCSI。iSCSI(Internet Small Computer System Interface)是一种用于在IP网络上传输SCSI协议的存储协议。它允许计算机通过网络连接到远程存储设备,并将其视为本地连接的存储设备。 传统上,SCSI(Small Comp

Sep 27, 2023

群晖NAS使用nps获取到真实访问IP

背景 由于使用黑群晖,自己使用nps搭建的内网穿透,由于经常有莫名的访问日志,又看不到访问者IP,未配置前,如果: 能够看到所有访问的ip都是127.0.0.1,日志也无任何参考意义。 思路 收到一片博客启发,自己动手搭建试了试然后成功了。 原文地址:http://k.sina.com.cn/art

Sep 15, 2023

群晖Docker安装和运行Clash并自动更新订阅

原文链接 https://fugary.com/?p=363 机场链接 先奉上我对比下来最划算的机场飞兔云 最近买了Clash的机场订阅地址,试用发现Clash梯子访问网络还是比较方便的,不过需要每台电脑或者设备上安装相应的软件,相对来讲比较麻烦,其实局域网内可以启用Allow LAN模式,其他设备

OLDER

onlyoffice修改字体样式和大小

NEWER

OpenSearch初探

Recently Updated

  • Onlyoffice编译
  • K6+Playwright实现并发测试
  • 简单规则引擎
  • 在WEB中子线程可以访问Request上下文
  • onlyoffice配置

Trending Tags

Java Docker 前端 中间件 数据库 群晖 unraid

Contents

©2025 十六小站. 陕ICP备2023009742号-2