热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

当前位置 :| 主页>Linux教程>内核研究>

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

来源: 作者: 时间:2007-01-08 Tag: 点击:
  摘要:

  本文主要介绍了linux系统位于目录/proc/sys/net/ipv4/下的部分内核网络参数,同时对通过linux内核网络参 数的调整来提高linux系统的安全性和稳定性提出了自己的见解。从而为系统管理员进一步增强网络的安全性和系统的稳定性提供了参考。

  在linux中,我们可以根据不同的需求来调整/proc/sys/net/ipv4/目录下的内核网络参数,通过合理的配置这里 内核网络参数,从而达到提高网络的安全性和系统的稳定性的目的。因为这方面的文献比较少,所以我们不可能进行全面的介绍。现在已经有linux组织正在从 事这方面的文档的写作,相信在不久的将来,我们就会看到比较完整的文档。下面我们就来看一看一些比较常用的内核网络参数。

  注意:

  1. 参数值带有速度(rate)的参数不能在loopback接口上工作。

  2.因为内核是以HZ为单位的内部时钟来定义速度的,通常速度为100HZ,所以设定一个参数值为100就表示允许1个包/秒,假如为20则允许5个包/秒。

  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秒响应一次。

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风暴。

  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包的一些特定的参数,除此之外还定义了系统的一些网络特性。

  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转发。

  应用实例:

  假设我们使用一部装有双网卡的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
五、 针对每一网络接口的内核网络参数
上一篇:没有了
下一篇:Linux内核2.6简介


相关文章:
精通initramfs构建step by step
Linux利用kexec迅速切换内核
进程上下文VS中断上下文
内核通知链 学习笔记
linux spi子系统驱动分析
menuconfig 配置选项
《Linux操作系统内核实习》之练习一
udev详解
什么叫微内核,宏内核?
Linux 信号signal处理机制
开发简单的 Linux2.6 内核模块
删除内核的perl脚本
Linux2.6内核usb gadget驱动移植
GCC hacks in the Linux kernel
iomem
kernel学习的想法
让自己的驱动支持udev
linux内核编译步骤
内核的等待队列
Linux内核wait_queue深入分析
升级和删除内核
SD卡驱动分析2
Linux Kernel VDSO本地权限提升漏洞
内核中的TCP的追踪分析-15-TCP(IPV4)的客户端与
linux 2.6内核可加载模块的编译
内核模块HelloWorld
在环回接口上发送一个数据报
ARP初始化
1分钟编译FreeBSD内核
linux设备模型之uart驱动架构分析