Linux 中动态重新配置和调整介绍
Linux有它自己调整内核和连网参数的特殊方式。Linux没有提供一个普通配置文件供读取来设置这些参数,而是把能调整的每个变量的表示都放在虚拟文件系统/proc 下。连网变量都在目录/proc/sys/net/ipv4下:
名字里带有rate和max的变量有许多都可以防止发生DoS(denial of service,拒绝服务)攻击。conf子目录包含的变量都是按接口来设置的。它包含子目录all和default,还有每个接口的一个子目录(包括环回接口)。每个子目录都包含一组相同的文件。
如果您改动了子目录 all 里的什么地方,那么您的改动会施加到所有的接口上。如果您修改了,比如说子目录eth0里的同一个变量,那么只有这个接口才受影响。defaults子目录包含原来带有的默认值。
neigh目录里也为每个接口包含一个子目录。每个子目录的文件为那个特定接口管理ARP表以及发现IPv6邻居。下面列出了若干变量,以gc开头的那些变量(代表garbage collection)决定了ARP表项是怎样超期和被丢弃的。
用cat可以看到一个变量的值,用重定向到适当文件名的echo命令可以设置它的值。例如,命令:
$ cat icmp_echo_ignore_broadcasts 0
显示这个变量的值是0,这意味着不会忽略广播ping。要把它设置为1(从而避免遭受smurf类的拒绝服务攻击),可以在/proc/sys/net下运行:
$ sudo sh -c "echo 1 > icmp_echo_ignore_broadcasts"
在您调整这些变量的时候,您一般是通过您正在调整的网络登录进来的,所以要小心!您可能会把事情搞糟,结果不得不从控制台重新启动才能恢复,如果系统碰巧在是阿拉斯加的Point Barrow,时间又是1月份,那可就麻烦了。在您考虑在一台工作主机上动手之前,先在台式机上试着调整一下这些变量。
若要永久改变这些参数的任何一个(或者更准确地说,在系统每次启动的时候再次重置它们),就要把正确的变量加到/etc/sysctl.conf文件里,在系统引导时sysctl命令会读这个文件。sysctl.conf文件的格式为 variable=value,而不是您在 shell 里手工修改这个变量时要运行的命令 echo value > variable。变量名是相对于/proc/sys 的路径名,如果愿意,您还可以使用圆点(.)来代替斜线(/)。例如,/etc/sysctl.conf文件里有下面两行中的任何一行都会关闭(这台主机的)IP转发功能。
net.ipv4.ip_forward=0 net/ipv4/ip_forward=0
/usr/src/linux/Documentation/proc.txt这个文档是由SUSE的爱好者写的,它是有关用/proc调整内核不错的入门教材22。它告诉您各个变量的真实含义是什么,有时还给出了建议值。文件proc.txt稍微有点儿过时,因为写Linux代码的人似乎比写这个文档的人速度快一些相关阅读:
用asp实现的截取指定格式字符串的代码
详细讲解JS节点知识
SQLserver 实现分组统计查询(按月、小时分组)
在web上管理MySQL:phpMyAdmin使用讲解
“疯狂的企鹅” 看Linux安全的未来
PHP与javascript对多项选择的处理
如何在Jsp中使用JDBC来联结MySql
CSS制作具亲和力的表格
自定义容器和字体大小
纯js实现的论坛常用的运行代码的效果
使用SQLServer2000报表工具
VBS教程:函数-CLng 函数
Windows 7 RTM、Vista、XP 性能测试
Win 2003下编辑组策略对象上的安全设置