Linux内核网络参数的意义及应用

简介: 摘要:本文主要介绍了linux系统位于目录/proc/sys/net/ipv4/下的部分内核网络参数,同时对通过linux内核网络参数的调整来提高linux系统的安全性和稳定性提出了自己的见解。
摘要:本文主要介绍了linux系统位于目录/proc/sys/net/ipv4/下的部分内核 网络参数,同时对通过linux内核 网络参数的调整来提高linux系统的安全性和稳定性提出了自己的见解。从而为系统管理员进一步增强 网络的安全性和系统的稳定性提供了参考。
  
  在linux中,我们可以根据不同的需求来调整/proc/sys/net/ipv4/目录下的内核 网络参数,通过合理的配置这里内核 网络参数,从而达到提高 网络的安全性和系统的稳定性的目的。因为这方面的文献比较少,所以我们不可能进行全面的介绍。现在已经有linux组织正在从事这方面的文档的写作,相信在不久的将来,我们就会看到比较完整的文档。下面我们就来看一看一些比较常用的内核 网络参数。
  
  注意:1. 参数值带有速度(rate)的参数不能在loopback接口上工作。
  
  2.因为内核是以HZ为单位的内部时钟来定义速度的,通常速度为100HZ,所以设定一个参数值为100就表示允许1个包/秒,假如为20则允许5个包/秒。

网管论坛bbs_bitsCN_com


  
  3.所有内核 网络参数配置文件位于/proc/sys/net/ipv4/目录下。
  
  一、 icmp相关内核配置参数
  
  概述:通常我们使用icmp包来探测目的主机上的其它协议(如tcp和udp)是否可用。比如包含“destination unreachable”信息的icmp包就是最常见的icmp包。
  
  1.icmp_destunreach_rate:设置内容为“Destination Unreachable”icmp包的响应速率。设置值应为整数。
  应用实例:
  假设有A、B两部主机,首先我们在主机A上执行以下ipchains语句:
  ipchains -A input -p icmp -j REJECT
  这里的REJECT和DENY不同,DENY会丢掉符合条件的包如同没有接收到该包一样,而REJECT会在丢掉该包的同时给请求主机发回一个“Destination Unreachable”的icmp。
  然后在主机B上ping主机A,这时候我们会发现“Destination Unreachable”icmp包的响应速度是很及时的。接着我们在主机A上执行:
  echo \"1000\" > /proc/sys/net/ipv4/icmp_destunreach_rate
  也即每10秒钟响应一个“Destination Unreachable”的icmp包。
  这时候再从主机B上ping主机A就会发现“Destination Unreachable”icmp包的响应速度已经明显变慢,我很好奇的测试了一下,发现刚好是每10秒响应一次。 网管u家u.bitsCN.com
  
  2.icmp_echo_ignore_broadcasts:设置是否响应icmp echo请求广播,设置值应为布尔
  值,0表示响应icmp echo请求广播,1表示忽略。
  注意:windows系统是不响应icmp echo请求广播的。
  
  应用实例:
  在我的RedHat6.x和RedHat7上该值缺省为0,这样当有个用ping我的服务器所在的网段的 网络地址时,所有的linux服务器就会响应,从而也能让让该用户得到我的服务器的ip地址,可以执行
  echo \"1\" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  来关闭该功能。从而防止icmp风暴,防止 网络阻塞。
  
  3.icmp_echoreply_rate:设置系统响应icmp echo请求的icmp包的响应速度,设置值为
  整数。
  应用实例:
  假设有A、B两部主机,首先我们在主机B上ping主机A,可以看到响应很正常,然后在主机A上执行
  echo \"1000\" > /proc/sys/net/ipv4/icmp_echoreply_rate
  也即每10秒钟响应一个icmp echo请求包。然后再ping主机A就可以看到响应速度已经变成10秒一次。
  最好合理的调整该参数的值来防止icmp风暴。

网管网www.bitscn.com


  
   4.icmp_echo_ignore_all:设置系统是否忽略所有的icmp echo请求,如果设置了一个非0值,系统将忽略所有的icmp echo请求。其实这是icmp_echoreply_rate的一种极端情况。参数值为布尔值,1表示忽略,0表示响应。
  
  5. icmp_paramprob_rate:当系统接收到数据报的损坏的ip或tcp头时,就会向源发出一个包含有该错误信息的icmp包。这个参数就是用来设置向源发送这种icmp包的速度。当然,在通常情况下ip或tcp头出错是很少见的。参数值为整数。
  
  6.icmp_timeexceed_rate:数据报在 网络上 传输时,其生存时间(time to live)字段会不断减少,当生存时间为0时,正在处理该数据报的路由器就会丢弃该数据报,同时给源主机发送一个“time to live exceeded”的icmp包。该参数就是用来设置这种icmp包的发送的速度。当然,这通常用于充当路由器的linux主机。
  
  二、ip相关内核配置参数
  linux内核 网络参数中关于ip的配置参数通常是用来定义或调整ip包的一些特定的参数,除此之外还定义了系统的一些 网络特性。

网管联盟bitsCN_com


  
   1.ip_default_ttl:设置从本机发出的ip包的生存时间,参数值为整数,范围为0~128,缺省值为64。在windows系统中,ip 包的生存时间通常为128。如果你的系统经常得到“Time to live exceeded”的icmp回应,可以适当增大该参数的值,但是也不能过大,因为如果你的路由的环路的话,就会增加系统报错的时间。
  
   2.ip_dynaddr:该参数通常用于使用拨号连接的情况,可以使系统动能够立即改变ip包的源地址为该ip地址,同时中断原有的tcp对话而用新 地址重新发出一个syn请求包,开始新的tcp对话。在使用ip欺骗时,该参数可以立即改变伪装地址为新的ip地址。该参数的参数值可以是:
  1:启用该功能
  2:使用冗余模式启用该功能
  0:禁止该功能
  
  应用实例:
  在使用ipchains配置ip欺骗带动局域网共享一个ppp连接上网时,有时会出现刚开时连接一个站点连不通,再次刷新又可以连接的情况,这时候就可以设置该参数的值为1,从而立即改变伪装地址为新的ip地址,就可以解决这类问题。命令为:
  echo \"1\" > /proc/sys/net/ipv4/ip_dynaddr
  
  3.ip_forward:可以通过该参数来启用包转发功能,从而使系统充当路由器。参数值为1时启用ip转发,为0时禁止ip转发。注意,我们可以在单网卡或双网卡的主机上实现ip转发。 网管网www_bitscn_com
  应用实例:
  假设我们使用一部装有双网卡的linux主机充当防火墙,这时候我们就必须执行以下命令来打开ip转发功能:
  echo \"1\" > /proc/sys/net/ipv4/ip_forward
  
  4. ip_local_port_range:设置当本地系统向外发起tcp或udp连接请求时使用的端口范围。设置值为两个整数,缺省为“1024 4999”。
  应用实例:
  echo \"1450 6000\" > /proc/sys/net/ipv4/ip_local_port_range
  
  三、 tcp相关内核配置参数
  通过tcp配置参数可以控制tcp会话过程中的各个方面。
  
  a) tcp_fin_timeout:在一个tcp会话过程中,在会话结束时,A首先向B发送一个fin
   包,在获得B的ack确认包后,A就进入FIN WAIT2状态等待B的fin包然后给B发ack确认包。这个参数就是用来设置A进入FIN WAIT2状态等待对方fin包的超时时间。如果时间到了仍未收到对方的fin包就主动释放该会话。参数值为整数,单位为秒,缺省为180秒。
  
  b) tcp_syn_retires:设置开始建立一个tcp会话时,重试发送syn连接请求包的次数。
  参数值为小于255的整数,缺省值为10。假如你的连接速度很快,可以考虑降低该值来提高系统响应时间,即便对连接速度很慢的用户,缺省值的设定也足够大了。 中国网管论坛bbs.bitsCN.com
  
  3.tcp_window_scaling:设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。Tcp/ip通常使用的窗口最大可达到65535 字节,对于高速 网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力。
  
  四、 有关防止ip欺骗攻击的内核 网络参数
  假设有如下的情景:
  
  
  1.1.1.1 2.2.2.2
  
  
  
  在缺省状态下,路由器根据包的目的地址进行转发,所以路由器缺省是对来自任何地方
   的包进行转发的。如上图所示,假如路由器的2.2.2.2接口(也即广域网接口)接收到一个包,该包的源地址为1.1.1.100(也即为 Intranet地址),虽然这是不可能或者说是不合理的,但是由于路由器的特性,路由器还是会将这个不合法的包转发到Intranet。从而让黑客有了 可乘之机,为其进行ip欺骗攻击打开了方便之门。
  幸好,我们可以通过Linux的内核系统参数“反向路径过滤”来防止这种情况,该参数位于/proc/sys/net/ipv4/conf/下的各个子目录中的rp_filter文件。参数值为整数,可能的值有: 网管u家u.bitsCN.com
  2 - 进行全面的反向路径过滤,推荐在边缘路由器上使用。但是要注意,在复杂的 网络环境中,如果使用了静态路由或rip、ospf路由协议时,不推荐使用该值。
  1 - 是该参数的缺省值,它只对直接连接的 网络进行反向路径过滤。
  0 - 不进行反向路径过滤。
  
  应用实例:
  建立如下的脚本,文件名为rp.sh
  #/bin/bash
  for i in /proc/sys/net/ipv4/conf/*/rp_filter ;
  do
  echo 2 > $i
  done
  然后更改文件权限chmod 755 rp.sh
  最后执行 ./rp.sh
  
  五、 针对每一 网络接口的内核 网络参数
  通过针对每一 网络接口的内核 网络参数,你可以为诸如eth0、eth1等具体的 网络接口指
  定响应的内核 网络参数。
网管联盟bitsCN_com

  注意:/proc/sys/net/ipv4/conf/all/下的参数将应用于所有的 网络接口。
  
  1. accept_redirects:该参数位于/proc/sys/net/ipv4/conf/DEV/accept_redirects(DEV表
  示具体的 网络接口),如果你的主机所在的网段中有两个路由器,你将其中一个设置成了缺省网关,但是该网关在收到你的ip包时发现该ip包必须经过另外一个路由器,这时这个路由器就会给你发一个所谓的“重定向”icmp包,告诉将ip包转发到另外一个路由器。
相关文章
|
13天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
37 6
|
4天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
1天前
|
网络协议 Linux Shell
【linux网络(一)】初识网络, 理解四层网络模型
【linux网络(一)】初识网络, 理解四层网络模型
|
1天前
|
安全 Ubuntu Linux
Linux 网络操作命令Telnet
Linux 网络操作命令Telnet
9 0
Linux 网络操作命令Telnet
|
2天前
|
Ubuntu Linux
Linux(22) Linux设置网络优先级顺序
Linux(22) Linux设置网络优先级顺序
3 0
|
2天前
|
Ubuntu 网络协议 Linux
Linux(20) Ubuntu 20.04 网络接口自动切换路由配置
Linux(20) Ubuntu 20.04 网络接口自动切换路由配置
24 0
|
7天前
|
存储 监控 安全
网络安全与信息安全:防范漏洞、应用加密、提升意识
【4月更文挑战第18天】 在数字化时代,网络安全与信息安全保障已成为维护国家安全、企业利益和个人隐私的关键。本文深入探讨网络安全的多面性,包括识别和防御网络漏洞、应用加密技术保护数据以及提升全民网络安全意识的重要性。通过对这些关键领域的分析,文章旨在为读者提供实用的策略和建议,以增强其网络环境的安全防护能力。
10 0
|
7天前
|
算法 Linux 调度
深入理解Linux内核的进程调度机制
【4月更文挑战第17天】在多任务操作系统中,进程调度是核心功能之一,它决定了处理机资源的分配。本文旨在剖析Linux操作系统内核的进程调度机制,详细讨论其调度策略、调度算法及实现原理,并探讨了其对系统性能的影响。通过分析CFS(完全公平调度器)和实时调度策略,揭示了Linux如何在保证响应速度与公平性之间取得平衡。文章还将评估最新的调度技术趋势,如容器化和云计算环境下的调度优化。
|
7天前
|
数据采集 机器学习/深度学习 数据挖掘
网络数据处理中的NumPy应用实战
【4月更文挑战第17天】本文介绍了NumPy在网络数据处理中的应用,包括数据预处理、流量分析和模式识别。通过使用NumPy进行数据清洗、格式化和聚合,以及处理时间序列数据和计算统计指标,可以有效进行流量分析和异常检测。此外,NumPy还支持相关性分析、周期性检测和聚类分析,助力模式识别。作为强大的科学计算库,NumPy在处理日益增长的网络数据中发挥着不可或缺的作用。
|
13天前
|
算法 Linux 调度
深度解析:Linux内核的进程调度机制
【4月更文挑战第12天】 在多任务操作系统如Linux中,进程调度机制是系统的核心组成部分之一,它决定了处理器资源如何分配给多个竞争的进程。本文深入探讨了Linux内核中的进程调度策略和相关算法,包括其设计哲学、实现原理及对系统性能的影响。通过分析进程调度器的工作原理,我们能够理解操作系统如何平衡效率、公平性和响应性,进而优化系统表现和用户体验。
20 3