计算机需要网络连接才能和其他计算机通信,这是通过操作系统识别接口卡(如以太网卡、猫等等),并配置该接口以连接到网络上来实现的。网络配置命令可以用来配置以下类型的网络接口:以太网、ISDN(综合业务数字网)、调制解调器、xDSL。
4.1 常用网络配置命令
常用的网络配置命令主要以以太网和TCP/IP相关的配置,下面介绍的命令用来配置和诊断网卡、主机名、DNS、路由表、IP地址、ARP协议、TCP/UDP通信协议。
查看或设置网络接口——ifconfig
ifconfig是用来读取和配置网络接口的命令工具。ifconfig可设置网卡的状态,或者显示当前的设置参数。一般情况下,需要设置的项目有IP地址、子网掩码以及网络接口的IRQ与I/O地址等,其他项目通常保持默认值。不带参数的ifconfig命令会显示当前的设置。
示例1 :ifconfig 得到当前系统的网络配置情况
ifconfig
eth2 Link encap:Ethernet HWaddr 70:7B:E8:E9:AC:58
inet addr:172.18.20.28 Bcast:172.18.21.255 Mask:255.255.254.0
inet6 addr: fe80::727b:e8ff:fee9:ac58/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23457352 errors:0 dropped:0 overruns:0 frame:0
TX packets:16121312 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4805071209 (4582.4 Mb) TX bytes:8556677302 (8160.2 Mb)
Interrupt:16 Memory:faf00000-faf12800
eth3 Link encap:Ethernet HWaddr 70:7B:E8:E9:AC:59
inet addr:172.18.21.137 Bcast:172.18.21.255 Mask:255.255.254.0
inet6 addr: fe80::727b:e8ff:fee9:ac59/64 Scope:Link
UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:147773197 errors:0 dropped:0 overruns:0 frame:0
TX packets:35125 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:48099416953 (45871.1 Mb) TX bytes:3925285 (3.7 Mb)
Interrupt:17 Memory:fad00000-fad12800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:197933579 errors:0 dropped:0 overruns:0 frame:0
TX packets:197933579 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:39707001469 (37867.5 Mb) TX bytes:39707001469 (37867.5 Mb)
eth2表示 第3块网卡,eth0表示第一块网卡
硬件地址:(HWaddr)为网卡的MAC地址,MAC地址是生产厂家设定的,每个网卡有一个独一无二的地址。
接下来显示ip地址、广播地址、子网掩码,必须确认这些地址正确,否则Linux主机无法与其他网络设备相连接。
接下来的一行显示的是ipv6地址,即inet6 addr
RX和TX表示接收和传送的数据包。
lo表示没有网络连接时候的接口。
备注:对于SUSE操作系统来说,相关的网卡配置可以在如下目录进行配置
/etc/sysconfig/network/
示例2:显示网卡eth3的信息
ifconfig eth3
eth3 Link encap:Ethernet HWaddr 70:7B:E8:E9:AC:59
inet addr:172.18.21.137 Bcast:172.18.21.255 Mask:255.255.254.0
inet6 addr: fe80::727b:e8ff:fee9:ac59/64 Scope:Link
UP BROADCAST RUNNING ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:147834476 errors:0 dropped:0 overruns:0 frame:0
TX packets:35125 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:48112401910 (45883.5 Mb) TX bytes:3925285 (3.7 Mb)
Interrupt:17 Memory:fad00000-fad12800
示例3:设置第一块网卡的ip地址为192.168.1.3
ifconfig eth0 192.168.1.3
示例4:设置第一块以太网网卡的子网掩码为255.255.0.0
ifconfig eth0 netmask 255.255.0.0
示例5:禁用第一块以太网网卡
ifconfig eth0 down
禁用网卡后会ping不通
示例6:启用第一块以太网网卡
ifconfig eth0 up
示例7:为第一块以太网网卡添加一个IPV6地址f384::29c:3322:ff:3244:2345
ifconfig eth0 add f384::29c:3322:ff:3244:2345
示例8:删除以太网网卡ipv6地址
ifconfig eth0 del f384::29c:3322:ff:3244:2345
示例9:禁止第一块以太网网卡的ARP协议
ifconfig eth0 -arp
注意:减号表示禁止
返回信息会发现
eth5 Link encap:Ethernet HWaddr 70:7B:E8:E9:AC:57
inet6 addr: fe80::727b:e8ff:fee9:ac57/64 Scope:Link
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:64 (64.0 b) TX bytes:492 (492.0 b)
Interrupt:31 Memory:fa600000-fa612800
NOARP表示禁止了ARP协议
示例10:启用ARP协议
ifconfig eth5 arp
注意:并非所有网卡都支持修改MAC地址,如果支持并需要修改,首先关闭网卡设备
ifconfig eth0 down
修改MAC地址
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
重新启用网卡
ifconfig eth0 up
查看或设置主机名——hostname
hostname命令用于设置或显示Linux系统当前的主机名、域名或节点名等,这些名称通常在网络程序中用来识别主机
示例1:直接输入hostname
将会显示当前主机的主机名以及DNS域名两部分,中间用.隔开
Linux.localmain
示例2:显示主机的DNS域名
hostname -d
示例3:显示主机的IP地址
hostname -i
示例4:显示主机的别名
hostname -a
为了显示命令的执行过程,可以输入
hostname -av
示例5:更改主机名
hostname FC6
注意:hostname命令不会时主机名发生永久变化,重新启动linux系统后,主机名依然使用/etc/host中记录的主机名
domainname用于获得系统的NIS域名,而不是DNS域名,如果要查询主机的DNS域名,应使用dnsdomainname
查看或设置路由表——route
要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。route命令用来查看和设置linux系统的路由信息,以实现与其他网络的通信
示例1:查看路由表
route
得到内核IP路由表
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.137.168.0 * 255.255.254.0 U 0 0 0 eth4
172.18.20.0 * 255.255.254.0 U 0 0 0 eth2
172.18.20.0 * 255.255.254.0 U 0 0 0 eth3
link-local * 255.255.0.0 U 0 0 0 eth2
loopback * 255.0.0.0 U 0 0 0 lo
default 10.137.168.1 0.0.0.0 UG 0 0 0 eth4
示例2:将192.168.76.0添加到路由表中,子网掩码为255.255.255.0,使用/dev/eth0设备
route add -net 192.168.76.0 netmask 255.255.255.0 dev eth0
示例3:将192.168.76.0从路由表中删除,子网掩码为255.255.255.0,使用/dev/eth0设备
route del -net 192.168.76.0 netmask 255.255.255.0 dev eth0
示例4:添加一个拒绝路由,目标网络为10.0.0.0,子网掩码为255.255.255.0,
route add -net 10.0.0.0 netmask 255.0.0.0 reject
运行route命令,查看返回的路由表,Flags列的!表示拒绝路由
查看或配置arp缓存————arp
IP数据包常通过以太网发送,但以太网设备并不识别32位IP地址,而是以48位以太网地址传输以太网数据包。因此,必须把ip目的地址换成以太网目的地址。在这两种地址存在某种静态的或算法的映射,常常需要查看一张表。地址解析协议address resolution protocol 即ARP就是用来确定这些映射的协议。
arp命令处理系统的arp缓存,它可以清除缓存中的地址映射,建立新的地址映射。
示例1:显示ARP高速缓存
Address HWtype HWaddress Flags Mask Iface
10.137.168.1 ether 00:00:5e:00:01:c1 C eth4
10.137.168.13 ether 70:7b:e8:e9:ac:26 C eth4
172.18.20.55 ether 70:7b:e8:e9:ab:98 C eth2
10.137.168.12 ether 70:7b:e8:e9:ac:7a C eth4
Flags Mask:记录标识,C表示ARP高速缓存中的条目,M表示静态的ARP条目。
示例2:显示ARP缓存详细信息
arp -v
查看网络状态——netstat
netstat主要用于Linux中查看自身的网络状况,如开启的端口、在为哪些用户服务以及服务的状态灯。此外,它还显示系统路由表、网络接口状态。
示例1 查看网络的状态
netstat
tcp 1 0 SDP14:58102 10.137.168.13:5882 CLOSE_WAIT
tcp 0 0 SDP14:57169 10.137.168.13:5882 TIME_WAIT
tcp 0 0 SDP14:imaps 10.137.168.13:nfs ESTABLISHED
tcp 0 0 SDP14:57169 10.137.168.13:5882 TIME_WAIT
tcp 0 0 SDP14:imaps 10.137.168.13:nfs ESTABLISHED
tcp 0 0 SDP14:22991 10.135.193.125:8368 ESTABLISHED
tcp 1 0 SDP14:53035 10.137.168.13:5882 CLOSE_WAIT
tcp 0 0 SDP14:ssh 10.135.171.127:61497 ESTABLISHED
tcp 0 0 SDP14:11102 SDP14:60086 TIME_WAIT
tcp 0 0 SDP14:ssh 10.135.193.125:54983 ESTABLISHED
示例2:查看网卡工作情况
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
eth2 1500 0 23555021 0 0 0 16141102 0 0 0 BMRU
eth3 1500 0 148648886 0 0 0 35135 0 0 0 ABMRU
eth4 1500 0 121600690 0 0 0 34051717 0 0 0 BMRU
eth5 1500 0 1 0 0 0 6 0 0 0 BMRU
lo 16436 0 198667733 0 0 0 198667733 0 0 0 LRU
示例3:查看组播组成员信息
netstat -g
netstat -g
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 224.0.0.1
eth4 12 230.0.0.1
eth4 1 224.0.0.1
eth5 1 224.0.0.1
eth2 1 224.0.0.1
eth3 1 224.0.0.1
lo 1 ipv6-allnodes
getnameinfo failed
eth4 1 [UNKNOWN]
eth4 1 ipv6-allnodes
getnameinfo failed
eth5 1 [UNKNOWN]
eth5 1 ipv6-allnodes
getnameinfo failed
eth2 1 [UNKNOWN]
eth2 1 ipv6-allnodes
eth8 1 ipv6-allnodes
getnameinfo failed
eth3 1 [UNKNOWN]
eth3 1 ipv6-allnodes
eth9 1 ipv6-allnodes
eth10 1 ipv6-allnodes
eth11 1 ipv6-allnodes
eth12 1 ipv6-allnodes
eth13 1 ipv6-allnodes
示例4:查看路由表信息
netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.137.168.0 * 255.255.254.0 U 0 0 0 eth4
172.18.20.0 * 255.255.254.0 U 0 0 0 eth2
172.18.20.0 * 255.255.254.0 U 0 0 0 eth3
link-local * 255.255.0.0 U 0 0 0 eth2
loopback * 255.0.0.0 U 0 0 0 lo
default 10.137.168.1 0.0.0.0 UG 0 0 0 eth4
示例5:查看监听中的服务器嵌套字
netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 SDP14:11109 *:* LISTEN
tcp 0 0 SDP14:11110 *:* LISTEN
tcp 0 0 SDP14:vce *:* LISTEN
tcp 0 0 localhost:dicom *:* LISTEN
tcp 0 0 SDP14:18312 *:* LISTEN
tcp 0 0 *:38639 *:* LISTEN
tcp 0 0 SDP14:18319 *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
示例6:显示网络工作协议的统计信息
netstat -s
Ip:
413988514 total packets received
5139534 with invalid addresses
0 forwarded
0 incoming packets discarded
254109322 incoming packets delivered
231709134 requests sent out
10380 outgoing packets dropped
Icmp:
708531 ICMP messages received
302073 input ICMP message failed.
ICMP input histogram:
destination unreachable: 67581
timeout in transit: 342424
echo requests: 298514
echo replies: 7
timestamp request: 1
address mask request: 3
4756 ICMP messages sent
0 ICMP messages failed
ICMP output histogram:
destination unreachable: 4632
echo request: 70
echo replies: 53
timestamp replies: 1
IcmpMsg:
InType0: 7
InType3: 67581
InType8: 298514
InType11: 342424
InType13: 1
InType17: 3
InType37: 1
OutType0: 53
OutType3: 4632
OutType8: 70
OutType14: 1
示例7:显示TCP协议的连接信息
netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 1 0 SDP14:58102 10.137.168.13:5882 CLOSE_WAIT
tcp 0 0 SDP14:11102 SDP14:13910 TIME_WAIT
tcp 0 0 SDP14:imaps 10.137.168.13:nfs ESTABLISHED
tcp 0 0 SDP14:imaps 10.137.168.13:nfs ESTABLISHED
tcp 0 0 SDP14:11102 SDP14:13897 TIME_WAIT
tcp 0 0 SDP14:22991 10.135.193.125:8368 ESTABLISHED
tcp 0 0 SDP14:20296 SDP14:11107 ESTABLISHED
tcp 1 0 SDP14:53035 10.137.168.13:5882 CLOSE_WAIT
示例8:显示TCP协议连接信息,列出时,列IP地址而不是域名
netstat -tn
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 1 0 10.137.168.14:58102 10.137.168.13:5882 CLOSE_WAIT
tcp 0 0 10.137.168.14:11102 10.137.168.14:13910 TIME_WAIT
tcp 0 0 10.137.168.14:993 10.137.168.13:2049 ESTABLISHED
tcp 0 0 10.137.168.14:11102 10.137.168.14:13897 TIME_WAIT
tcp 0 0 10.137.168.14:22991 10.135.193.125:8368 ESTABLISHED
tcp 1 0 10.137.168.14:53035 10.137.168.13:5882 CLOSE_WAIT
tcp 0 0 10.137.168.14:22 10.135.171.127:61497 ESTABLISHED
tcp 0 0 10.137.168.14:22 10.135.193.125:54983 ESTABLISHED
tcp 1 0 10.137.168.14:12433 10.137.168.13:5882 CLOSE_WAIT
tcp 0 0 127.0.0.1:62916 127.0.0.1:11100 TIME_WAIT
tcp 0 0 10.137.168.14:35430 10.137.168.14:1526 ESTABLISHED
tcp 1 0 10.137.168.14:17986 10.137.168.13:5882 CLOSE_WAIT
tcp 0 0 10.137.168.14:64824 10.137.168.14:8001 ESTABLISHED
如果netstat列出的东西太多,可以使用管道输出到more中分批查看。即netstat | more
检测网络主机——ping
ping命令主要用于检测网络是否连通。ping命令使用ICMP协议,像网络主机发送ECHO_REQUEST数据包,希望能获得主机的ICMP ECHO_RESPONSE应答数据包,以判断和网络主机之间的连接情况。
示例1:测试www.163.com 主机是否可达
ping www.163.com
PING 202.108.9.31 (202.108.9.31) 56(84) bytes of data.
64 bytes from 10.137.168.14: icmp_seq=1 ttl=64 time=0.015 ms
64 bytes from 10.137.168.14: icmp_seq=2 ttl=64 time=0.017 ms
64 bytes from 10.137.168.14: icmp_seq=3 ttl=64 time=0.020 ms
64 bytes from 10.137.168.14: icmp_seq=4 ttl=64 time=0.021 ms
64 bytes from 10.137.168.14: icmp_seq=5 ttl=64 time=0.025 ms
64 bytes from 10.137.168.14: icmp_seq=6 ttl=64 time=0.020 ms
数据包的大小默认为56字节,加上8字节的ICMP头信息,实际发送的ICMP数据包是64字节
接下来的5行信息显示收到的应答数据包,包括美国ICMP数据包的编号(icmp_seq),存活时间(ttl)和用时(time)
最后给出了ping命令的统计信息,包括传送的数据包、收到的数据包、丢包率和所用时间等。
示例2:测试www.huawei.com主机的网络功能,但只发送4个icmp数据包
ping www.huawei.com
Pinging www.huawei.com [10.82.49.59] with 32 bytes of data:
Reply from 10.82.49.59: bytes=32 time=30ms TTL=59
Reply from 10.82.49.59: bytes=32 time=30ms TTL=59
Reply from 10.82.49.59: bytes=32 time=30ms TTL=59
Reply from 10.82.49.59: bytes=32 time=30ms TTL=59
Ping statistics for 10.82.49.59:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 30ms, Maximum = 30ms, Average = 30ms
示例3:测试127.0.0.1主机的网络功能,但以IP地址显示
ping -n 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.020 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.018 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.020 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.021 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.016 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.025 ms
--- 127.0.0.1 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 4998ms
rtt min/avg/max/mdev = 0.016/0.020/0.025/0.002 ms
注意事项:
1.ping命令会不断向网络主机发送数据包,可以用组合键Ctrl+C结束ping的运行
2.有的时候无法成功使用ping命令向网络主机发送数据包,可能是由于该主机为了安全起见,设置为不响应ping命令
3."-R"的使用
-R用于记录路由信息,但是需要注意的是IP头最多只能记录9个路由信息,许多主机都不支持这个选项
4.正常情况下,ping命令用例查找问题所在,或检验网络运行情况时,需要使用多次ping命令。如果所有都运行正确,就可以相信基本的连通性和配置参数都没有问题;如果某些ping命令出现运行故障,它也可以指明到何处去查找问题
下面给出一个典型的检测次序及对应的可能故障
step1:ping 127.0.0.1:这个ping命令被送到本地主叫的TCP/IP协议栈,该命令永不退出该计算机。如果没有做到这一点,就表示TCP/IP的安装或运行存在某些最基本的问题。
step2:ping 本机IP:这个命令被送到本地主机所配置的IP地址,本地主机始终都应该对该命令作出应答。如果没有,则表示本地配置或安装存在问题。出现此问题时,局域网用户请断开网络电缆,然后重新发送该命令。如果网线端口后本命令正确,则表示另一台计算机可能配置了相同的IP地址
step3:ping localhost:localhost是个本地系统的网络保留名,它是127.0.0.1的别名,每台主机都应该能够将该名称转换成该地址。如果没有做到这一点,则表示配置文件/etc/hosts中存在问题。
step4:ping局域网内其他IP:这个命令应该离开本地主机,经过网卡及网络电缆到达其他主机,再返回。收到会送应答表名本地网络中的网卡和载体运行正确。但如果收到0个回送应答,那么表示子网掩码不正确或网卡配置错误或电缆系统有问题。
step5:ping网关IP:这个命令如果应答正确,表示局域网中的网关路由器正在运行并能够做出应答。
step6:ping远程ip:如果收到4个应答,表示成功地使用了默认网关,对于拨号上网用户则表示能够成功访问Internet(但不排除ISP的DNS会有问题)
追溯路由——traceroute
示例1:显示到指定IP的路由
traceroute 192.168.2.2
示例2:显示到www.163.com的路由,直接使用ip地址
traceroute -n www.163.com
注意事项:
1.每个IP数据包都有一个TTL值,以便决定该数据包是否应抛弃。当数据包经过路由器时,TTL数值就会被扣减,直到变为0为止。此时,路由器检测到TTL值为0,则放弃数据包,并发出ICMP的消息通知源主机。
2.-m<存活数值>选项的使用
该选项设置检测数据包的最大存活数值TTL的大小,范围在1~255之间,默认值为30
3.traceroute输出中的星号*表示某网关没有在规定的时间内响应它的探测。此时可以用-w选项来增加时间预算,以避免其发生超时。
域信息搜索器————dig
dig命令是一个用于询问DNS域名服务器的灵活工具。它执行DNS搜索,显示从受请求的域名服务器返回的答复。多数DNS管理员利用dig作为DNS问题的故障诊断,因为它灵活性好、易用、输出清晰。
示例1:查看包含sohu.com的授权域名服务器,并显示网段中每台域名服务器的SOA记录
dig sohu.com +nssearch
+nssearch这个选项被设置时,dig试图寻找包含待搜名称的网段的权威域名服务器,并显示网段中每台域名服务器的SOA记录
示例2:从根服务器开始追踪域名uestc.edu.cn的解析过程
dig uestc.edu.cn +trace
示例3:对202.112.13.184进行逆向查询(将地址映射到名称)
dig -x 202.112.13.184
示例4:查询www.163.com
dig www.163.com
IP计算器————ipcalc
对于一个IP地址,怎样计算它的网络地址、广播地址和子网掩码呢?ipcalc命令可以完成这些。
示例1:显示IP地址202.115.31.1的子网掩码
ipcalc -m 202.115.31.1
运行结果显示202.115.31.1是C类地址,子网掩码为255.255.255.0
-m表示显示子网掩码
示例2:显示IP地址192.168.78.26对应的主机名
ipcalc -h 192.168.78.26
-h列出对应的主机名
如果改变子网掩码为255.255.0.0
ipcalc -bn 192.168.78.26 255.255.0.0
示例3:子网掩码为255.255.255.0,显示IP地址192.168.78.26的网络前缀
ipcalc -p 192.168.78.26 255.255.255.0
监视网络状态——netreport
netreport命令作用是,当任何网络接口的状态发生改变时,通过网络管理进程向调用netreport的进程发送SIGIO信号
示例:监视网络状态,并删除调用netreport进程的当前请求。
netreport -r
当网络状态发送变化后,将会发送通知,并删除当前请求。