龙空技术网

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

菜鸟加油站 120

前言:

现在大家对“ftp客户端指定端口”可能比较重视,大家都需要学习一些“ftp客户端指定端口”的相关知识。那么小编也在网上汇集了一些有关“ftp客户端指定端口””的相关内容,希望我们能喜欢,朋友们一起来了解一下吧!

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。

标签: #ftp客户端指定端口