首页 >>  正文

linux测试ip端口通不通

来源:baiyundou.net   日期:2024-09-23

作者: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的配置就完成了,这时候就可以在浏览器上输入网址测试了

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

","gnid":"984a2a5ad5040aac4","img_data":[{"flag":2,"img":[{"desc":"","height":"811","title":"","url":"https://p0.ssl.img.360kuai.com/t011007a7dffb93dd13.jpg","width":"1080"},{"desc":"","height":"549","title":"","url":"https://p0.ssl.img.360kuai.com/t01547772d49200a2b4.jpg","width":"1080"},{"desc":"","height":"493","title":"","url":"https://p0.ssl.img.360kuai.com/t018d56bdb8ba9aafab.jpg","width":"1080"},{"desc":"","height":"441","title":"","url":"https://p0.ssl.img.360kuai.com/t017163369436b04ea4.jpg","width":"1080"},{"desc":"","height":"555","title":"","url":"https://p0.ssl.img.360kuai.com/t0187c93339faa104c7.jpg","width":"1080"},{"desc":"","height":"1113","title":"","url":"https://p0.ssl.img.360kuai.com/t0105c9d878b0347223.jpg","width":"1080"},{"desc":"","height":"530","title":"","url":"https://p0.ssl.img.360kuai.com/t014f412e41f38d7afd.jpg","width":"1080"},{"desc":"","height":"583","title":"","url":"https://p0.ssl.img.360kuai.com/t012598f57242b64b43.jpg","width":"1080"},{"desc":"","height":"840","title":"","url":"https://p0.ssl.img.360kuai.com/t01abe76596a7c02c44.jpg","width":"1080"},{"desc":"","height":"286","title":"","url":"https://p0.ssl.img.360kuai.com/t0108af2fea488c4aed.jpg","width":"1080"},{"desc":"","height":"403","title":"","url":"https://p0.ssl.img.360kuai.com/t01d4f9b744e9fbd6c8.jpg","width":"758"},{"desc":"","height":"2035","title":"","url":"https://p0.ssl.img.360kuai.com/t01aa6ee8348641e15f.jpg","width":"1080"},{"desc":"","height":"418","title":"","url":"https://p0.ssl.img.360kuai.com/t0118b3643164c6d841.jpg","width":"1080"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1694191200000,"pure":"","rawurl":"http://zm.news.so.com/e0ee9bbeae6b4908c520c173b762e31d","redirect":0,"rptid":"fa246358969e3170","rss_ext":[],"s":"t","src":"什么值得买","tag":[],"title":"小白nas入门 篇五:全网第一个nps内网穿透环境下群晖获取客户端真实ip保姆级教程

许定昆3607linux中如何判断一个ip经过多少个节点 -
相达别18141334320 ______ 命令行下: ping -c 3 11.22.33.44 | grep ttl > /dev/null echo $? 如果打印为0,则通,不为0,则不通.

许定昆3607Linux 查看ip 端口 进程的几种方法 -
相达别18141334320 ______ 查看IP: ifconfig 查看端口占用如: netstat –anp | grep 8080 查看进程 ps -aux | grep "mysql"

许定昆3607linux使用什么命令查看端口 -
相达别18141334320 ______ netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序) -p : 显示进程标识符和程序名称,每一个套接字/端口都...

许定昆3607判断端口通不通的几种方法 -
相达别18141334320 ______ 1、使用telnet判断 telnet是windows标准服务,可以直接用;如果是linux机器,需要安装telnet.用法: telnet ip port1)先用telnet连接不存在的端口 [root@localhost ~]# telnet 10.0.250.3 80 Trying 10.0.250.3...telnet: connect to address 10.0.250.3: ...

许定昆3607window下用telnet+IP+端口能测试本机到指定IP的端口是否畅通,那么LINUX用什么命令? -
相达别18141334320 ______ 跟windows 一样,也可以用nmap -p 端口 ip

许定昆3607如何检测远程主机上的某个端口是否开启 -
相达别18141334320 ______ 1、安装telnet.我的win7下就没有telnet,在cmd下输入telnet提示没有该命令.于是我们进入控制面板---->程序---->打开或关闭windows功能.然后等一段时间,在出来的对话框把telnet客户端和telnet服务器勾选上,其他的不用管,然后点击确定...

许定昆3607如何查看“linux服务器”IP和端口? -
相达别18141334320 ______ 参考方法: 1、用netstat查看: 2、lsof -i:port,使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接. 3、nmap端口扫描. 4、文件/etc/services显示的各个服务的端口号: 根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等. 具体步骤如下:/导致这种情况的原因主要是……

许定昆3607linux 如何检测网络状况 -
相达别18141334320 ______ ifconfig查看你的网卡配置netstat -anp 可是查看正在监听网络的程序.用你的window cmd 输入ping 你liunx的ip可以检测你的windows和linux是否连接你可以搜索linux netstat...

许定昆3607linux怎么测试端口是否打开 -
相达别18141334320 ______ 用telnet 命令,比如telnet 192.168.1.1 80

许定昆3607判断端口通不通的几种方法 -
相达别18141334320 ______ 使用telnet判断 telnet是windows标准服务,可以直接用;如果是linux机器,需要安装telnet. 用法: telnet ip port 1)先用telnet连接不存在的端口 [root@localhost ~]# telnet 10.0.250.3 80 Trying 10.0.250.3... telnet: connect to address 10.0.250.3: ...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024