百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

一步步带你学习负载均衡器-10之FTP配置

bigegpt 2024-09-12 11:15 45 浏览

3.5 配置FTP

文件传输协议(FTP)是一个古老且复杂的多端口协议,给负载均衡器提出了独一无二挑战。为了理解这些挑战的特点,首先需要理解FTP是如何工作等一些关键事情。

3.5.1 FTP如何工作

在大多数服务器与客户端的关系中,客户机器打开特定的端口并建立和服务端的连接,服务器在那个端口应答客户端的请求。当一个FTP客户端连接到一个FTP服务器,它打开一个FTP控制端口21,客户端告诉FTP服务器要建立一个主动还是被动连接。客户端端选择的连接类型决定了服务器将如何应答并且在什么样的端口传输。

两种数据连接为:

主动连接

当一个主动连接建立,服务器打开端口20并和客户端一个更高范围端口进行数据传输。服务器上的所有数据将通过这个连接进行传输。

被动连接

当一个被动连接建立,客户端请求FTP服务器建立一个被动连接的端口,端口范围可以是比10000高的值。服务器之后给此次特殊的会话绑定这个高数值的端口并回复端口数值给客户端。客户端之后连接这个新的端口进行数据传输。客户端的每一次数据请求都会引起一次独立的数据传输过程。当从服务器请求数据的时候,FTP客户端建立一个被动的连接进行数据传输是比较常见的情况。

3.5.2 ftp是如何影响负载均衡器的路由的

IPVS包的转发只允许根据所能识别的端口或防火墙标记允许连接的进入和出去集群。如果一个集群外的客户端试图去打开一个IPVS没有配置的端口,它会丢弃连接。同样的,如果一个真实服务器试图在一个IPVS不知道的端口打开一个互联网连接和客户端通信,它也会丢弃连接。这意味着互联网上所有FTP客户端的所有连接必须有同样的防火墙标记,并且所有FTP服务器的连接都必须通过网络过滤规进行恰当转发到互联网。

3.5.3 创建网络包过滤规则

在给FTP服务指定iptables规则之前,回顾“3.4部分的多端口服务和负载均衡器”关注一下多端口服务和技术并检查已有网络包过滤规则。

下面是指定相同的防火墙标记21的规则给FTP服务实例。

3.5.3.1 主动连接的规则

主动连接的规则告诉内核去接受和转发访问内部浮动IP地址端口20的连接.

以下的iptables命令让LVS路由器去允许从真实服务器出去互联网的连接,而IPVS却不知道这个连接:

/usr/sbin/iptables -t nat -A POSTROUTING -p tcp -s n.n.n.0/24 --sport 20 -j MASQUERADE

在iptables命令中,n.n.n应当被NAT接口的内部网络接口浮动IP的前3个值替换,也就是keepalived.conf文件中virtual_server部分定义的IP。

3.5.3.2 被动连接的规则

被动连接的规则给来自互联网访问浮动IP地址的连接指定了合适的网络防火墙标记,连接的服务端口范围从10000到20000.

这个范围应当足够大能够满足大多数情况;你也可以通过改变10000:20000到1024:65535,增加这个数值范围去包含可用的非安全端口。

下面iptables命令有会对网络行为产生影响,分配任意业务地址到浮动IP的一个防火墙标记21过的一个特定的端口,这样就能被IPVS识别并进行恰当转发:

/usr/sbin/iptables -t mangle -A PREROUTING -p tcp -d n.n.n.n/32 --dport 21 -j MARK --set-mark 21
/usr/sbin/iptables -t mangle -A PREROUTING -p tcp -d n.n.n.n/32 --dport 10000:20000 -j MARK --set-mark 21

在iptables命令中,n.n.n.n应当用定义在keepalived.conf文件的virtual_server子部分的FTP虚拟服务器浮动IP进行替换。

上述的命令是马上生效的,但是重启之后会丢失掉。除非保存。为了保存更改,输入如下的命令:

#iptables-save > /etc/sysconfig/iptables

为了确保iptables服务能开机启动,输入如下命令:

#systemctl enable iptables

可以通过运行以下命令验证当系统启动重启时更改是否永久生效,并检查所做的更改还在可以执行如下命令:

#systemctl restart iptables


3.6 保存网络包过滤设置

当给你的环境配置了恰当的网络包过滤规则,保存设置使重启之后能重新生效。对于iptables,输入如下命令:

#iptables-save >/etc/sysconfig/iptables

为确保iptables服务在系统启动时启动,输入如下命令:

#systemctl enable iptables

输入如下命令检查和验证当系统重启时更改是否持久:

#systemctl restart iptables


3.7 启用包转发和非本地绑定

为了能让keepalived服务能正确的转发网络包到真实的服务器,每一个路由器节点必须把内核的IP转发打开。root登录系统并修改/etc/sysctl.conf中的net.ipv4.ip_forward = 0为如下.

net.ipv4.ip_forward = 1

重启系统之后更改生效。

HAProxy和keepalived的同时进行负载均衡,需要具备绑定IP地址的能力,即非本地化,意味着它不是把IP地址指定到系统的本地设备的。允许运行中的负载均衡器实例绑定一个IP而非本地化,以便能进行切换。

启用非本地化,编辑/etc/sysctl.conf的net.ipv4.ip_nonlocal_bind为如下:

net.ipv4.ip_nonlocal_bind = 1

当重启系统的时候生效。

为了检测IP转发是否打开了,root执行如下命令:

/usr/sbin/sysctl net.ipv4.ip_forward

为了检查非本地绑定是否打开,root执行如下命令:

/usr/sbin/sysctl net.ipv4.ip_nonlocal_bind

如果上面的命令都返回1,代表设置已经启用了。


3.8 在真实服务器上配置服务

如果真实服务器是red hat系统,设置服务器daemon在启动时激活。这些daemon包括web的httpd服务或FTP或Telnet的xinetd服务。如果需要远程访问服务器,也需要安装和运行sshd。

相关推荐

当Frida来“敲”门(frida是什么)

0x1渗透测试瓶颈目前,碰到越来越多的大客户都会将核心资产业务集中在统一的APP上,或者对自己比较重要的APP,如自己的主业务,办公APP进行加壳,流量加密,投入了很多精力在移动端的防护上。而现在挖...

服务端性能测试实战3-性能测试脚本开发

前言在前面的两篇文章中,我们分别介绍了性能测试的理论知识以及性能测试计划制定,本篇文章将重点介绍性能测试脚本开发。脚本开发将分为两个阶段:阶段一:了解各个接口的入参、出参,使用Python代码模拟前端...

Springboot整合Apache Ftpserver拓展功能及业务讲解(三)

今日分享每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。架构开源地址:https://gitee.com/msxyspringboot整合Ftpserver参...

Linux和Windows下:Python Crypto模块安装方式区别

一、Linux环境下:fromCrypto.SignatureimportPKCS1_v1_5如果导包报错:ImportError:Nomodulenamed'Crypt...

Python 3 加密简介(python des加密解密)

Python3的标准库中是没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto和cryptography上,我...

怎样从零开始编译一个魔兽世界开源服务端Windows

第二章:编译和安装我是艾西,上期我们讲述到编译一个魔兽世界开源服务端环境准备,那么今天跟大家聊聊怎么编译和安装我们直接进入正题(上一章没有看到的小伙伴可以点我主页查看)编译服务端:在D盘新建一个文件夹...

附1-Conda部署安装及基本使用(conda安装教程)

Windows环境安装安装介质下载下载地址:https://www.anaconda.com/products/individual安装Anaconda安装时,选择自定义安装,选择自定义安装路径:配置...

如何配置全世界最小的 MySQL 服务器

配置全世界最小的MySQL服务器——如何在一块IntelEdison为控制板上安装一个MySQL服务器。介绍在我最近的一篇博文中,物联网,消息以及MySQL,我展示了如果Partic...

如何使用Github Action来自动化编译PolarDB-PG数据库

随着PolarDB在国产数据库领域荣膺桂冠并持续获得广泛认可,越来越多的学生和技术爱好者开始关注并涉足这款由阿里巴巴集团倾力打造且性能卓越的关系型云原生数据库。有很多同学想要上手尝试,却卡在了编译数据...

面向NDK开发者的Android 7.0变更(ndk android.mk)

订阅Google官方微信公众号:谷歌开发者。与谷歌一起创造未来!受Android平台其他改进的影响,为了方便加载本机代码,AndroidM和N中的动态链接器对编写整洁且跨平台兼容的本机...

信创改造--人大金仓(Kingbase)数据库安装、备份恢复的问题纪要

问题一:在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录,您可...

OpenSSH 安全漏洞,修补操作一手掌握

1.漏洞概述近日,国家信息安全漏洞库(CNNVD)收到关于OpenSSH安全漏洞(CNNVD-202407-017、CVE-2024-6387)情况的报送。攻击者可以利用该漏洞在无需认证的情况下,通...

Linux:lsof命令详解(linux lsof命令详解)

介绍欢迎来到这篇博客。在这篇博客中,我们将学习Unix/Linux系统上的lsof命令行工具。命令行工具是您使用CLI(命令行界面)而不是GUI(图形用户界面)运行的程序或工具。lsoflsof代表&...

幻隐说固态第一期:固态硬盘接口类别

前排声明所有信息来源于网络收集,如有错误请评论区指出更正。废话不多说,目前固态硬盘接口按速度由慢到快分有这几类:SATA、mSATA、SATAExpress、PCI-E、m.2、u.2。下面我们来...

新品轰炸 影驰SSD多款产品登Computex

分享泡泡网SSD固态硬盘频道6月6日台北电脑展作为全球第二、亚洲最大的3C/IT产业链专业展,吸引了众多IT厂商和全球各地媒体的热烈关注,全球存储新势力—影驰,也积极参与其中,为广大玩家朋友带来了...