Linux网络管理
一、网络接口配置
1.使用ifconfig检查和配置网卡
如果不使用任何参数,输入ifconfig命令时将会输出当前系统中所有处于活动状态的网络接口。
ifconfig命令输出信息含义:
eth是Ethernet的前三个字母,代表以太网,0代表是第一块网卡,第二块以太网网卡则是eth1,以此类推。
Link encap是指封装方式为以太网。
HWaddr是指网卡的硬件地址(MAC地址)。
inet addr是指该网卡当前的IP地址。
Broadcast是广播地址(这部分是由系统根据IP和掩码算出来的,一般不需要手工设置)。
Mask是指掩码。
UP说明了该网卡目前处于活动状态。
MTU代表最大存储单元,即此网卡一次所能传输的最大分包。
RX和TX分别代表接收和发送的包。
collision代表发生的冲突数,如果发现值不为0则很可能网络存在故障。
txqueuelen代表传输缓冲区长度大小。
第二个设备lo,表示主机的环回地址,这个地址是用于本地通信的。
在ifconfig命令后面跟上具体设备的名称(eth0),则只显示指定设备的相关信息,如: ifconfig eth0
手工指定eth0的IP地址:
ifconfig eth0 192.168.159.130 netmask 255.255.255.0
或者简写为: ifconfig eth0 192.168.159.130/24
通过IP地址和掩码系统能自行算出广播地址,也可以显示指定广播地址,不过一般情况下没有必要这么做:
ifconfig eth0 192.168.159.130 broadcast 192.168.159.255 netmask 255.255.255.0
手工断开/启用网卡,以eth0为例:
ifconfig eth0 down; ifconfig eth0 up;
等同于: ifdown eth0; ifup eth0;
2.将IP配置信息写入配置文件
ifconfig命令直接配置网卡IP属于动态配置,所配置的信息只能保存在当前运行的内核中。一旦系统重启,这些信息将丢失。为了能在重启后依然生效,可以在相关的配置文件中保存这些信息,这样系统重启后将从这些配置文件中读取出来。RedHat和CentOS系统的网络配置文件所处的目录为/etc/sysconfig/network-scripts/, eth0的配置文件为ifcfg-eth0, 如果有第二块物理网卡,则配置文件为ifcfg-eth1,以此类推。
部分ifcfg-eth0内容含义:
DEVICE变量定义的设备的名称;BOOTPROTO变量定义了获取IP的方式,如果设为dhcp表示会通过dhcp的方式获取IP,如果设为static表示静态设置IP;ONBOOT变量定义了启动时是否激活使用该设备,yes表示激活,no表示不激活。
ifcfg-eth0配置示例:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.159.129
NETMASK=255.255.255.0
修改网络配置后想立即生效,有两种方式:
ifconfig eth0 down; ifconfig eth0 up; # 不能远程操作
service network restart; # 重启网络服务,推荐方式
二、路由和网关设置
Linux主机之间是使用IP进行通信的,假设A主机和B主机同在一个网段内且网卡都处于激活状态,则A具备和B直接通信的能力(通过交换机或简易HUB)。但是如果A主机和B主机处于两个不同的网段,则A必须通过路由器才能和B通信。一般来说,路由器属于IT设备的基础设施,每个网段都应该有至少一个网关。在Linux上可使用route命令添加默认网关。
添加网关:route add default gw 192.168.159.2
删除网关:route del default gw 192.168.159.2 或 route del default
查看系统当前的路由表:route -n
如果只是有route命令添加网关,一旦系统重启,配置信息就不存在了,必须将这种配置信息写到相关配置文件中才能永久保存。如在网卡配置文件ifcfg-eth0中加入如下配置并重启网络服务:
GATEWAY=192.168.159.2
三、DNS客户端配置
1./etc/hosts
hosts文件的作用主要如下:
a.加快域名解析。当访问网站时,系统会首先查看hosts文件中是否有记录,如果记录存在则直接解析出对应的IP,这时则不需要请求DNS服务器。
b.方便小型局域网用户使用的内部设备。很多单位的局域网中都存在着不少内部应用系统(比如办公自动化OA、公司论坛等),平时工作中也都需要访问,但是由于这些局域网太小而不必为此专门设置DNS服务器,那么此时使用hosts文件则能简单地解决这个问题。
如在hosts文件中添加:
10.1.1.145 hostB
测试连通性: ping hostB -c 1
2./etc/resolv.conf
DNS是全互联网主机名及其IP地址对应关系的数据库。设置主机为DNS客户端的配置文件就是/etc/resolv.conf,其中包含nameserver、search、domain这3个关键字。nameserver关键字后面紧跟一个DNS主机的IP地址,如:
nameserver 8.8.8.8
四、网络测试工具
1.ping
ping程序的目的在于测试另一台主机是否可达,一般来说,如果ping不到某台主机,就说明对方主机已经出现问题,但是不排除由于链路中防火墙的因素、ping包被丢弃等原因而造成的ping不同的情况。ping命令最简单的方式是接收一个主机名或IP作为其单一的参数,在按回车键后,执行ping命令的主机会向对端主机发送一个ICMP的echo请求包,对端主机在接收到这个包后会回应一个ICMP的reply回应包。在Linux下ping命令并不会主动停止,需要使用Ctrl+C组合键来停止,ping命令将会对发出的请求包和收到的回应包进行计数,这样就能计算网络丢包率。
示例: ping 10.10.1.145
2.host
host命令是用来查询DNS记录的,如果使用域名作为host的参数,命令返回该域名的IP
host www.google.com
host www.google.com 8.8.8.8 # 使用指定的DNS查询域名
3.traceroute
在IP包结构中有一个定义数据包生命周期的TTL(Time To Live)字段,该字段用于表明IP数据包的生命值,当IP数据包在网络上传输时,每经过一个路由器该值就减1,当该值减为0时此包就会被路由器丢弃。这种设计可用于避免出现一些由于某种原因始终无法到达目的地的包不断地在互联网上传递(幽灵包),减少无谓的网络资源消耗。
不过路由器也不是“无声无息”地将TTL值为0的IP包丢弃的,它会同时给发送该IP数据包的主机发送一个ICMP“超时”消息,主机在接收到这个ICMP包后就同时能得到该路由的IP地址。
根据上面两个特点,人们写了一个检测数据包是如何经由路由器的工具traceroute
4.常见网络故障排除
第一步:确认网卡本身是否能正常工作。ping 127.0.0.1,如果ping不通,一般可以证实为本机TCP/IP协议栈有问题,自然就无法连接网络了。
第二步:确认网卡是否出现了物理或驱动故障,使用ping本机IP地址的方式,如果能ping通则说明本地设备和驱动都正常。
第三步:确认是否能ping通同网段的其他主机。这一步主要确认二层网络设备(比如交换机或者HUB)工作是否正常。如果ping不通往往说明二层网络上出现了问题,可能涉及交换机的端口工作模式、vlan划分等因素。
第四步:确认是否能ping通网关IP。如果数据包能正常到达网关,则说明主机和本地网络都工作正常。
第五步:确认是否能ping通公网上的IP,如果可以则说明本地的路由设置正确,否则就要确认路由设备是否做了正确的nat或路由设置。
第六步:确认是否能ping通公网上的某个域名,如果能ping通则说明DNS部分设置正确。