本文是调协Linux系统网络性能的,主要介绍了route、netstat、tcpdump三种网络调谐测试工具的使用方法及其可实现的功能。
1.route
在配置网络时,要为机器指定接收数据包时该包要经过的路径。在Linux系统中,提供一个命令route,这个命令可以为ifconfig命令配置的网卡设置静态路由。这种设置工作通常在/etc/rc.d/rc.inet1中引入,在系统引导时进行。
下面通过几个例子来说明如何使用route命令:
route  add/del  [-net|-host]  target  [netmask Nm] [gw Gw] [[dev] If]
1)添加到主机路由举例:
route add -host 192.168.1.2 dev eth1
route add -host 10.20.30.148 gw 10.20.30.40
2)添加到网络路由举例:
route add -net 192.168.60.0 netmask 255.255.255.0 dev  eth0
route add -net 192.168.60.0 netmask 255.255.255.0 gw 192.168.60.254
3)添加默认路由举例:
route add default gw 192.168.1.1
4)删除路由举例:(把add–>del)
5)route -n解释
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.3.252 192.168.2.81  255.255.255.255 UGH   0      0     0 eth0
192.168.2.0     0.0.0.0          255.255.255.0    U     0      0      0   eth0
169.254.0.0     0.0.0.0         255.255.0.0         U     0      0      0   eth0
0.0.0.0         192.168.2.254  0.0.0.0                UG    0      0     0  eth0
–Destination:目标网段或者主机
–Gateway:网关地址,0.0.0.0表示目标是本机所属的网络,不要要路由。
–Genmask:网络掩码
–Flags:U表路由是活动的;H表目标是一主机;G表路由指向网关。
–Metirc:路由距离,到达指定网络所需的中转数(linux内核中没有使用)
–Ref:路由项引起次数(linux内核中没有使用)
–Use:此路由项被路由软件查找的次数
–Iface:该路由表项对应的输出接口
——————————————————————————————————————————
netstat
netstat命令是一个监控TCP/IP网络的非常有用的工具,它能显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
1)用法
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
-a或–all 显示所有连线中的Socket。
-A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
-c或–continuous 持续列出网络状态。
-C或–cache 显示路由器配置的快取信息。
-e或–extend 显示网络其他相关信息。
-g或–groups 显示多重广播功能群组组员名单。
-i或–interfaces 显示网络界面信息表单。
-l或–listening 显示监控中的服务器的Socket。
-M或–masquerade 显示伪装的网络连线。
-n或–numeric 直接使用IP地址,而不通过域名服务器。
-N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。
-o或–timers 显示计时器。
-p或–programs 显示正在使用Socket的程序识别码和程序名称。
-r或–route 显示Routing Table。
-s或–statistice 显示网络工作信息统计表。
-t或–tcp 显示TCP传输协议的连线状况。
-u或–udp 显示UDP传输协议的连线状况。
2)常用的命令
netstat -npl
netstat -ntu
netstat -r
——————————————————————————————————————————
tcpdump
tcpdump命令用于监视TCP/IP连接并直接读取数据链路层的数据包头。您可以指定哪些数据包被监视、哪些控制要显示格式。
1)用法
tcpdump [-adeflnNOpqStvx ] [ -c 数量] [-F 文件名 ] [-i 网络接口] [-r 文件] [-s snaplen] [-T 类型] [-w 文件名] [表达式]
2)可使用的关键字
协议:-p ip, tcp,udp,icmp,arp等
数据包:src,dst,port,src port,dst port,host,net
运算符:or,and,not(!)
3)TCP包的一般输出格式如下:
src.port > dst.port: flags data-Seq ack win urgent options
flags:TCP包中的标志信息,S 是SYN标志,F (FIN), P (PUSH),R (RST), “.” (没有标记)
data-Seq: 是数据包中Sequence number(顺序号码)
ack:  Acknowledge number(确认号码)
window是接收缓存的窗口大小,
urgent表明数据包中是否有紧急指针.
4)举例
a.查看源地址为192.168.100.3的icmp包
tcpdump -n -i eth0 -p icmp and src 192.168.2.13
b.查看目的地址为192.168.13.21或者192.168.13.22 tcp80端口的数据包
tcpdump -n -i eth0 -p tcp port 80 and \(dst 192.168.13.21 or 192.168.13.22\)
c.统计1000个数据包中的ip连接量,并按从多到少的顺序排序,列出前3名
tcpdump -i eth0 -tnn -c 1000| awk -F “.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c |sort -nr | head -n 3
d.获取ftp密码实例
在服务端开通ftp服务,并执行tcpdump -X -i eth0 -p tcp port 21 >ftptest.log
客户端192.168.100.22通过ftp账号密码访问服务端
grep  ”USER\.”    ftptest.log 可获取ftp账号,grep “PASS\.”  ftptest.log可获取ftp密码