Linux下调整网卡的工作模式

Linux下调整网卡的工作模式,第1张

现在的网卡一般都是10/100M自适应工作模式,在配置网卡参数时我们很少考虑它的工作模式,但是在路由器、交换机、代理服务器等通信量比较大的关键设备上,我们应该为它指定正确的工作模式,这样可以提高通信效率。在Linux环境下,我们可以使用系统自带的工具mii-tool(这是专门设置网卡工作模式的命令)来配置网卡工作模式。下面我们具体来谈一下它的使用方法。

1 查看网卡的工作模式,输入命令:

#mii-tool -v

eth0: negotiated 100baseTx-FD,link ok

product info:Vendor 00:05:be,model 8 rev 0

basic status: autonegotiation complete,link ok

basic mode:autonegotiation enabled

Capabilities:

从以上信息中可以看出,这块网卡工作在100M全双工自适应模式下,“100BaseTx-FD”意为100M Full Duplex。

2 更改网卡的工作模式,输入命令:

#mii-tool -F media [interface]

media可选的模式有100baseTx-FD、100baseTx-HD、10baseT-FD、10baseT-HD等。 Interface代表所选择的网卡,如eth0、eth1等,默认为eth0。

例如,设置网卡工作在10M半双工模式下,输入命令:

#mii-tool -F 10baseT-HD eth0

3 恢复网卡的自适应工作模式,输入命令:

#mii-tool -r eth0

更详细的使用方法可以用mii-tool -h来获得。

  在《调谐LINUX网络性能之调试工具篇》和《调谐LINUX网络性能之网络配置文件详解》两篇文章中,我们介绍了route、netstat、tcpdump三种网络调谐测试工具的使用方法及其可实现的功能和网络配置文件的内容,本文我们将从实战的角度介绍网络性能调谐的方法。

  

  下面,我们先来介绍网络性能调谐的第一种方法:服务方式选择。

  

  服务方式选择

  

  网络服务器由于要同时为多个客户提供服务,就必须使用某种方式来支持这种多任务的服务方式。一般情况下可以有三种方式来选择,多进程方式、多线程方式及异步方式。其中,多进程方式中服务器对一个客户要使用一个进程来提供服务,由于在操作系统中,生成一个进程需要进程内存复制等额外的开销,这样在客户较多时的性能就会降低。为了克服这种生成进程的额外开销,可以使用多线程方式或异步方式。在多线程方式中,使用进程中的多个线程提供服务,由于线程的开销较小,性能就会提高。事实上,不需要任何额外开销的方式还是异步方式,它使用非阻塞的方式与每个客户通信,服务器使用一个进程进行轮询就行了。异步方式下,多个任务之间的调度是由服务器程序自身来完成的,而且一旦一个地方出现问题则整个服务器就会出现问题,不在讨论的范围内。增大系统线程的数量:限制线程的数量的因素很多,主要有进程数量的限制,内存大小的限制,mutex/semaphore/shm/ipc的限制;一般情况下先增大进程最大数,再扩充内存,在增大线程最大数,而增大线程最大数的方法很简单,只需改变glibc中两处即可:线程最大数和线程堆栈区的大小;线程最大数的增加是以进程的异步 I/O性能下为代价;所以需要加以平衡。

  

  络配置文件中有用的内容

  

  1 对于数据库而言,增大共享内存段和信号量的多少,对数据传输效率的提高起到很重要的作用;

  

  方法:只需编辑文件linux/include/linux/semh和linux/include/asm-i386/shmparamh即可。

  

  2 先增大进程最大数,再扩充内存,再增大线程最大数,而增大线程最大数的方法很简单,只需改变glibc中两处即可:线程最大数和线程堆栈区的大小;

  

  3 把"/etc/inittab"文件中的一行注释掉可以禁止用Control-Alt-Delete关闭计算机。如果服务器不是放在一个安全的地方,这非常重要。

  

  编辑inittab文件(vi /etc/inittab)把这一行:

  

  ca::ctrlaltdel:/sbin/shutdown -t3 -r now

  

  改为:

  

  #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

  

  用下面的命令使改变生效:

  

  [root@deep]# /sbin/init q

  

  4 /etc/hostconf 文件指定如何解析主机名。Linux通过解析器库来获得主机名对应的IP地址。下面是一个"/etc/hostconf"的示例:

  

  order bind,hosts :指定主机名查询顺序,这里规定先使用DNS来解析域名,然后再查询"/etc/hosts"文件(也可以相反)。

  

  可以在该文件后加上以下两句:

  

  multi on:指定的主机可以有多个地址,拥有多个IP地址的主机一般称为多穴主机。

  

  ospoof on:指不允许对该服务器进行IP地址欺骗,以提高服务器的安全性。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算机,来取得其它计算机的信任。

  

  可调谐的Linux内核网络参数

  

  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请求广播的。

  

  应用实例:

  

  在我的RedHat6x和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

  

  tcp相关内核配置参数

  

  通过tcp配置参数可以控制tcp会话过程中的各个方面。

  

  (1) tcp_fin_timeout:在一个tcp会话过程中,在会话结束时,A首先向B发送一个fin包,在获得B的ack确认包后,A就进入FIN WAIT2状态等待B的fin包然后给B发ack确认包。这个参数就是用来设置A进入FIN WAIT2状态等待对方fin包的超时时间。如果时间到了仍未收到对方的fin包就主动释放该会话。参数值为整数,单位为秒,缺省为180秒。

  

  (2) tcp_syn_retires:设置开始建立一个tcp会话时,重试发送syn连接请求包的次数。 参数值为小于255的整数,缺省值为10。假如你的连接速度很快,可以考虑降低该值来提高系统响应时间,即便对连接速度很慢的用户,缺省

Linux是一套免费使用和自由传播的类Unix操作系统,它速度快,运行稳定,对硬件的配置要求低,兼具了其他操作系统的优点,最关键是可以免费使用,所以近几年内Linux得到了迅猛地发展。

说道Linux,不得不提起UNIX。由于UNIX的庞大的支持基础和发行系统,使得它(指UNIX)成为世界范围内最有影响和最广泛使用的操作系统之一。起初UNIX是作为小型机和大型机上的多任务系统而开发的,尽管它有一些含糊不清的接口和缺少标准化等缺点,但是它仍然很快地发展成为广泛使用的操作系统。

许多计算机爱好者感到UNIX正是他们想要的东西。但是由于商业版UNIX非常昂贵昂贵,而且源代码是有专利的,所以很难在计算机爱好者中广泛使用。于是,出现这样一群人,他们是一支由编成高手、业余计算机玩家、黑客们组成的奇怪队伍,完全独立地开发出一个在功能上毫不逊色于商业UNIX操作系统的全新免费UNIX操作系统——Linux

Linux作为一个PC机上的一种32位Unix操作系统出现,是1991年下半年的事情。当时,年仅23岁的大学生Linus Torvalds写这个操作系统的时候是为了作一个试验,写一个比当时流行的MINIX操作系统具有更多功能,更成熟的小型操作系统。虽然最初的Linux系统很小,功能也不多,但是,随着Internet的发展,Linux系统也被来自世界各地的数以千计的人(高手)不断扩充和完善,今天,Linux在很多方面已经领先了商业性的Unix系统。它可以运行在包括Intel处理器、Motorola的M68k处理器及DEC的Alphas等多种硬件平台, 是真正的多用户、多任务的32位操作系统。象现代Unix操作系统那样,它也具有虚拟内存、共享库、命令装载、执行代码之间共享的拷贝-执行-写盘页操作、恰当的内存管理和TCP/IP网络等。

Linux是一个遵循POSIX(Portable Operating System Interface)标准的免费操作系统。具有BSD和SYSV的扩展特性(表明其在外表和性能上同常见的UNIX非常相像,但是所有系统核心代码已经全部被重新编写了)。它的版权所有者是芬兰籍的Linus Torvalds先生和其他开发人员,并且遵循GPL声明(GNU General Public License——GNU通用公共版权协议)。

Linux的许多其它应用程序是由自由软件基金会(FSF)开发的。全世界许多热心的使用者为Linux开发或者移植了许多应用程序,包括X-Windows、Emacs、TCP/IP网络(包括 SLIP/PPP/ISDN)等等,现在Linux(包括内核和大量的应用程序)光是执行程序已经达到200M的规模,完全安装以后的规模将更大(大约500M左右)。

使用Linux可以在相对低价的Intel X86硬件平台上实现高档系统才具有的性能,许多用户使用benchmarks在运行Linux的X86机器上测试,发现可以和Sun和Digital公司的中型工作站的性能媲美。事实上不光是许多爱好者和程序员在使用Linux,许多商业用户比如Internet服务供应商(ISP)也使用Linux做为服务器代替昂贵的工作站。这些服务器的最高记录是经过600天的运行没有碰到一次系统崩溃!

在Linux上可以运行大多数UNIX程序:TeX,X-Window系统,GNU C/C++编译器……它让用户在家中就可以享受UNIX的全部功能。如今有越来越多的商业公司采用Linux作为操作系统,例如,科学工作者使用Linux来进行分布式计算;ISP使用Linux配置Internet服务器、电话拨号服务器来提供网络服务;CERN(欧洲核子中心)采用Linux做物理数据处理;美国1998年1月最卖座的影片《泰坦尼克号》片中的计算机动画的设计工作就是在Linux平台上进行的。更为有趣的是,1997年把年度最佳技术支持奖颁给了Linux,给批评自由软件没有良好服务的人好好地上了一课。越来越多的商业软件公司宣布支持Linux,如Corel和Borland公司。在国外的大学中很多教授用Linux来讲授操作系统原理和设计。当然,对于大多数用户来说最重要的一点是,现在我们可以在自己家中的计算机上进行UNIX编程,享受阅读操作系统的全部源代码的乐趣!

正是Linux具有功能强大,性能出众,稳定可靠的操作系统,吸引着越来越多的使用者来使用它,测试修改软件中的错误。在短短的几年时间里Linux以超常的速度发展,已经从一个丑小鸭变成一个拥有广大用户群的真正优秀的、值得信赖的操作系统。根据不精确的统计,全世界使用Linux操作系统的人已经有数百万之多(这一数字还在以惊人的速度增加着),而且绝大多数是在网络上使用的。而在中国,随着Internet大潮的卷入,一批主要以高校的学生和ISP的技术人员组成的Linux爱好者队伍也已经蓬勃地成长起来。可以说在中国,随着网络的不断普及,免费而性能优异的Linux操作系统必将发挥出越来越大的作用。

需要先知道DNS和DHCP的端口号才可以对其进行操作,一般默认DNS端口号为53,DHCP的默认端口号是67,68。

一般关闭端口的使用命令:iptables -A INPUT -p tcp --drop 53-j DROP

iptables -A OUTPUT -p tcp --dport 53-j DROP

一般打开端口使用命令:iptables -A INPUT -ptcp --dport 端口号-j ACCEPT或者nc -lp 23

查看端口是否打开使用命令:netstat -an | grep 53

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Linux下调整网卡的工作模式

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情