项目5 Linux网络配置与测试 项目目标  了解TCP/IP网络知识。  了解Linux网络配置相关文件。  熟悉常用的Linux网络配置命令。  熟悉网络测试命令。 安装RHEL 6.5操作系统的主机最主要的用途就是当作网络中的服务器,在计算机网络中,Linux主机要实现与其他计算机之间进行相互通信,首先要正确配置网络参数,配置的网络参数通常包括主机名、IP地址、子网掩码和DNS服务器等。 5.1熟悉相关网络配置文件 5.1.1TCP/IP网络基本知识 Linux的一大特点就是具有完善的、强大的网络支持功能,Linux在通信和网络功能方面优于其他操作系统,其他操作系统不具有如此紧密地和内核结合在一起的连接网络能力,也没有内置这些联网特性的灵活性。Linux内核完美地支持TCP/IP(transmission control protocol/internet protocol,传输控制协议/互联网协议)、IPv6(internet protocol version 6,第6版互联网协议)、Internet分组交换(Internetwork packet exchange; IPX)/顺序分组交换(sequences packet exchange,SPX)、AppleTalk(苹果交流,AT)协议集等通信协议。本节介绍TCP/IP基本知识。 1. TCP/IP体系结构 TCP/IP是一组用于实现网络互联的通信协议,通常称它为TCP/IP协议族,它是20世纪70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准。目前广泛使用的Internet网络体系结构就是以TCP/IP为核心构建的,Internet的流行使TCP/IP成了事实上的标准,之所以说TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP(user datagram protocol,用户数据报协议)、ICMP(internet control message protocol,互联网控制报文协议)、RIP(routing information protocol,路电信息协议)、TELNETFTP、SMTP(simple mail transfer protocol,简单邮件传送协议)、ARP(address resolution protocol,地址解析协议)、TFTP(trivial file transfer protocol,简易文件传送协议)等许多协议。TCP/IP模型将协议分成4个层次: 网络接口层、网际互联层、传输层(主机到主机)和应用层,TCP/IP体系结构及其与开放式系统互联参考模型(open system interconnection,OSI)的对应关系如图51所示。 图51TCP/IP结构与OSI的关系 1) 应用层 应用层对应于OSI参考模型的高三层,为用户提供所需要的各种服务,如FTP、Telnet、DNS、SMTP等。 2) 传输层 传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证数据包的按序传送及数据的完整性。该层定义了两个主要的协议: 面向有连接的TCP和面向无连接的UDP。 TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务; 而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务。 3) 网际互联层 网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信路由问题。它注重协议数据包在整个网络上的逻辑传输,赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。该层有3个主要协议: IP、互联网组管理协议(internet group management protocol,IGMP)和ICMP。IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。 4) 网络接口层(即主机网络层) 网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互联的各个网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。ARP工作在此层,即OSI参考模型的数据链路层。 2. TCP/IP基本知识 网络主机间进行相互通信所需共同遵守的规则就是网络协议,TPC/IP是目前国际互联网上普遍使用的网络协议。此外,还要正确配置IP地址、子网掩码等网络参数。 1) TCP/IP协议 TCP/IP协议是Internet用于计算机通信的一组协议簇,其中最重要的是两个独立而又紧密结合的协议是TCP协议和IP协议。TCP协议是传输层的协议,它提供了可靠的数据报传输服务; IP协议是网际互联层的协议,用来提供网络中的统一编址和路由问题。 2) IP地址 IP地址是互联网上网络接口的唯一标识,给网络中主机提供唯一的网络地址。目前广泛使用的是第4版互联网协议(internet protocol version 4,IPv4),它由一个32位的二进制数字组成,通常用点分十进制表示法写成4个十进制数字,如192.168.1.11。IP地址采用两级结构,一部分表示主机所属的网络,另一部分代表主机。网络地址表示主机的网段,同一网段中的所有主机拥有相同的网络地址,网络地址是统一分配的,目的是保证网络地址的全球唯一性。主机地址表示某个网段中的一个具体的网络接口,主机地址由各个网络的系统管理员分配。 考虑到不同规模网络的需要,为充分利用IP地址空间和便于管理,IP地址又被分为A、B、C、D、E这5类,其中A、B、C这3类由InterNIC在全球范围内统一分配,D、E类为特殊地址。IP地址采用高位字节的高位来标识地址类别,IP地址编码方案和A、B、C类的地址格式如图52所示。另外,还有一种专用IP地址,这类地址只在专用网络(私有网络)中使用。例如,10.0.0.1~10.255.255.254、172.16.0.1~172.31.255.254、192.168.0.1~192.168.255.254。 图52IP地址的编码与格式 3) 子网与子网掩码 划分子网是指把主机地址中的一部分借用为网络地址,这样可以把一个较大的网络划分为多个较小的网络,这些较小的网络即为子网,子网是基于一组相关IP地址的逻辑网络。 为了确定网络地址和主机地址就必须借助子网掩码,子网掩码是一个32位地址,其作用是用于屏蔽IP地址的一部分以区分网络地址和主机地址,指明32位IP地址中哪些位为网络地址,哪些位为主机地址。TCP/IP协议利用子网掩码判断目标主机地址是位于本地网络还是远程网络。表51列出了A、B、C这3类网络的子网掩码。掩码中为1的位表示IP地址中相应的位为网络标识号,为0的位则表示IP地址中相应的位为主机标识号。 表51子网掩码 类别二进制值十进制值 A11111111.00000000.00000000.00000000255.0.0.0 B11111111.11111111.00000000.00000000255.255.0.0 C11111111.11111111.11111111.00000000255.255.255.0 4) 端口 在Internet上,各主机间通过TCP/IP协议发送和接收数据报,各个数据报根据其目的主机的IP地址来进行互联网络中的路由选择。但是当多个应用程序在同一主机上运行时,目的主机必须通过一种方法来确定应该把接收到的数据报传送给主机中众多同时运行的程序中的哪一个程序,这就需要用到端口。端口按端口号分类,可分为以下3类。 (1) 公认端口: 范围为0~1023,它们紧密绑定(binding)于一些服务。通常这些端口的通信明确表明了某种服务的协议。例如,80端口实际上总是HTTP通信。 (2) 注册端口: 范围为1024~49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。 (3) 动态和/或私有端口: 范围为49152~65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024开始分配动态端口。但也有例外: SUN的RPC端口从32768开始。 常见网络服务默认使用的端口号如表52所示。 表52常见网络服务默认使用的端口号 协议描述使用的端口 HTTP超文本传输协议,传输Web页面80 HTTPS经过加密的HTTP443 FTP文件传输协议21 DNS域名系统,用于域名解释53 SMTP简单邮件传输协议,用于发送邮件25 POP3邮局协议,用于接收电子邮件110 SSH经过加密的远程安全shell22 Telnet明文方式连接的远程终端服务23 5) 网关地址 主机的IP地址和子网掩码设置后,同一网段内的主机就可以相互通信了,而处于不同网段的主机则必须通过网关才能进行通信。网关地址就是一个网络连接到另一个网络的入口地址,在TCP/IP网络中就是一个网络通向其他网络的IP地址。为了实现与不同网段的主机进行通信,必须为主机设置网关地址,它一定是同网段中启用了路由协议的主机或路由器。 只有设置好网关的IP地址,TCP/IP才能实现不同网络之间的相互通信。例如,假设网段A的IP地址范围为192.168.10.1~192.168.10.254,子网掩码为255.255.255.0; 网段B的IP地址范围为192.168.11.1~192.168.11.254,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络即使连接在同一台交换机上,TCP/IP也会根据子网掩码判定两个网络中的主机处于不同的网络中,而不能进行TCP/IP通信,只有通过网关才能进行通信。如果网络中的主机发现数据包的目的主机地址不在本地网络中,就把数据包转发给它的网关,再由网关转发到相应的网络。 6) 域名 IP地址即使采用点分的十进制表示方法也不方便记忆,为了便于使用和记忆,Internet采用了域名管理系统(domain name system,DNS),在IP地址之外,网上的主机还有另一种表示法——域名表示法,它是由代表一定意义的英文单词的缩写构成的。例如,北京大学Web服务器的域名为www.pku.edu.cn,各部分的含义如图53所示。 图53域名地址格式 7) DNS服务器地址 如前所述,尽管使用IP地址可以定位网络中的主机,但是即使采用点分十进制数来表示IP地址仍难记忆。因此,人们通常使用字符串形式的域名来访问网络中的主机。为了能够使用域名,网络中的计算机至少要指定一台DNS服务器来完成域名解析工作。域名解析包括从域名到IP地址映射的正向解析和从IP地址到域名映射的反向解析。 DNS采用层次化的分布式数据结构,DNS的数据库系统分布在Internet上不同地域的DNS服务器上,每个DNS服务器只负责其管辖区域中的主机域名与IP地址的映射表。当用户的浏览器访问用域名表示的主机时,它会向指定的DNS服务器查询其映射的IP地址。如果这个DNS服务器没有找到映射记录,它会向上一级DNS服务器去查询,直到最终找到其对应的IP地址,并将IP地址信息返回给发出请求的应用程序,应用程序才向获取IP地址的主机请求相关服务和信息。 5.1.2Linux网络配置文件 在Linux中,TCP/IP网络的配置信息是分别存储在不同配置文件中的,相关配置文件有/etc/sysconfig/network、/etc/hosts、/etc/resolve.conf、/etc/host.conf及网卡配置等文件,下面详细介绍这些配置文件的作用和配置方法。 1. /etc/sysconfig/network文件 /etc/sysconfig/network文件主要用于基本的网络配置信息,包括控制与网络有关的文件和守护程序的行为参数,如主机名、网关等,其文件的内容如下: [root@localhost ~]#cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=yes HOSTNAME=localhost.localdomain NTPSERVERARGS=iburst 其中,各个字段的含义如下。 (1) NETWORKING——用于设置Linux网络是否运行,取值为yes或no。 (2) NETWORKING_IPV6——用于设置是否启用IPv6,取值为yes或no。 (3) HOSTNAME——用于设置主机的名称。 (4) NTPSERVERARGS——设置网络时间服务器参数。 此外,该配置文件中常见的还有以下参数。 (1) GATEWAYDEV——用来设置连接网关的网络设备。 (2) DOMAINNAME——用于设置本机的域名。 (3) NISDOMAIN——在有NIS系统的网络中,用来设置NIS域名。 (4) GATEWAY——用于设置网关的IP地址。 (5) FORWARD_IPV4——设置是否开启IPv4的包转发功能。在只有一块网卡时,一般设置为false; 若安装了两块网卡,并要开启IP数据包的转发功能,则设置为true。 对/etc/sysconfig/network文件进行修改之后,应该重启网络服务或注销系统以便使配置文件生效。 2. /etc/sysconfig/networkscripts/ifcfgethN文件 网卡配置文件保存着网卡设备名称、IP地址、子网掩码、网关等配置信息,每块网卡对应一个配置文件,配置文件都位于目录/etc/sysconfig/networkscripts/中,文件名以ifcfg开头,后跟网卡类型(通常使用的以太网卡用eth表示)加网卡的序号(序号从0开始)。系统中以太网卡的配置文件名为ifcfgethN,其中的N是从0开始的整数。例如,ifcfgeth0表示系统中第一块以太网卡的配置文件,ifcfgeht1表示第二块以太网卡的配置文件,以此类推。 Linux操作系统支持在一块物理网卡上绑定多个IP地址,需要建立多个网卡配置文件,其文件名的形式为ifcfgethN:M,其中N和M都是从0开始的数字,N代表网卡的序号,M代表虚拟网卡序号。例如,第一块网卡eth0的第一个虚拟网卡(设备名为eth0:0)的配置文件名为ifcfgeth0:0,第二个虚拟网卡(设备名为ifcfgeth0:1)的配置文件名为ifcfgeth0:1。Linux最多支持255个IP别名,对应的配置文件可以通过复制ifcfgeth0配置文件,并修改其配置内容来获得。 所有网卡的配置文件都有类似的格式,配置文件中每行进行一项内容设置,左边为项目名称,中间为“=”表示赋值,右边为项目的设置值。配置文件格式如下: [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=00:0C:29:6A:C6:27 TYPE=Ethernet ONBOOT=no NM_CONTROLLED=yes BOOTPROTO=dhcp [root@localhost ~]# 其中,各个字段的含义如下。 (1) DEVICE——表示当前网卡设备的设备名称。 (2) HWADDR——该网卡的硬件地址(MAC地址)。 (3) TYPE——该网络设备的类型。 (4) ONBOOT——设置系统启动时是否启动该设备,取值为yes或no。 (5) BOOTPROTO——获取IP设置的方式,取值为static、bootp或dhcp。 从上面可以看出,此处以太网卡为eth0。此外,采用动态IP获取方式。如果在采用静态IP方式中,还有以下参数。 (1) IPADD——该网络设备的IP地址。 (2) BROADCAST——广播地址。 (3) NETMASK——该网络设备的子网掩码。 (4) NETWORK——该网络设备所处的网络地址。 (5) GATEWAY——网卡的网关地址。 3. /etc/hosts文件 /etc/hosts文件是早期Linux实现域名解析的一种方法,该文件中存储IP地址主机名的静态映射关系,用于本地名称解析,是DNS的前身。利用该文件进行名称解释时,系统会直接读取该文件中的IP地址和主机名称的对应记录。文件中“#”开头的行是注释行,其余行每行一条记录,IP地址在左,主机名在右,主机名部分可以设置主机名称和主机全域名。该文件的默认内容如下: [root@localhost ~]# cat /etc/hosts 127.0.0.1localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1localhost localhost.localdomain localhost6 localhost6.localdomain6 [root@localhost ~]# 4. /etc/resolve.conf文件 /etc/resolve.conf文件是DNS客户端用于指定系统所用的DNS服务器的IP地址,在该文件中除了可以指定DNS服务器,还可以设置当前主机所在的域,以及DNS搜索路径等。该文件的默认内容如下: [root@localhost ~]# cat /etc/resolv.conf nameserver 192.168.0.1 nameserver 192.168.0.10 search localdomain domain localdomain [root@localhost ~]# 5. /etc/host.conf文件 /etc/host.conf文件用来指定如何进行域名解析,该文件一般包含以下几部分。 (1) order——设置主机名解析的可用方法及顺序。可用的方法包括hosts(利用/etc/hosts文件进行解析)、bind(利用DNS服务器进行解析)和NIS(利用网络信息服务器进行解析)。 (2) multi——设置是否从/etc/hosts/文件中返回主机的多个IP地址,取值为on或off。 (3) nospoof——设置是否启用对主机名的欺骗保护,取值为on或off,当设置为on时,系统会启用对主机名的欺骗保护,以提高rlogin、rsh等程序的安全性。 6. /etc/services文件 /etc/service文件保存网络服务名和它们所使用的协议及端口号。文件中的每行对应一种服务,它由4个字段组成,分别表示协议名称、端口号、传输层协议、注释。Linux操作系统在运行某些服务时会用到该文件,一般不需要修改此文件的内容,/etc/service文件的部分内容如下: # /etc/services: # $Id: services,v 1.482009/11/11 14:32:31 ovasik Exp $ # Network services, Internet style # IANA services version: last updated 2009-11-10 # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, most entries here have two entries # even if the protocol doesn't support UDP operations. # Updated from RFC 1700, ''Assigned Numbers'' (October 1994).Not all ports # are included, only the more common ones. # The latest IANA port assignments can be gotten from #http://www.iana.org/assignments/port-numbers # The Well Known Ports are those from 0 through 1023. # The Registered Ports are those from 1024 through 49151 # The Dynamic and/or Private Ports are those from 49152 through 65535 # Each line describes one service, and is of the form: # service-nameport/protocol[aliases...][# comment] ftp-data20/tcp ftp-data20/udp # 21 is registered to ftp, but also used by fsp ftp21/tcp ftp21/udpfsp fspd ssh22/tcp# 安全壳协议 ssh22/udp# 安全壳协议 telnet23/tcp telnet23/udp smtp25/tcpmail smtp25/udpmail time37/tcptimserver time37/udptimserver 7. /etc/nsswitch.conf文件 /etc/nsswitch.conf文件定义了网络数据库文件的搜索顺序,规定通过哪些途径、按照什么顺序以及通过这些途径查找特定类型的信息,如主机名称、用户密码、网络协议等。要设置名称解析的先后顺序,可利用/etc/nsswitch.conf命令配置文件中的hosts选项来定制,其默认解析顺序为hosts文件、DNS服务器。对UNIX操作系统还可以使用NIS服务器进行解析。该文件的部分内容如下: [root@localhost ~]# cat /etc/nsswitch.conf # /etc/nsswitch.conf # An example Name Service Switch config file. This file should be # sorted with the most-used services at the beginning. # The entry '[NOTFOUND=return]' means that the search for an # entry should stop if the search in the previous entry turned # up nothing. Note that if the search failed due to some other reason # (like no NIS server responding) then the search continues with the # next entry. # Valid entries include: #nisplusUse NIS+ (NIS version 3) #nisUse NIS (NIS version 2), also called YP #dnsUse DNS (Domain Name Service) #filesUse the local files #dbUse the local database (.db) files #compatUse NIS on compat mode #hesiodUse Hesiod for user lookups #[NOTFOUND=return]Stop searching if not found so far # # To use db, put the "db" in front of "files" for entries you want to be # looked up first in the databases # Example: #passwd:db files nisplus nis #shadow:db files nisplus nis #group:db files nisplus nis passwd:files shadow:files group:files #hosts:db files nisplus nis dns hosts:files dns # Example - obey only what nisplus tells us... #services:nisplus [NOTFOUND=return] files #networks:nisplus [NOTFOUND=return] files #protocols:nisplus [NOTFOUND=return] files #rpc:nisplus [NOTFOUND=return] files #ethers:nisplus [NOTFOUND=return] files #netmasks:nisplus [NOTFOUND=return] files bootparams: nisplus [NOTFOUND=return] files ethers:files netmasks:files networks:files protocols:files rpc:files services:files netgroup:nisplus publickey:nisplus automount:files nisplus aliases:files nisplus 5.2网络基本配置命令 在了解网络相关配置文件之后,接下来进行网络相关配置,Linux网络配置的方式有以下3种。 (1) CLI命令行方式——在字符界面下,通过执行有关网络配置命令实现对网络的配置。此方式只是临时生效,系统或网络服务重启后便失效。 (2) GUI图形方式——通过窗口填写网络配置参数,进行网络配置。 (3) 修改网络配置文件方式——使用Vi编辑器直接修改网络配置文件或通过setup等工具间接修改网络配置文件。此种方式需要系统或网络服务重启后才能生效,且长期保存、生效。 下面先进行CLI命令行方式的网络配置操作,然后介绍GUI图形方式的网络配置操作。 5.2.1配置主机名 1. 临时配置主机名 hostname命令可以查看或设置当前主机的名称,该命令的格式如下: hostname[主机名] 说明: hostname命令不会将新的主机名永久地保存到/etc/sysconfig/network配置文件中,因此,在重新启动系统后,主机名仍将恢复为配置文件中所设置的主机名,而且在设置了新的主机名后,系统提示符中的主机名还不能同步更改,必须使用logout命令注销,并重新登录系统后或使用bash命令重新开启shell,才可以显示出新的主机名。 举例: [root@localhost ~]# hostname //显示现主机名 localhost.localdomain [root@localhost ~]# hostname RHEL6.5 //把主机名临时改为 RHEL6.5 [root@localhost ~]#hostname RHEL 6.5 此外,还可以使用sysctl命令修改内核参数的方式临时修改主机名,其格式如下: sysctlkernel.hostname=主机名 2. 修改配置文件永久修改主机名 hostname命令不会将新主机名保存到配置文件中,重启系统后主机名将恢复为配置文件中所设置的主机名。若要主机名长期生效,可直接修改配置文件/etc/sysconfig/network中的HOSTNAME配置项来设置主机名,系统启动时,会从该配置文件中获取主机名信息,并进行主机名设置。例如,把主机名改为RHEL,如图54所示。 图54修改主机名为RHEL 5.2.2配置网络接口 网卡的配置包括IP地址、子网掩码、默认网关等信息,可以通过两种途径来设置网卡配置参数: 一种是由网络中的DHCP服务器动态地分配; 另一种是用户手动配置,在命令行下可以直接利用Vi编辑器修改网卡配置文件,也可以使用ifconfig命令来查看或设置网卡的TCP/IP参数。 1. 显示网络接口的设备信息 ifconfig是一个用来查看、配置、启用或禁止网络接口的命令,要查看系统中当前所有处于活跃状态的网络接口信息,操作如下: [root@RHEL ~]# ifconfig eth0Link encap:EthernetHWaddr00:0C:29:6A:C6:27 UP BROADCAST MULTICASTMTU:1500Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b)TX bytes:0 (0.0 b) loLink encap:Local Loopback inet addr:127.0.0.1Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNINGMTU:16436Metric:1 RX packets:28 errors:0 dropped:0 overruns:0 frame:0 TX packets:28 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1940 (1.8 KiB)TX bytes:1940 (1.8 KiB) 从上面可以看出,当前系统有两个网络接口: 一个是eth0,它是系统的第一块物理网卡; 另一个是lo,它代表loopback环回接口,是Linux内部通信的基础,其接口IP地址始终为127.0.0.1。其中各个标志位的含义如表53所示。 表53ifconfig命令显示的标志位 标志位说明标志位说明 eth0表示第一块物理网卡MTU分组的最大传送单元 HWaddr表示网卡的物理地址Metric计算路由成本的度量值跳数 Link encap表示网卡OSI物理层名称RX packets接收的数据包总数 inet addr网卡的IP地址TX packets发送的数据包总数 Bcast广播地址collisions数据包冲突总数 Mask子网掩码txqueuelen传送队列的长度 UP BROAD CAST MULTICAST表示网络接口处于活动状态 2. 临时设置网络接口卡 1) 配置IP地址 可以使用ifconfig命令来设置或修改网卡的IP地址和子网掩码,格式如下: ifconfig 网卡名 IP地址 netmask 子网掩码 例如,要把第一块物理网卡的IP地址设置为192.168.1.100,将子网掩码设置为255.255.255.0,其操作如下: [root@RHEL ~]# ifconfig eth0 192.168.1.100 netmask 255.255.255.0 2) 配置虚拟网卡IP地址 在实际工作中,Linux支持一块网卡拥有多个IP地址,在这种情况下,需要设置虚拟网卡来实现。例如,为第一块网卡eth0设置一个虚拟网卡,其IP地址设为192.168.1.10,子网掩码设为255.255.255.0,操作如下: [root@RHEL ~]# ifconfig eth0:1 192.168.1.10 netmask 255.255.255.0 使用ifconfig命令为网卡添加或修改IP地址等信息时会立即生效,如果ifconfig命令中不指定netmask,则系统会自动配置相应网段的默认子网掩码。但该命令不会修改网卡的配置文件,系统重启或网卡禁用后又重启,其IP地址失效,将恢复为网卡配置文件中所指定的IP地址。 3) 更改网卡MAC地址 MAC(mandatory access control,强制访问控制)地址又称为物理地址或硬件地址,它是全球唯一的地址,由网络设备制造商生产时写入网卡内部。MAC地址表示为长度为48位的十六进制数,每两个十六进制数之间用冒号隔开,如前面网卡的IP地址为00:0C:29:6A:C6:27,其中前6位十六进制数00:0C:29代表网卡制造商的编号,它由电气电子工程师协会分配,后6位十六进制数6A:C6:27代表制造商所生产的网卡的系列号。要更改MAC地址,需要先禁用该网卡,然后使用ifconfig命令进行修改,格式如下: ifconfig 网卡名 hw ether MAC地址 例如,要将eth0的MAC地址改为00:22:33:44:55:66,操作如下: [root@RHEL ~]# ifconfigeth0 hw ether 00:22:33:44:55:66 4) 启用和禁用网卡 启用和禁用网卡依然可以使用ifconfig命令,格式如下: ifconfig 网卡名 down//禁用网卡 ifconfig 网卡名 up//启用网卡 例如,启用和禁用eth0的操作分别如下: [root@RHEL ~]# ifconfigeth0up [root@RHEL ~]# ifconfigeth0down 如果生成了相关配置文件,也可以使用“ifdown网卡名”命令来禁用网卡,使用“ifup 网卡名”命令来启用网卡。 [root@RHEL ~]# ifupeth0 [root@RHEL ~]# if downeth0 3. 修改网卡配置文件永久生效 ifconfig命令修改的网卡配置信息只是临时生效,重启系统后失效,要使网上的配置信息长期永久有效,必须使用Vi编辑器直接修改网卡配置文件,通过参数来配置网卡,使其永久生效。网卡的配置文件位于/etc/sysconfig/networkscripts/目录下,每块网卡有一个单独的配置文件,可以通过文件名来找到每块网卡的配置文件,配置文件的每行代表一个参数值,系统启动时通过读取该文件的所有记录来配置网卡。 例如,要把eth0的IP地址设置为192.168.1.100,利用Vi编辑器修改网卡的配置文件/etc/sysconfig/networkscripts/ifcfgeth0如下: [root@RHEL ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0 在Vi编辑器中修改IP地址,如图55所示。 图55在Vi编辑器中网卡配置文件 如果要在图55所示的这块物理网卡eth0上设置另一个IP地址192.168.1.10,则必须复制/etc/sysconfig/networkscripts/ifcfgeth0配置文件,生成eth0:1别名文件,并使用Vi编辑器修改配置文件eth0:1,如图56所示,其操作如下: [root@RHEL ~]#cp /etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network- scripts/ ifcfg-eth0:1 [root@RHEL ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 修改网卡配置文件后,必须重启网卡或重新启动计算机才能使设置生效。 可以使用如下命令来重启网络服务: [root@localhost ~]#servicenetworkrestart [root@localhost ~]# 图56配置网卡第二个IP地址 可以使用ip addr命令查看网上的配置参数,操作如下: [root@localhost ~]# ip addr 1: lo: mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether00:0c:29:07:c4:6a brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.10/24 brd 192.168.1.255 scope global secondary eth0:1 inet6 fe80::20c:29ff:fe07:c46a/64 scope link valid_lft forever preferred_lft forever [root@localhost ~]# 从上面可以看到eth0有两个IP地址。 5.2.3使用图形化方法配置网络 在RHEL 6.5中,可以使用图形化的网络配置工具来完成主要的网络设置工作,网络的图形配置工具有两种: 一种是系统菜单方式,另一种是systemconfignetwork命令方式。 1. 菜单方式 (1) 选择“系统”→“首选项”→“网络连接”选项,如图57所示,弹出“网络连接”对话框,如图58所示,可以看到已有的网络接口设备。 图57选择“网络连接”选项 图58“网络连接”对话框 (2) 选择“网络连接”对话框中的System eth0设备,单击“编辑”按钮,弹出如图59所示的对话框。对话框中有“有线”“802.1x安全性”“IPv4设置”“IPv6设置”4个选项卡,选择“IPv4设置”选项卡来设置IP地址,如图510所示。如果网络中存在DHCP服务器,则选择“方法”下拉列表中的“自动(DHCP)”选项; 如果要手动设置,则选择“手动”选项,然后单击“添加”按钮,在“地址”下对应的文本框中输入IP地址,在“子网掩码”下对应的文本框中输入网掩码,在“网关”下对应的文本框中输入默认网关。这里设置IP地址为192.168.1.100、子网掩码为255.255.255.0、网关为192.168.1.100,如图511所示。 图59编辑网络连接对话框 图510“设置IPv4”选项卡 图511设置IP地址 (3) 在如图511所示的对话框中,还可以设置DNS服务器和路由,在“DNS服务器”文本框中输入DNS服务器的地址,如果有多个DNS服务器地址可使用逗号分隔开,如202.96.128.166,202.96.134.133。若要设置路由,应单击“路由”按钮。 2. systemconfignetwork命令方式 在终端中以root权限输入systemconfignetwork或systemconfignetworktui命令,打开如图512所示的窗口。在这里可以选择“设备配置”来设置IP地址或选择“DNS配置”来设置DNS服务器; 使用↑键、↓键或Tab键来选择设置项,同样可以设置IP地址和DNS服务器地址。 图512systemconfignetwork命令方式 5.3熟悉网络测试命令 Linux提供了大量的网络诊断命令行工具,使用这些工具可以测试网络状态,进而可以迅速判断和分析网络故障可能的原因。Linux中常用的网络诊断工具主要有ping、traceroute及netstat等命令。 5.3.1ping命令 ping命令是常用的网络诊断命令之一,它是通过向目标主机发送一个一个数据包及接收数据包的回应来判断主机和目标主机之间网络的连接情况的。ping命令提供两个基本服务功能: 一个是用来确定网络上远程目标主机是否可达,测试系统之间的连通性问题; 另一个是提供基本的网络性能统计数据,该数据可用于诊断与通信量相关的网络问题。ping命令的基本格式如下: ping[选项]目标主机名或IP地址 ping命令的常用选项及含义如下。 (1) c——用于设定ping命令发出的ICMP数据包的数量,如果不指定此选项,则会无限次、不停地发送数据包直到用户按Ctrl+C组合键才中止命令。 (2) s——设置ping命令发出的ICMP数据包的大小,默认的数据包大小为64字节,包括8字节的ICMP协议头和56字节的测试数据,再添加20字节的IP协议头,则显示的为84字节,最大设置值为65 507字节。 (3) t——设置数据包的生存期(time to live,TTL)。 (4) i——设置ping命令发出每个ICMP数据包的时间间隔,无此选项时,默认的时间间隔为1s。 (5) R——记录路由过程。 (6) r——忽略普通的路由表,直接将数据包发送到远程主机上。 (7) v——详细显示命令的执行过程。 (8) p——设置填满数据包的范本样式。 (9) I——设置指定的网络接口发送数据包,如果系统有多个网络接口,本选项指定发送的接口。 (10) f——极限检测,以最小的间隔来测试。 举例: [root@localhost ~]# ping -c 6 192.168.1.10 PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data. 64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.043 ms 64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.087 ms 64 bytes from 192.168.1.10: icmp_seq=3 ttl=64 time=0.078 ms 64 bytes from 192.168.1.10: icmp_seq=4 ttl=64 time=0.084 ms 64 bytes from 192.168.1.10: icmp_seq=5 ttl=64 time=0.054 ms 64 bytes from 192.168.1.10: icmp_seq=6 ttl=64 time=0.054 ms --- 192.168.1.10 ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 5001ms rtt min/avg/max/mdev = 0.043/0.066/0.087/0.019 ms [root@localhost ~]# 上面的信息提供了报文的尺寸、目标设备的主机名或IP地址、序号、往返时间及统计信息摘要。其中,icmp_seq是数据包的序号,从1开始,因为ping命令有c 6,所以共发出6个数据包; ttl为64; time为数据包的响应时间,单位为毫秒(ms),即发送请求数据包到接收到响应数据包的整个时间,该时间越短,说明网络的延迟越小,速度越快。在ping命令终止后,会在下方给出统计信息,显示发送及接收的数据包、丢包率及响应时间等信息,其中的丢包率越低说明网络状况良好、越稳定。最底行显示对所有应答计算最小、平均和最大往返时间,该时间也是以毫秒为单位显示的。 5.3.2traceroute命令 traceroute命令的功能是跟踪从当前主机到目标主机沿途所经过的网络节点,并显示这些中间节点的IP地址和响应时间。该命令跟踪本地与远程主机之间的UDP数据包,并根据接收到的回应信息判断网络故障可能的位置。traceroute命令向目标主机发送UDP数据包,并为数据包设置一个较小的TTL值,路由器收到数据报时会将TTL减1。当TTL为0时,路由器会将数据包丢弃,并向源主机发送一个ICMP消息。如果路由器在5s内没有回应,则显示为*,表示该路由器在规定的时间内没有响应对它的探测,这样就可以根据返回的信息判断网络故障可能发生的位置。 traceroute命令的格式如下: traceroute[选项]目标主机名或IP地址[datasize] traceroute命令的常用选项及含义如下。 (1) p <端口号>——设置UDP传输协议的端口号,默认值为33434。 (2) q——设置TTL测试数目(默认为3)。 (3) t——设置检测数据包的TOS数值,即设置测试包的服务类型。 (4) n——直接使用IP地址而非主机名称,即不进行IP地址到域名的解释。 (5) d——使用Socket层级的排错调试功能。 (6) f——设置第一个检测数据包的存活数值TTL的大小。 (7) g——设置来源路由网关,IPv4最多可设置8个。 (8) i——使用指定的网络接口来送出数据包。 (9) I——使用ICMP回应取代UDP资料信息。 (10) m——设置检测数据包的最大存活数值TTL的大小,默认值为30。 (11) r——忽略普通的Routing Table,直接将数据包送到远端主机上。 (12) s——设置本地主机送出数据包的IP地址。 (13) w——设置等待远端主机回报的时间。 (14) x——开启或关闭数据包的正确性检验。 (15) data size——设置每次测试包的数据字节长度,默认为40字节。 举例: [root@localhost ~]# traceroute www.microsoft.com traceroute to www.microsoft.com (23.38.205.181), 30 hops max, 60 byte packets 1a23-38-205-181.deploy.static.akamaitechnologies.com (23.38.205.181)181.895 ms181.855 ms183.966 ms [root@localhost ~]# 5.3.3netstat命令 netstat命令是network statistics的缩写,其主要用于检测主机的网络配置和状况,用于查看与IP、TCP、UDP和ICMP协议相关的统计数据,可以查看显示网络连接(包括进站和出站)、系统路由表、网络接口状态等,功能非常强大。 netstat命令的格式如下: netstat[选项] netstat命令的常用选项及含义如下。 (1) r——显示当前主机路由表的信息。 (2) a——显示当前主机所开放的所有端口。 (3) t——显示TCP传输协议的连接状况。 (4) u——显示UDP传输协议的连接状况。 (5) i——显示所有网络接口的统计信息表。 (6) l——显示所有正处于监听状态的服务和端口。 (7) p——显示正在使用端口的服务进程号和服务程序名称。 (8) c——持续列出网络状态,监控连接情况。 (9) s——显示按协议统计的网络信息,默认显示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP和UDPv6的统计信息。 (10) n——以数字的方式显示IP地址和端口号。 (11) e——显示以太网的统计信息,此选项可以与a选项组合使用。 举例: [root@localhost ~]# netstat -atn Active Internet connections (servers and established) ProtoRecv-QSend-QLocal AddressForeign Address State tcp000.0.0.0:1110.0.0.0:*LISTEN tcp000.0.0.0:220.0.0.0:*LISTEN tcp00127.0.0.1:6310.0.0.0:*LISTEN tcp00 0.0.0.0:410480.0.0.0:*LISTEN tcp00 127.0.0.1:250.0.0.0:*LISTEN tcp01 192.168.2.100:46826173.194.127.88:80SYN_SENT tcp01 192.168.2.100:45585173.194.127.95:80SYN_SENT tcp10 192.168.2.100:5600063.146.69.10:80CLOSE_WAIT tcp01 192.168.2.100:50853173.194.127.110:443SYN_SENT tcp01 192.168.2.100:46827173.194.127.88:80SYN_SENT tcp01 192.168.2.100:45587173.194.127.95:80SYN_SENT tcp01 192.168.2.100:52622173.194.127.56:80SYN_SENT tcp01 192.168.2.100:46059173.194.127.102:443SYN_SENT tcp01 192.168.2.100:46062173.194.127.102:443SYN_SENT tcp01 192.168.2.100:53972180.97.33.96:80FIN_WAIT1 tcp01 192.168.2.100:35671173.194.127.104:443SYN_SENT tcp01 192.168.2.100:37706180.149.131.35:80FIN_WAIT1 tcp01 192.168.2.100:50851173.194.127.110:443SYN_SENT tcp00:::36237:::*LISTEN tcp00:::111:::*LISTEN tcp00:::22:::*LISTEN tcp00::1:631:::*LISTEN tcp00::1:25:::*LISTEN 上面的输出结果从左到右总共有6个字段,各个字段的含义如下。 (1) Proto——表示协议的类型,如TCP、UDP等。 (2) RecvQ——由远程主机传送来的数据已经在本地接收缓冲,但还没有接收的字节数。 (3) SendQ——表示对方没有收到的数据或都还没有确认(ACK)的字节数。 (4) Local Address——表示本地地址,默认显示主机名和服务名称,若使用n选项则显示主机的IP地址及端口号。 (5) Foreign Address——表示与本机连接的远程主机的地址,默认显示主机名和服务名称,若使用n选项则显示主机的IP地址及端口号。 (6) State——表示连接的状态,常见的状态有LISTEN(表示监听状态,等待接收入站的请求)、ESTABLISHED(表示本机已经与其他主机建立好连接)、TIME_WAIT(等待足够的时间,以确保远程TCP接收到连接中断请求的确认)、SYN SENT(尝试发起连接)、SYN RECV(接收发起的连接)等。 5.3.4arp命令 arp命令用于将某个IP地址解析为对应的MAC地址。在网络通信中,接收方主机的数据链路层通过MAC地址判断数据是否是发送给自己的,从而决定是接收还是丢弃该数据帧。因此,为了确保接收方能够正确地接收到数据,发送方需要知道接收方的MAC地址。由于MAC地址比IP地址更难以记忆,因此通常并不需要记住所有其他主机的MAC地址,而是使用ARP协议自动进行MAC地址的解析。 其工作原理是,当一台主机要发送数据时,首先查看本机MAC地址缓存中有没有目标主机的MAC地址,如果有就使用缓存中的结果,如果没有则ARP协议会发出一个广播包,该广播包要求查询目标主机IP地址对应的MAC地址,拥有该IP地址的主机会发出一个回应,应答帧中包含目标主机的MAC地址,这样发送方就得到了目标主机的MAC地址。如果目标主机不在本地子网中,则ARP协议解析到的MAC地址是默认网卡的MAC地址。 使用arp命令可以配置和查看Linux操作系统的ARP缓存,包括查看删除某个缓存条目或添加新的IP地址和MAC地址的静态映射条目。 arp命令的格式如下: arp[选项] arp命令的常用选项及含义如下。 (1) a——以BSD方式显示所有主机。 (2) e——以默认的Linux方式显示所有主机。 (3) d——删除指定的条目。 (4) n——不解析主机名称。 (5) i——指定网络接口,如eth0。 (6) f——从指定的文件读入ARP绑定。 (7) s——添加ARP缓存条目。 举例: [root@RHEL ~]#arp AddressHWtypeHWaddressFlags MaskIface 192.168.2.1ether c8:3a:35:1f:ab:b8Ceth0 上面显示的各个字段的含义如下。 (1) Address——主机名或IP地址,这些主机名或IP地址由应答记录在ARP信息中,该地址用来查找ARP表来确定需要的信息是否存在。当该地址显示的是IP地址而不是主机名时,表示该IP地址不能解释到一个主机名或使用了n选项。 (2) HWtype——表示网络接口的类型,ether表示以太网,ARCnet表示arcnet、PROnet表示pronet、AX.25表示ax25、NET/ROM表示netrom。 (3) HWaddress——表示MAC物理地址,使用冒号隔开的6个十六进制数表示。 (4) Flags Mask——提供ARP的其他信息,关键字有P、M、C等,标记为P的ARP信息表示永久(或静态)的,并且是在ARP协议之外定义的; C表示一个普遍完成的表项,大多数的表项会出现这个标志; M表示永久(静态)的ARP表项。 (5) Iface——指出连接到本地网络的网络接口,该ARP信息实际上是从该接口获得的,大多数系统仅包含一个接口,eth表示以太网,它是以太网硬件设备驱动程序的名称,最后的0指出该接口是系统定义的第一个接口。 项 目 小 结 TCP/IP协议是Linux网络基本协议,Linux主机必须配置TCP/IP网络配置参数才能与其他主机进行通信。本项目首先介绍TCP/IP体系结构、IP地址、子网掩码、端口、域名等TCP/IP基本知识。其次,介绍Linux网络配置相关文件。再次,详细介绍Linux网络配置方法,包括使用shell网络基本配置命令来配置主机名和网络接口,Linux主机有两种途径来获得网络配置参数: 一种是由DHCP服务器动态分配; 另一种是用户手工配置,用户既可以利用图形化工具进行网络配置,又可以利用shell命令进行网络配置。最后,介绍Linux网络测试命令,包括ping、traceroute、netstat和arp命令。