1,登陆服务器查看资源使用top,vmstat等命令查看了一番发现服务器各项指标都没有异常。于是将问题转向了网络层。
2,本地使用ping服务器外网ip正常返回,无丢包,延迟也正常。
3,登录服务器查看tcp相关数据。
发现在卡顿时有大量tcp syn包被丢弃,数值一直在增长。
在查阅资料并结合实际情况后,发现该服务器同时启用了 tcp_timestamps和tcp_tw_recycle参数。
后想起,之前同事为改善time_wait连接数过多问题曾改过该内核参数。
解决办法是,关闭tcp_tw_recycle:
再观察,发现服务已正常,偶尔连接不上的现象消失。
我们先来man一下这两个参数(man tcp):
cp_timestamp 是 RFC1323 定义的优化选项,主要用于 TCP 连接中 RTT(Round Trip Time) 的计算,开启 tcp_timestamp 有利于系统计算更加准确的 RTT,也就有利于 TCP 性能的提升。(默认开启)
关于tcp_timestamps详情请见: https://tools.ietf.org/pdf/rfc7323.pdf
开启tcp_tw_recycle会启用tcp time_wait的快速回收,这个参数不建议在NAT环境中启用,它会引起相关问题。
tcp_tw_recycle是依赖tcp_timestamps参数的,在一般网络环境中,可能不会有问题,但是在NAT环境中,问题就来了。比如我遇到的这个情况,办公室的外网地址只有一个,所有人访问后台都会通过路由器做SNAT将内网地址映射为公网IP,由于服务端和客户端都启用了tcp_timestamps,因此TCP头部中增加时间戳信息,而在服务器看来,同一客户端的时间戳必然是线性增长的,但是,由于我的客户端网络环境是NAT,因此每台主机的时间戳都是有差异的,在启用tcp_tw_recycle后,一旦有客户端断开连接,服务器可能就会丢弃那些时间戳较小的客户端的SYN包,这也就导致了网站访问极不稳定。
主机A SIP:P1 (时间戳T0) --->Server 主机A断开后
主机B SIP:P1 (时间戳T2) T2 <T0 --->Server 丢弃
经过此次故障,告诫我们在处理线上问题时,不能盲目修改参数,一定要经过测试,确认无误后,再应用于生产环境。同时,也要加深对相关内核参数的认识和理解。
本文解决灵感来自于 https://blog.51cto.com/hld1992/2285410
https://blog.csdn.net/chengm8/article/details/51668992
开一台阿里云服务器
1. 进入实例详情页面,在 "网络信息" 模块,点击右方 更多 按钮,下拉框选择 "管理IPv6"
2. 步骤1完成后,弹出一个弹框,标题为 "管理辅助私网IP ",在下面 ipv6地址,点击 "分配新ip"
3. 分配ipv6地址成功后,需要给该地址开通公网带宽,进入ipv6网关详情页面,找到对应的ipv6地址,右方操作栏点击 "开通公网带宽"
4. 服务器拥有ipv6公网ip,终端执行 ping6 ipv6地址 测试是否能正常访问,如果失败了,可能是服务器实例的安全组规则中没有放行 ipv6 地址访问,添加一条新规则,入方向允许 ::1 来源的访问
ssh通过ipv6地址远程登录服务器,格式和ipv4一样,例如:ssh root@2408:4006:1101::1900
注意,ssh通过ipv6登录服务器,需要该服务器sshd已经配置可以通过ipv6登录,若未配置,需要先登录到该服务器,修改sshd配置文件
① vim /etc/ssh/sshd_config
②输入/AddressFamily,将值修改为 any 后保存文件 (适用于ipv4和ipv6,若为inet则适用于ipv4,inet6适用于ipv6)
③重启ssh,/etc/init.d/ssh restart,重启后ssh就可以通过ipv6远程登录该服务器了
参考阿里云帮助文档:https://help.aliyun.com/document_detail/98597.html?spm=a2c4g.11186623.6.1032.6d641003094NOS
大多用户在选购云服务器的时候首先考虑的就是阿里云服务器,不仅是因为阿里云服务器是国内知名度最高的云服务器品牌,还有一个重要原因就是阿里云服务器有一定的安全性保障吧。阿里云服务器本身自带一些安全防护措施。
1、免费开通云盾,提供网络安全、服务器安全等基础防护
DDoS 基础防护 :
提供最高 5G 的 DDoS 防护能力,可防御 SYN flood、UDP flood、ICMP flood、ACK flood 常规 DDoS 攻击。
2、服务器安全功能: 安骑士
包含暴力破解密码拦截、木马查杀、异地登录提醒、高危漏洞修复的防入侵功能
免费提供云监控,并支持多种实时预警
3、站点监控:
提供对 http、ping、dns、tcp、udp、smtp、pop、ftp 等服务的可用性和响应时间的统计、监控、报警服务。
4、云服务监控:
提供对云服务的监控报警服务,对用户开放自定义监控的服务,允许用户自定义个性化监控需求
报警及联系人管理:提供对报警规则,报警联系人的统一、批量管理服务。支持多报警方式:短信、邮件、旺旺、接口回调。
除了以上自带的安全性防护措施之外,用户也可以选购阿里云安全类产品,进一步加强云服务器的安全。
1、阿里云云盾(AntiDDos)
功能:防护SYN Flood、UDP Flood、ACK Flood、ICMP Flood、DNS Flood、CC攻击等3到7层DDos攻
击。
2、安骑士(阿里云查、杀毒软件)
功能:轻量级服务器安全运维管理产品。在服务器上运行Agent插件,正常状态下只占用1%的CPU、
10MB内存。可以自动识别服务器Web目录,对服务器的Web目录进行后门文件扫描,支持通用
Web软件漏洞扫描和Windows系统漏洞扫描,对服务器常见系统配置缺陷进行检测,包括可疑
系统账户、弱口令、注册表等。
3、 云盾Web应用防火墙 —WAF(Web Application Firewall)
功能:基于云安全大数据能力实现,通过防御SQL注入、XSS跨站脚本、Web服务器插件漏洞、木马
上传、非授权核心资源访问等OWASP常见攻击,过滤海量恶意CC攻击等。除了具有强大的Web
防御能力,还可以指定网站的专属防护,能轻松应对各类Web应用攻击。
1、服务器初始安全防护
安装服务器时,要选择绿色安全版的防护软件,以防有被入侵的可能性。对网站提供服务的服务器,软件防火墙的安全设置最高,防火墙只要开放服务器端口,其他的一律都关闭,你要访问网站时防火墙会提示您是否允许访问,在根据实际情况添加允许访问列表。这样至少给系统多一份安全。
2、修改服务器远程端口。
修改你的远程连接端口,例如 windows 的 3389,Linux 的 22 端口。应用服务尽量不要对公网开放,尤其是中间件服务,除了 web 服务所提供的 80,443 端口之外都应该尽量不要对公网开放默认端口,例如 MySQL 的 3306 ,Redis 的 6379 等等。
3、设置复杂密码。
一但服务器IP被扫描出来默认端口,非法分子就会对服务器进行暴力破解,利用第三方字典生成的密码来尝试破解服务器密码,如果您的密码足够复杂,非法分子就需要大量的时间来进行密码尝试,也许在密码未破解完成,服务器就已经进入保护模式,不允许登陆。
4、随时修补网站漏洞
如果网站出现漏洞时不及时处理,网站就会出现一系列的安全隐患,这使得服务器很容易受到病毒入侵,导致网络瘫痪,所以,平时要养成良好的习惯,时刻关注是否有新的需修补的漏洞。
5、多服务器保护
一个网站可以有多个服务器,网站被攻击时,那么我们就可以选择不一样的方式进行防范,针对不同的服务器,我们应该设置不同的管理,这样即使一个服务器被攻陷,其他的服务还可以正常使用。
6、利用好防火墙技术
现在防火墙发展已经很成熟了,防火墙可以选择安全性检验强的,检验的时间会较长,运行的过程会有很大负担。如果选择防护性低的,那么检验时间会比较短。我们在选择防护墙时,要根据网络服务器自身的特点选择合适的防火墙技术。
7、定时为数据进行备份。
定时为数据做好备份,即使服务器被破解,数据被破坏,或者系统出现故障崩溃,你只需要进行重装系统,还原数据即可,不用担心数据彻底丢失或损坏。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)