现在的位置: 首页 > 综合 > 正文

常用linux网络相关命令使用和输出详解

2013年08月10日 ⁄ 综合 ⁄ 共 23625字 ⁄ 字号 评论关闭

               

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:                                     |
|   

【上篇】
【下篇】

抱歉!评论已关闭.