2) 网卡驱动程序所在目录
/lib/modules/2.6.29.4-167.fc11.i686.PAE/kernel/drivers/net
3) 查看网卡信息命令
ethtool eth0 (^ 查看网卡信息 ^)
dmesg | grep -i eth (^ 查看网卡信息 ^)
1 tcpdump
http://anheng.com.cn/news/24/586.html
1.1 tcpdump的选项介绍
tcpdump
-a 将网络地址和广播地址转变成名字;
-c 在收到指定的包的数目后, tcpdump就会停止;
-ddd 将匹配信息包的代码以十进制的形式给出;
-dd 将匹配信息包的代码以c语言程序段的格式给出;
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-e 在输出行打印出数据链路层的头部信息;
-F 从指定的文件中读取表达式,忽略其它的表达式;
-f 将外部的Internet地址以数字的形式打印出来;
-i 指定监听的网络接口;
-l 使标准输出变为缓冲行形式;(即: 将数据重定向)
-nn 不进行端口名称的转换.
-n 不把网络地址转换成名字;
-N 不打印出默认的域名.
-O 不进行匹配代码的优化.
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-tt 打印原始的,未格式化过的时间.
-T 将监听到的包直接解释为指定的类型的报文, 常见的类型有rpc(远程过
-t 在输出的每一行不打印时间戳;
-vv 输出详细的报文信息;
-v 输出一个稍微详细的信息, 例如在ip包中可以包括ttl和服务类型的信息;
-w 直接将包写入文件中, 并不分析和打印出来;
程调用)和snmp(简单网络管理协议;);
Note: 如想dump包给别的软件分析, tcpdump的包长度限制截断默认90个字节一定要去掉.
即: 加上 -s 0 参数.
1) example
tcpdump -l > tcpcap.txt (^ 将得到的数据存入tcpcap.txt文件中 ^)
1.2 tcpdump的表达式介绍
1) 第一种是关于类型的关键字, 主要包括host, net, port, 例如 host 210.27.48.2,
指明 210.27.48.2是一台主机, net 202.0.0.0 指明 202.0.0.0是一个网络地址,
port 23 指明端口号是23. 如果没有指定类型, 缺省的类型是host.
2) 第二种是确定传输方向的关键字, 主要包括src , dst ,dst or src, dst and src ,
这些关键字指明了传输的方向. 举例说明, src 210.27.48.2 ,指明ip包中源地址是
210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 . 如果没有指明
方向关键字, 则缺省是src or dst关键字.
3) 第三种是协议的关键字, 主要包括fddi,ip,arp,rarp,tcp,udp等类型. Fddi指明是在
FDDI(分布式光纤数据接口网络)上的特定的网络协议, 实际上它是"ether"的别名,
fddi和ether具有类似的源地址和目的地址, 所以可以将fddi协议包当作ether的包进
行处理和分析. 其他的几个关键字就是指明了监听的包的协议内容. 如果没有指定任
何协议, 则tcpdump将会监听所有协议的信息包.
4) 除了这三种类型的关键字之外, 其他重要的关键字如下: gateway,
broadcast,less,greater,还有三种逻辑运算, 取非运算是 'not' '!', 与运算是
'and','&&';或运算 是'or' ,'||'; 这些关键字可以组合起来构成强大的组合条件
来满足人们的需要, 下面举几个例子来说明.
1.3 例子
note: tcpdump 对截获的数据并没有进行彻底解码, 数据包内的大部分内容是使用十六进
制的形式直接打印输出的. 显然这不利于分析网络故障, 通常的解决办法是先使用带
-w参数的tcpdump 截获数据并保存到文件中, 然后再使用其他程序进行解码分析. 当
然也应该定义过滤规则, 以避免捕获的数据包填满整个硬盘.
note: 如果在ethernet 使用混杂模式 系统的日志将会记录
| May 7 20:03:46 localhost kernel: eth0: Promiscuous mode enabled. |
| May 7 20:03:46 localhost kernel: device eth0 entered promiscuous mode |
| May 7 20:03:57 localhost kernel: device eth0 left promiscuous mode |
note: ip icmp arp rarp 和 tcp,udp,icmp这些选项等都要放到第一个参数的位置,
用来过滤数据报的类型.
tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3) // 截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信
tcpdump host 210.27.48.1 // 截获主机210.27.48.1所有收到的和发出的所有的数据包
tcpdump -i eth0 dst host hostname // 监视所有发送到主机hostname的数据包
tcpdump -i eth0 gateway Gatewayname // 还可以监视通过指定网关的数据包
tcpdump -i eth0 host ! 211.161.223.70 and ! 211.161.223.71 and dst port 80
// 如果条件很多的话 要在条件之前加and 或 or 或 not
tcpdump -i eth0 host hostname and dst port 80 // 只监视发送到80端口的数据包
tcpdump -i eth0 host hostname and port 80 // 监视指定端口的TCP或UDP数据包
tcpdump -i eth0 src host hostname // 只对名为hostname的主机的发出数据包进行监视
tcpdump ip host 210.27.48.1 and ! 210.27.48.2 // 获取主机210.27.48.1和除了主机210.27.48.2之外所有主机通信的ip包
tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24
// 源主机为192.168.0.1与目的网络为192.168.0.0
Tcpdump src host 192.168.0.1 and dst port not telnet
// 过滤源主机192.168.0.1和目的端口不是telnet的报头.
tcpdump tcp port 23 host 210.27.48.1 // 获取主机210.27.48.1接收或发出的telnet包
tcpdump udp and src host 192.168.0.1 // 只过滤源主机192.168.0.1的所有udp报头.
tcpdump udp port 123 // 对本机的udp 123 端口进行监视.(123 为ntp的服务端口)
1.4 tcpdump的输出结果介绍
1.4.0 other
[~]# tcpdump -i eth1 src host 211.167.237.199
| 00:02:03.096713 IP 211.167.237.199.ssh > 221.216.165.189.1467: P 2010208:2010352(144) ack 33377 win 8576 |
| 00:02:03.096951 IP 211.167.237.199.ssh > 221.216.165.189.1467: P 2010352:2010496(144) ack 33377 win 8576 |
| 00:02:03.100928 IP 211.167.237.199.ssh > 221.216.165.189.1467: P 2010496:2010640(144) ack 33377 win 8576 |
| 00:02:03.101165 IP 211.167.237.199.ssh > 221.216.165.189.1467: P 2010640:2010784(144) ack 33377 win 8576 |
| 00:02:03.102554 IP 211.167.237.199.ssh > 221.216.165.189.1467: P 2010784:2010928(144) ack 33425 win 8576 |
analysis: 表明在00:02:03点的时候, 211.167.237.199通过ssh源端口连接到221.216.165.189的1467端口
// 截获所有由eth1进入,源地址(src)为211.167.237.199的主机(host), 并且(and)目标
// (dst)端口(port)为1467的数据包:
[~]# tcpdump -i eth1 src host 211.167.237.199 and dst port 1467
| 00:09:27.603075 IP 211.167.237.199.ssh > 221.216.165.189.1467: P 180400:180544(144) ack 2833 win 8576 |
| 00:09:27.605631 IP 211.167.237.199.ssh > 221.216.165.189.1467: P 180544:180688(144) ack 2881 win 8576 |
// 观看网卡传送,接收数据包的状态
[~]$ netstat -i
| Kernel Interface table |
| Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg |
| eth0 1500 0 14639 0 0 0 5705 119 0 0 BMRU |
analysis: 各字段意思:
Iface: 网卡
RX-OK RX-ERR RX-DRP RX-OVR : 网卡正确接收数据包的数量以及发生错误,流失,碰撞的总数
TX-OK TX-ERR TX-DRP TX-OVR : 网卡正确发送数据包的数量以及发生错误,流失,碰撞的总数
1.4.1 数据链路层头信息
[~]# tcpdump -e host ice
| 21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357
> ice.telne t 0:0(0) ack 22535 win 8760
(DF) |
// ice是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A; H219是一台装有SOLARIC
// 的SUN工作站,它的MAC地址是8:0:20:79:5B:46; 上一条命令的输出结果如下所示:
analysis: 21:50:12是显示的时间,847509是微秒, eth0<表示从网络接口eth0接受该数据包
; eth0>表示从网络接口设备发送数据包,8:0:20:79:5b:46是主机H219的MAC地址. 它表
明是从源地址H219发来的数据包.0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据
包的目的地址是ICE.ip是表明该数据包是IP数据包,60是数据包的长度,
h219.33357>ice.telnet表明该数据包是从主机H219的33357端口发往主机ICE的
TELNET(23)端口.ack22535表明对序列号是22535的包进行响应.win8760表明发送窗
口的大小是8760.
1.4.2 ARP包的TCPDUMP输出信息
[~]# tcpdump arp
| 22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a) |
| 22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66
(0:90:27:58:af:1a) |
analysis: 22:32:42是时间戳, 802509是微秒, eth0 >表明从主机发出该数据包, arp表
明是ARP请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址.
0:90:27:58:af:1a是主机ICE的MAC地址.
1.4.3 TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息格式是:
src > dst: flags data-seqno ack window urgent options
analysis: src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标
志, F (FIN), P
(PUSH) , R (RST) "."
(没有标记); data-seqno是数据包中的数据
的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数
据包中是否有紧急指针. Options是选项.
1.4.4 UDP包的输出信息
用TCPDUMP捕获的UDP包的一般输出信息格式是:
route.port1 > ice.port2: udp lenth
analysis: UDP十分简单, 上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据
包到主机ICE的port2端口, 类型是UDP, 包的长度是lenth.
2 netstat
netstat主要用于Linux察看自身的网络状况, 如开启的端口,在为哪些用户服务, 以及服
务的状态等. 此外, 它还显示系统路由表,网络接口状态等. 可以说, 它是一个综合性的
网络状态的察看工具. 在默认情况下, netstat只显示已建立连接的端口. 如果要显示处
于监听状态的所有端口, 使用-a参数即可:
2.1 tcpdump的选项介绍
格式:
netstat [-acCeFghilMnNoprstuvVwx][-A][--ip]
参数:
-a--all: 显示所有连线中的Socket.
-A: 列出该网络类型连线中的IP相关地址和网络类型.
-C--cache: 显示路由器配置的缓冲区信息.
-c--continuous: 持续列出网络状态.
-e--extend: 显示网络其它相关信息.
-F--fib: 显示FIB.
-g--groups: 显示多重广播功能群组组员名单.
-h--help: 在线帮助.
-i--interfaces: 显示网络界面信息表单.
--ip--inet: 和指定"-A inet"参数相同.
-l--listening: 显示监控中的服务器的Socket.
-M--masquerade: 显示伪装的网络连线.
-N--netlink--symbolic: 显示网络硬件外围设备的符号连接名称.
-n--numeric: 直接使用IP地址, 而不通过域名服务器.
-o--timers: 显示计时器.
-p--programs: 显示正在使用Socket的程序识别码和程序名称.
-r--route: 显示Routing Table.
-s--statistice: 显示网络工作信息统计表.
-t--tcp: 显示TCP传输协议的连线状况.
-u--udp: 显示UDP传输协议的连线状况.
-v--verbose: 显示指令执行过程.
-V--version: 显示版本信息.
-w--raw: 显示RAW传输协议的连线状况.
-x--unix: 和指定"-A unix"参数相同.
2.2 应用实例
netstat -al | grep telnet // (&1&) 查看telnet是否正常启动到监听状态
netstat -aln | grep :23 // (&1&) 查看telnet是否正常启动到监听状态
netstat -tuln | grep ':80'
(^ 查看系统是否己启动某一端口号 ^)
netstat -r (^ 查看route表 ^)
netstat -s -u (^ 统计udp数据包信息 ^)
2.3 netstat的输出结果介绍
// 显示处于监听状态的所有端口, 使用-a参数即可:
[~]# netstat -a
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:32768 *:* LISTEN
tcp 0 0 *:32769 *:* LISTEN
tcp 0 0 *:nfs *:* LISTEN
tcp 0 0 *:32770 *:* LISTEN
tcp 0 0 *:868 *:* LISTEN
tcp 0 0 *:617 *:* LISTEN
tcp 0 0 *:mysql *:* LISTEN
tcp 0 0 *:netbios-ssn *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:10000 *:* LISTEN
tcp 0 0 *:http *:* LISTEN
......
Analysis: 上面显示出, 这台主机同时提供HTTP,FTP,NFS,MySQL等服务.
// 观看网卡传送,接收数据包的状态
[~]$ netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 14639 0 0 0 5705 119 0 0 BMRU
Analysis: 各字段意思:
Iface: 网卡
RX-OK RX-ERR RX-DRP RX-OVR : 网卡正确接收数据包的数量以及发生错误,流失,碰撞的总数
TX-OK TX-ERR TX-DRP TX-OVR : 网卡正确发送数据包的数量以及发生错误,流失,碰撞的总数
3 ping
ping检测主机网络接口状态, 使用权限是所有用户.
3.1 ping的选项介绍
格式:
ping [-dfnqrRv][-c][-i][-I][-l][-p][-s][-t]
IP地址
参数:
-d: 使用Socket的SO_DEBUG功能.
-c: 设置完成要求回应的次数.
-f: 极限检测.
-i: 指定收发信息的间隔秒数.
-I: 网络界面使用指定的网络界面送出数据包.
-l: 前置载入, 设置在送出要求信息之前, 先行发出的数据包.
-n: 只输出ip, 不试着输出域名.
-p: 设置填满数据包的范本样式.
-q: 不显示指令执行过程, 开头和结尾的相关信息除外.
-r: 忽略普通的Routing Table, 直接将数据包送到远端主机上.
-R: 记录路由过程.
-s: 设置数据包的大小.
-t: 设置存活数值TTL的大小.
-v: 详细显示指令的执行过程.
Note:
ping命令是使用最多的网络指令, 通常我们使用它检测网络是否连通, 它使用 ICMP协议.
但是有时会有这样的情况, 我们可以浏览器查看一个网页, 但是却无法ping通, 这是因为
一些网站处于安全考虑安装了防火墙. 另外, 也可以在自己计算机上试一试, 通过下面的
方法使系统对ping没有反应:
[~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
3.2 例子
// 每隔2秒发送一个数据包
ping -i 2 localhost
4 arp
显示和修改地址解析协议(ARP)使用的"IP 到物理"地址转换表.
4.1 arp的选项介绍
ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]
-a 通过询问当前协议数据, 显示当前 ARP 项. 如果指定 inet_addr, 则只
显示指定计算机的 IP 地址和物理地址. 如果不止一个网络接口使用
ARP, 则显示每个ARP 表的项.
-g 与 -a 相同.
-v 在详细模式下显示当前 ARP 项. 所有无效项和环回接口上的项都将显示
inet_addr 指定 Internet 地址.
-N if_addr 显示 if_addr 指定的网络接口的 ARP 项.
-d 删除 inet_addr 指定的主机. inet_addr 可以是通配符 *, 以删除所有
主机.
-s 添加主机并且将 Internet 地址 inet_addr与物理地址 eth_addr 相关
联. 物理地址是用连字符分隔的 6 个十六进制字节. 该项是永久的.
eth_addr 指定物理地址.
if_addr 如果存在, 此项指定地址转换表应修改的接口的 Internet 地址. 如果
不存在, 则使用第一个适用的接口.
4.2 示例:
arp -d 10.3.10.254 // Remove any entry for host: 10.3.10.254
arp -d IP // 删除
arp -s IP MAC // 添加
arp // 查看ARP缓存
4.3 arp输出解释 ?????
// 添加静态项. 这个很有用, 特别是局域网中中了arp病毒以后
[~]$ arp -s 123.253.68.209 00:19:56:6F:87:D2
Note: arp -s 设置的静态项在用户登出之后或重起之后会失效, 如果想要任何时候都
不失效, 可以将ip和mac的对应关系写入arp命令默认的配置文件/etc/ethers中,
写入之后执行下面的命令就好了.
[~]# vi /etc/ethers
| 211.144.68.254 00:12:D9:32:BF:44 |
5. ifconfig
5.1 ifconfig的选项介绍
语 法:
ifconfig [interface][down up -allmulti -arp -promisc][add<地址>][del<
地址>][<class> <address>][io_addr][irq
][media<网络>媒介类型
>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask< >子网掩码
>][tunnel<地址>][-broadcast<地址>] [-pointopoint<地址>>][IP地址]
参 数: ( - 应该是 [-] )
add<地址> 设置网络设备IPv6的IP地址.
-allmulti 允许或禁止组播模式(all-multicast). 如果选用, 则接口可以接收网络上的所有组播分组.
-broadcast<地址> 设置广播地址
del<地址> 删除网络设备IPv6的IP地址.
down 关闭指定的网络设备.
dstaddr addr 为点到点链路(如 PPP )设定一个远程 IP 地址. 此选项现已废弃; 用 pointopoint 选项替换.
hw class address 如接口驱动程序支持, 则设定接口的硬件地址.
[Interface] 指定网络设备的名称.
io_addr 设置网络设备的I/O地址.
[IP地址] 指定网络设备的IP地址.
irq addr 为接口设定所用的中断值. 并不是所有的设备都能动态更改自己的中断值.
media<网络媒介类型> 设置网络设备的媒介类型.
mem_start<内存地址> 设置网络设备在主内存所占用的起始地址.
metric<数目> 指定在计算数据包的转送次数时, 所要加上的数目.
mtu<字节> 设置网络设备的MTU.
multicast 为接口设定组播标志. 通常无须用此选项因为接口本身会正确设定此标志.
netmask<子网掩码> 设置网络设备的子网掩码.
-pointopoint<地址> 与指定地址的网络设备建立直接连线, 此模式具有保密功能.
-promisc 关闭或启动指定网络设备的promiscuous模式.
tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址.
txqueuelen length 为接口设定传输队列的长度
up 启动指定的网络设备.
media type 设定接口所用的物理端口或介质类型. 并不是所有设备都会更改这
项值, 而且它们支持的类型可能并相同. 典型的 type 是 10base2
(细缆以太网), 10baseT
(双绞线 10Mbps 以太网), AUI (外部
收发单元接口)等等. 介质类型为 auto 则用于让设备自动判断介
质. 同样, 并非所有设备都可以这样工作.
5.2 ifconfig的输出结果介绍
5.3 例子
ifconfig eth0:1 192.168.4.2 // 配置eth0别名设备eth0:1的IP
ifconfig eth0 192.168.4.1 netmask 255.255.255.0 up (^ 配置eth0的IP,同时激活设备 ^)
ifconfig eth0:1 up(down) // 示例3:激活(禁用)设备
ifconfig (eth0) // 示例4:查看所有(指定)网络接口配置
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx // 配置网卡的硬件地址
6. route
6.1 route的选项介绍
设置和查看路由表都可以用 route 命令, 设置内核路由表的命令格式是:
语 法:
route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
参 数:
add : 添加一条路由规则
del : 删除一条路由规则
dev : 为路由指定的网络接口
gw : 路由数据包通过的网关
-host : 目的地址是一个主机
netmask : 目的地址的网络掩码
-net : 目的地址是一个网络
target : 目的网络或主机
6.2 tcpdump的输出结果介绍
[root scr]$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.4.0 * 255.255.255.0 U 0 0 0 eth0
192.168.50.0 * 255.255.255.0 U 0 0 0 eth0
10.3.10.0 * 255.255.255.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 1002 0 0 eth0
default 10.3.10.254 0.0.0.0 UG 0 0 0 eth0
analysis: route 命令的输出项说明
(输出项) (说明)
Destination 目标网段或者主机
Gateway 网关地址, "*" 表示目标是本主机所属的网络, 不需要路由
Genmask 网络掩码
Flags 标记. 一些可能的标记如下:
U - 路由是活动的
H - 目标是一个主机
G - 路由指向网关
R - 恢复动态路由产生的表项
D - 由路由的后台程序动态地安装
M - 由路由的后台程序修改
! - 拒绝路由
Metric 路由距离, 到达指定网络所需的中转数
Ref 路由项引用次数(linux 内核中没有使用)
Use 此路由项被路由软件查找的次数
Iface 该路由表项对应的输出接口
6.3 例子
route add default gw 10.3.10.254 // 添加默认网关
route add -host 192.168.4.1 gw 192.168.4.250 // 添加到主机的路由(UGH)
route add -host 192.168.4.2 dev eth0:1 // 添加到主机的路由(UH)
route add -net 192.168.4.0/24 eth0 // (&1&) 添加到网络的路由(U)
route add -net 192.168.4.0/24 gw 192.168.4.2 eth0 // (&4&) 添加到网络的路由(UG)
route add -net 192.168.4.0 netmask 255.255.255.0 eth0
// (&1&) 添加到网络的路由(U)
route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.4.2 eth0
// (&4&) 添加到网络的路由(UG)
route del -host 192.168.4.1 // (&3&) 删除到主机的路由
route del -host 192.168.4.1 dev eth0 // (&3&) 删除到主机的路由
route del -net 0.0.0.0/0 // 删除默认网关
route del -net 192.168.4.0/24 eth0 // (&2&) 删除到网络路由
route del -net 192.168.4.0 netmask 255.255.255.0 eth0
// (&2&) 删除到网络路由
route -n // 查看路由信息, -n 表示不解析名字,列出速度会比route 快
route // 查看路由信息
7. ip
ip是iproute2软件包里面的一个强大的网络配置工具, 它能够替代一些传统的网络管理工
具. 例如: ifconfig,route等.
7.1 ip的选项介绍
语 法:
ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]
参数:
OPTIONS 是修改ip行为或改变其输出的选项. 所有的选项都是以-字符开头, 分为长,
短两种形式. 目前, ip支持如(表1)所示选项.
OBJECT 是要管理者获取信息的对象. 目前ip认识的对象见(表2)所示.
COMMAND 设置针对指定对象执行的操作, 它和对象的类型有关. 一般情况下, ip支持
对象的增加(add),删除(delete)和展示(show或list). 有些对象不支持这些
操作, 或者有其它的一些命令. 对于所有的对象, 用户可以使用help命令获
得帮助. 这个命令会列出这个对象支持的命令和参数的语法. 如果没有指定
对象的操作命令, ip会使用默认的命令. 一般情况下, 默认命令是list, 如
果对象不能列出, 就会执行help命令.
ARGUMENTS 是命令的一些参数, 它们倚赖于对象和命令. ip支持两种类型的参数:
flag和parameter. flag由一个关键词组成; parameter由一个关键词加一个
数值组成. 为了方便, 每个命令都有一个可以忽略的默认参数. 例如, 参数
dev是ip link命令的默认参数, 因此ip link ls eth0等于ip link ls dev
eth0. 我们将在后面的详细介绍每个命令的使用, 命令的默认参数将使用
default标出.
(表1: ip支持的选项)
-0 是-family link的简写.
-4 是-family inet的简写.
-6 是-family inet6的简写.
-f,-family 这个选项后面接协议种类, 包括inet,inet6或link, 强调使用的协
议种类. 如果没有足够的信息告诉ip使用的协议种类, ip就会使用
默认值inet或any. link比较特殊, 它表示不涉及任何网络协议.
-o,-oneline 对每行记录都使用单行输出, 回行用字符代替. 如果需要使用
wc,grep等工具处理ip的输出, 则会用到这个选项.
-r,-resolve 查询域名解析系统, 用获得的主机名代替主机IP地址
-s,-stats,-statistics 输出更为详尽的信息. 如果这个选项出现两次或多次, 则
输出的信息将更为详尽.
-V,-Version 打印ip的版本并退出.
(表2: ip认识的对象)
link 网络设备
address 设备的协议(ip或ipv6)地址
neighbour ARP或NDISC缓冲区条目
route 路由表条目
rule 路由策略数据库中的规则
maddress 多播地址
mroute 多播路由缓冲区条目
tunnel IP上的通道
Note: 从Linux-2.2开始, 内核把路由归纳到许多路由表中, 这些表都进行了编号, 编号
数字的范围是1到255. 另外, 为了方便, 还可以在 /etc/iproute2/rt_tables 中为路由
表命名. 默认情况下, 所有的路由都会被插入到表main(编号254)中. 在进行路由查询时
, 内核只使用路由表main.
Note: 策略路由(policy routing)不等于路由策略(rouing policy).在某些情况下, 我们
不只是需要通过数据包的目的地址决定路由, 可能还需要通过其他一些域: 源地址,IP协
议,传输层端口甚至数据包的负载.这就叫做: 策略路由(policy routing).
7.2 例子
ip -4 addr flush label "eth0"
// 取消所有以太网卡的IP地址
ip -4 route flush scope global type unicast
ip -6 -s -s route flush cache
[ip address add 0-- 添加一个新的协议地址; 缩写add, a. note:为了和Linux-2.0的网络别名兼容, 标签必须以设备名开头, 后接着一个冒号.]
ip address add 192.168.4.2/24 brd + dev eth1 label eth1:1
// 等于传统的: ifconfig eth1:1 192.168.4.2
ip address add local 192.168.4.1/28 brd + label eth0:1 dev eth0
[ip address delete 0--删除一个协议地址. 缩写: delete,del,d]
ip address delete 192.168.4.1/24 brd + dev eth0 label eth0:Alias1
[ip address flush--清除协议地址. 缩写: flush,f]
[ip address show 0--显示协议地址. 缩写: show,list,lst,sh,ls,l]
ip address show eth0
[ip link set 0-- 改变设备的属性. 缩写set: s]
ip link set dev eth0 address 00:01:4f:00:15:f1 // 修改网络设备的MAC地址.
ip link set dev eth0 mtu 1500 // 改变网络设备MTU(最大传输单元)的值.
ip link set dev eth0 txqueuelen 100 // 改变设备传输队列的长度.
ip link set dev eth0 up // up/down 起动/关闭设备; 等于传统的 # ifconfig eth0 up(down)
[ip link show 0-- 显示设备属性. 缩写show: list lst sh ls l. note: -s选项出现两次或者更多次, ip会输出更为详细的错误信息统计.]
[ip maddress 0-- 多播地址管理.缩写: show,list,sh,ls,l]
[ip maddress add 0-- 加入多播地址]
[ip maddress delete 0-- 删除多播地址 缩写: add,a; delete,del,d]
[ip maddress show 0-- 列出多播地址]
ip maddr ls dummy
ip monitor file /var/log/rtmon.log r
[ip monitor和rtmon 0-- 状态监视. 命令选项的格式: ip monitor [ file FILE
] [ all | OBJECT-LIST ]]
[ip mroute 0-- 多播路由缓存管理]
[ip mroute show 0-- 列出多播路由缓存条目.缩写: show,list,sh,ls,l]
ip mroute show // 查看
[ip neighbour 0--neighbour/arp表管理命令缩写 neighbour,neighbor,neigh,n. 命令 add,change,replace,delete,fulsh,show(或者list)]
[ip neighbour add 0-- 添加一个新的邻接条目]
ip neighbour add 10.0.0.3 lladdr 0:0:0:0:0:1 dev eth0 nud perm
// 增加arp
[ip neighbour change 0--修改一个现有的条目]
ip neighbour chg 10.0.0.3 dev eth0 nud reachable // 把状态改为reachable
[ip neighbour delete 0--删除一个邻接条目]
ip neighbour delete 10.0.0.3 dev eth0 // 删除设备eth0上的一个ARP条目10.0.0.3
[ip neighbour flush 0--清除邻接条目. 缩写: flush,f]
[ip neighbour replace 0--替换一个已有的条目.缩写: add,a; change,chg; replace,repl]
[ip neighbour show 0--显示网络邻居的信息. 缩写: show,list,sh,ls]
ip -o maddr ls dummy // 查看在网络接口上监听的链路层多播地址
ip -o route ls cloned | wc // 计算路由缓存里面的条数. 由于被缓存路由的属性可能大于一行, 以此需要使用-o选项
[ip route 0-- 路由策略数据库管理命令.命令:add,delete,show(或者list)]
[ip route add 0-- 添加新路由]
ip route add 10.0.0/24 via 193.233.7.65 // 设置到网络10.0.0/24的路由经过网关193.233.7.65
ip route add default scope global nexthop dev ppp0 nexthop dev ppp1
// 这个路由要经过网关而不是直连的.
ip route add nat 10.0.0.5 via 9.2.7.3 // 设置NAT路由. 在转发来自10.0.0.5的数据包之前, 先进行网络地址转换, 把这个地址转换为9.2.7.3
[ip route change 0-- 修改路由]
ip route chg 10.0.0/24 dev dummy // 修改到网络10.0.0/24的直接路由, 使其经过设备dummy
[ip route delete 0-- 删除路由 缩写: delete,del,d]
ip route delete default scope global nexthop dev ppp0 nexthop dev ppp1
// 删除上一节命令加入的多路径路由
[ip route flush 0-- 擦除路由表]
ip route flush cache // 清除所有ipv4路由cache
[ip route get 0-- 获得单个路由 .缩写: get,g]
ip route get 193.233.7.82 from 193.233.7.82 iif eth0
ip route get 193.233.7.82 // 搜索到193.233.7.82的路由
[ip route replace 0-- 替换已有的路由. 缩写: add,a; change,chg; replace,repl]
ip route replace default equalize nexthop via 211.139.218.145 dev eth0 weight 1 nexthop via 211.139.218.145 dev eth1 weight 1
// 实现数据包级负载平衡,允许把数据包随机从多个路由发出. weight 可以设置权重.
ip route replace default scope global nexthop dev ppp0 nexthop dev ppp1
[ip route show <0>table TABLEID 列出路由表TABLEID里面的路由. TABLEID或者是一个真正的路由表ID或者是/etc/iproute2/rt_tables文件定义的字符串, 或者是以下的特殊值: all: 列出所有表的路由; cache: 列出路由缓存的内容.]
[ip route show 0-- 列出路由 缩写: show,list,sh,ls,l]
ip route show 193.233.7.82 tab cache // // 列出cache路由表的内容
ip route show proto gated/bgp | wc // 计算使用gated/bgp协议的路由个数
ip route show table fddi153 // 列出某个路由表的内容
ip route show // 列出默认路由表的内容. 这个命令等于传统的: route
[ip rule add 0-- 插入新的规则]
ip rule add from 192.203.80/24 table inr.ruhep prio 220
// 通过路由表inr.ruhep路由来自源地址为192.203.80/24的数据包
ip rule add from 9.3.7.8 nat 9.0.0.4 table 1 prio 320
// 把源地址为9.3.7.8的数据报的源地址转换为9.0.0.4, 并通过表1进行路由
[ip rule delete 0-- 删除规则.缩写: add,a; delete,del,d]
ip rule del prio 32767 // 删除无用的缺省规则
[ip rule show 0-- 列出路由规则.缩写: show,list,sh,ls,l]
ip rule show // 列出路由规则
ip -s mroute ls 224.66/16 // 查看多播
ip -s neighbour ls 193.233.7.254
ip -s route flush proto gated/bgp
ip -s -s a flush to 10/8
ip -s -s link show eth0 // 等于传统的 ifconfig eth0
ip -s -s neighbour flush 193.233.7.254
ip -s tunnel ls Cisco // 列出现有的通道
[ip tunnel 0-- 通道配置. 缩写 tunnel,tunl]
[ip tunnel add 0-- 添加新的通道]
ip tunnel add Cisco mode sit remote 192.31.7.104 local 192.203.80.1 ttl 32
// 建立一个点对点通道, 最大TTL是32
[ip tunnel change 0-- 修改现有的通道]
[ip tunnel delete 0-- 删除一个通道.缩写: add,a; change,chg; delete,del,d]
[ip tunnel show 0-- 列出现有的通道.缩写: show,list,sh,ls,l]
rtmon file /var/log/rtmon.log
8. telnet
telnet表示开启终端机阶段作业, 并登入远端主机. telnet是一个Linux命令, 同时也是
一个协议(远程登陆协议).
8.1 telnet的选项介绍
格式:
telnet [-8acdEfFKLrx][-b][-e][-k][-l][-n][-S][-X][主机名称IP地址<通信端口>]
参数:
-8: 允许使用8位字符资料, 包括输入与输出.
-a: 尝试自动登入远端系统.
-b: 使用别名指定远端主机名称.
-c: 不读取用户专属目录里的.telnetrc文件.
-d: 启动排错模式.
-E: 滤除脱离字符.
-e: 设置脱离字符.
-f: 此参数的效果和指定"-F"参数相同.
-F: 使用Kerberos V5认证时, 加上此参数可把本地主机的认证数据上传到远端主机.
-K: 不自动登入远端主机.
-k: 使用Kerberos认证时, 加上此参数让远端主机采用指定的领域名, 而非该主机的域名.
-L: 允许输出8位字符资料.
-l: 指定要登入远端主机的用户名称.
-n: 指定文件记录相关信息.
-r: 使用类似rlogin指令的用户界面.
-S: 服务类型, 设置telnet连线所需的IP TOS信息.
-X: 关闭指定的认证形态.
-x: 假设主机有支持数据加密的功能, 就使用它.
8.2 应用说明
用户使用telnet命令可以进行远程登录, 并在远程计算机之间进行通信. 用户通过网络在
远程计算机上登录, 就像登录到本地机上执行命令一样. 为了通过 telnet登录到远程计
算机上, 必须知道远程机上的合法用户名和口令. 虽然有些系统确实为远程用户提供登录
功能, 但出于对安全的考虑, 要限制来宾的操作权限, 因此, 这种情况下能使用的功能是
很少的.
telnet只为普通终端提供终端仿真, 而不支持X-Window等图形环境. 当允许远程用户登录
时, 系统通常把这些用户放在一个受限制的Shell中, 以防系统被怀有恶意的或不小心的
用户破坏. 用户还可以使用telnet从远程站点登录到自己的计算机上, 检查电子邮件,编
辑文件和运行程序, 就像在本地登录一样.
9. ftp
ftp命令进行远程文件传输. FTP是ARPANet的标准文件传输协议, 该网络就是现今
Internet的前身, 所以ftp既是协议又是一个命令.
9.1 ftp的选项介绍
格式:
ftp [-dignv][主机名称IP地址]
参数:
-d: 详细显示指令执行过程, 便于排错分析程序执行的情形.
-i: 关闭互动模式, 不询问任何问题.
-g: 关闭本地主机文件名称支持特殊字符的扩充特性.
-n: 不使用自动登陆.
-v: 显示指令执行过程.
9.2 应用说明
ftp命令是标准的文件传输协议的用户接口, 是在TCP/IP网络计算机之间传输文件简单有
效的方法, 它允许用户传输ASCⅡ文件和二进制文件. 为了使用 ftp来传输文件, 用户必
须知道远程计算机上的合法用户名和口令. 这个用户名/口令的组合用来确认ftp会话, 并
用来确定用户对要传输的文件进行什么样的访问. 另外, 用户需要知道对其进行ftp会话
的计算机名字的IP地址.
用户可以通过使用ftp客户程序, 连接到另一台计算机上; 可以在目录中上下移动,列出目
录内容; 可以把文件从远程计算机机拷贝到本地机上; 还可以把文件从本地机传输到远程
系统中. ftp内部命令有72个, 下面列出主要几个内部命令:
ls: 列出远程机的当前目录.
cd: 在远程机上改变工作目录.
lcd: 在本地机上改变工作目录.
close: 终止当前的ftp会话.
hash: 每次传输完数据缓冲区中的数据后就显示一个#号.
get(mget): 从远程机传送指定文件到本地机.
put(mput): 从本地机传送指定文件到远程机.
quit: 断开与远程机的连接, 并退出ftp.
9.3 ftp匿名登录的方法
FTP的匿名登录一般有三种:
1) 用户名: anonymous 密码: Email或者为空
2) 用户名: FTP 密码: FTP或者为空
3) 用户名: USER 密码: pass
10. rlogin
rlogin用来进行远程注册.
10.1 tcpdump的选项介绍
格式:
rlogin [ -8EKLdx ] [ -e char
] [-k realm ] [ - l username
] host
参数:
-8: 此选项始终允许8位输入数据通道. 该选项允许发送格式化的ANSI字符和其
它的特殊代码. 如果不用这个选项, 除非远端的不是终止和启动字符, 否则
就去掉奇偶校验位.
-E: 停止把任何字符当作转义字符. 当和-8选项一起使用时, 它提供一个完全的
透明连接.
-K: 关闭所有的Kerberos确认. 只有与使用Kerberos 确认协议的主机连接时才
使用这个选项.
-L: 允许rlogin会话在litout模式中运行. 要了解更多信息, 请查阅tty联机帮助
-d: 打开与远程主机进行通信的TCP sockets的socket调试. 要了解更多信息,
请查阅setsockopt的联机帮助.
-e: 为rlogin会话设置转义字符, 默认的转义字符是"~".
-k: 请求rlogin获得在指定区域内远程主机的Kerberos许可, 而不是获得由
krb_realmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可.
-x: 为所有通过rlogin会话传送的数据打开DES加密. 这会影响响应时间和CPU利
用率, 但是可以提高安全性.
10.2 使用说明
如果在网络中的不同系统上都有账号, 或者可以访问别人在另一个系统上的账号, 那么要
访问别的系统中的账号, 首先就要注册到系统中, 接着通过网络远程注册到账号所在的系
统中. rlogin可以远程注册到别的系统中, 它的参数应是一个系统名.
11. rcp
rcp代表远程文件拷贝, 用于计算机之间文件拷贝, 使用权限是所有用户.
11.1 rcp的选项介绍
格式:
rcp [-px] [-k realm] file1 file2 rcp [-px] [-r] [-k realm] file
参数:
-r: 递归地把源目录中的所有内容拷贝到目的目录中. 要使用这个选项, 目的必
须是一个目录.
-p: 试图保留源文件的修改时间和模式, 忽略umask.
-k: 请求rcp获得在指定区域内的远程主机的Kerberos许可, 而不是获得由
krb_relmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可.
-x: 为传送的所有数据打开DES加密.
12. finger
finger用来查询一台主机上的登录账号的信息, 通常会显示用户名,主目录,停滞时间,登
录时间,登录Shell等信息, 使用权限为所有用户.
12.1 tcpdump的选项介绍
格式:
finger [选项] [使用者] [用户@主机]
参数:
-s: 显示用户注册名,实际姓名,终端名称,写状态,停滞时间,登录时间等信息.
-l: 除了用-s选项显示的信息外, 还显示用户主目录,登录Shell,邮件状态等信息
, 以及用户主目录下的.plan,.project和.forward文件的内容.
-p: 除了不显示.plan文件和.project文件以外, 与-l选项相同.
12.2 应用实例
[root@localhost root]# finger
Login Name Tty Idle Login Time Office Office Phone
root root tty1 2 Dec 15 11
root root pts/0 1 Dec 15 11
root root *pts/1 Dec 15 11
12.3 应用说明
如果要查询远程机上的用户信息, 需要在用户名后面接"@主机名", 采用[用户名@主机名]
的格式, 不过要查询的网络主机需要运行finger守护进程的支持.
13. mail
mail作用是发送电子邮件, 使用权限是所有用户. 此外, mail还是一个电子邮件程序.
13.1 mail的选项介绍
格式:
mail [-s subject] [-c address] [-b address]
mail -f [mailbox]mail [-u user]
参数:
-b address: 表示输出信息的匿名收信人地址清单.
-c address: 表示输出信息的抄送()收信人地址清单.
-f [mailbox]: 从收件箱者指定邮箱读取邮件.
-s subject: 指定输出信息的主体行.
[-u user]: 端口指定优化的收件箱读取邮件.
14. nslookup
nslookup命令的功能是查询一台机器的IP地址和其对应的域名. 使用权限所有用户. 它通
常需要一台域名服务器来提供域名服务. 如果用户已经设置好域名服务器, 就可以用这个
命令查看不同主机的IP地址对应的域名.
14.1 nslookup的选项介绍
格式:
nslookup [IP地址/域名]
14.2 应用实例
// (1)在本地计算机上使用nslookup命令
[~]$ nslookup
Default Server: name.cao.com.cn
Address: 192.168.1.9
>
在符号">"后面输入要查询的IP地址域名, 并回车即可. 如果要退出该命令, 输入"exit",
并回车即可.
// (2)使用nslookup命令测试named
[~]$: nslookup
note:
进入交换式nslookup环境. 如果named正常启动, 则nslookup会显示当前DNS服务器的地址
和域名, 否则表示named没能正常启动.
14.3 一些基本的DNS诊断.
1) 检查正向DNS解析, 在 nslookup提示符下输入带域名的主机名, 如hp712.my.com,
nslookup应能显示该主机名对应的IP地址. 如果只输入 hp712, nslookup会根据
/etc/resolv.conf 的定义, 自动添加my.com域名, 并回答对应的IP地址.
2) 检查反向DNS解析, 在nslookup提示符下输入某个IP地址, 如192.22.33.20,
nslookup应能回答该IP地址所对应的主机名.
3) 检查MX邮件地址记录在nslookup提示符下输入:
set q=mx
然后输入某个域名, 输入my.com和mail.my.com, nslookup应能够回答对应的邮件服
务器地址, 即support.my.com和support2.my.com.
15. whois
whois 命令列出给出的域名的域名所有者的信息.
15.1 tcpdump的选项介绍
格式:
whois [hp] 查询内容
参数:
-h 主机, 在它的数据库中存有识别信息.
-p 连接到指定端口.
15.2 实例
[~]# whois hscripts.com
| [Querying whois.internic.net] |
| [Redirected to whois.PublicDomainRegistry.com] |
| [Querying whois.PublicDomainRegistry.com] |
| [whois.PublicDomainRegistry.com] |
| Registration Service Provided By: HIOX INDIA |
| Contact: +91.4226547769 |
| Domain Name: HSCRIPTS.COM |
| Registrant: |
|