新浪新闻客户端

全网第一个nps内网穿透环境下群晖获取客户端真实ip保姆级教程

全网第一个nps内网穿透环境下群晖获取客户端真实ip保姆级教程
2023年09月09日 00:34 新浪网 作者 什么值得买

  作者:geek玩物

  在没有公网ip的情况下想远程访问nas,只能通过各种内网穿透工具的来实现。使用了内网穿透工具的话,nas就没有办法获得访问者的真实ip地址,也就没有办法通过拉黑ip的方式去阻止一些不友好的访问者。

  好在http协议可以通过X-Forwarded-For协议来获得用户的真实ip地址,恰巧群晖原生支持这种方式。只需要内网穿透工具开启X-Forwarded-For协议支持就可以了。但如果是https协议则需要Proxy Protocol协议。

  显然外网访问nas的时候是需要https来保证安全的,那么就需要使用Proxy Protocol协议来获取用户的真实ip。但群晖原生不支持该协议,需要额外的设置才能支持,所以就有了今天这篇教程。

  部署思路

  本次教程使用的的内网穿透工具是nps,因为nps不支持Proxy Protocol协议,所以还需要haproxy。如果使用frp的话则不需要haproxy,frp原生支持Proxy Protocol协议。

  大概的原理是,在云服务上haproxy作为反代服务器,将用户的真实ip记录在Proxy Protocol中,然后转发给nps,nps在通过tcp隧道转发给内网的Nginx中,Nginx在把数据转给群晖的同时也把用户的真实ip转过去了,这样子群晖读取Proxy Protocol就知道用户真实的ip地址了。

  端口规划

  这种方式获得真实ip转发配置有点多,所以需要提前规划好转发的端口。以免在后面的配置时搞混了。

  首先用户流量先到服务器上的haproxy,haproxy到nps,nps到群晖安装的nginx,nginx在给群晖本身

  我的安排是这样子的,大家可以参考一下

  云服务器上的1443端口haproxy监听1443端口,加上用户真实ip收转发给nps监听的5043端口

  云服务器上的5043端口,nps监听的5043端口这个端口收到的流量会转发给群晖上的5501端口

  群晖上的5501端口,群晖上的nginx监听的5501端口,nginx收到流量处理后会传输给群晖上的5001端口,也就是群晖的https端口。

  安装教程

  1.nps服务端安装

  ssh到你的服务器用以下下载你的二进制安装包,大部分的云服务器都是x86-64的,其他架构的请下载合适架构的版本。

  mkdir nps && cd nps && wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_arm64_server.tar.gz && tar -zxvf linux_arm64_server.tar.gz

  运行下面命令使用vim编辑器编辑nps的配置文件,找到图片上画圈的配置进行更改。

  vim conf/nps.conf

  由于haproxy默认监听80和443端口,所以这里要更改一下nps的http默认监听端口。第一个红框框住的就是http监听端口的设置,我这里把他们改为了280和2443

  第三个框的的选项是域名监听设置和控制面板账户密码设置,为了安全起见一定要更改用户名和密码

  第二个框可能是api相关的密钥,建议修改一下

  最后按一下“esc”键,然后输入:wq!保存退出,运行下列命令安装并启动

  chmod +x nps && ./nps install && nps start

  现在在浏览器打开地址:你的服务器ip:8080。能打开nps控制面板,那么nps就已经启动了

  2.nps管理面板添加客户端

  登陆nps的控制面板,参考下面的图添加一个客户端给群晖使用。

  3.群晖安装npc客户端

  群晖是有npc客户端套件的,但是官方源并没有提供这个套件。所以你需要添加一个第三方源,比如矿神源

  https://spk7.imnks.com/

  在套件中心搜索npc就可以找到套件,填上:服务器ip地址:8024和刚才为群晖配置的验证密钥就可以了。在nps控制面板上就看到了群晖上线了。

  5.安装haproxy

  主流的linux发行版的软件仓库都收录了haproxy,只需要一条命令就可以安装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

  # haproxy监听的端口1443,根据我的端口规划确定的

   bind 0.0.0.0:1443

   mode tcp

   option forwardfor

  #haproxy转发给nps监听的5043端口

   server web1 127.0.0.1:5043 send-proxy check inter 3000 fall 3 rise 5

  保存配置文件后,运行下面命令启动和重启haproxy

  systemctl start haproxy

  systemctl restart haproxy

  然后运行下面命令检查haproxy是否运行,如果输出下图内容则配置被应用。

  systemctl status haproxy

  6.配置nginx

  群晖的web服务器是nginx,所以我们不需要在去安装一个nginx。使用群晖自带的nginx就行了

  首先ssh登陆到群晖,然后用下面的命令并输入管理员密码后进入root模式

  sudo -i

  输入下面命令查看查看群晖的nginx的配置文件,拉到最后一行看到下图的内容

  cat /etc/nginx/nginx.conf

  倒数第二行的意识是说,群晖nginx的用户自定义配置保存在/etc/nginx/conf.d/文件夹中,配置文件以http.*.conf命名。比如我命名为http.cip.conf。

  这个配置文件比较多,所以我做了一个半成品放在了github中。首先用下面的命令打开到/etc/nginx/conf.d/文件夹

  cd /etc/nginx/conf.d/

  用下面的命令下载并编辑下载好的nginx配置文件,参考下图红框更改参数。

  wget https://github.com/jiefff0/dsip/releases/download/ipip/http.ip.conf && vim http.ip.conf

  配置好后保存退出输入下列命令测试配置文件是否配置好了。

  nginx -t

  如果配置正确,则输出下列内容

  nginx: configuration file /etc/nginx/nginx.conf test is successful

  输入下列命令重启nginx

  nginx -s reload

  此时群晖在内网穿透环境下获取客户端真实ip的配置就完成了,这时候就可以在浏览器上输入网址测试了

  查看文章精彩评论,请前往什么值得买进行阅读互动

特别声明:以上文章内容仅代表作者本人观点,不代表新浪网观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与新浪网联系。
内网穿透ETC面板
来自于:北京
权利保护声明页/Notice to Right Holders

举报邮箱:jubao@vip.sina.com

Copyright © 1996-2024 SINA Corporation

All Rights Reserved 新浪公司 版权所有