目录
一、网络接口配置
1、动态配置
2、永久配置
二、路由和网关设置
1、动态配置
2、永久配置
三、DNS客户端配置
1、本地DNS配置
2、外部DNS配置
四、网络测试工具
1、ping
2、host
3、traceroute
4、常见网络故障排查
一、网络接口配置
1、动态配置
ifconfig命令:用来在Linux系统中查看当前系统的网络接口。
如图中的eno***就是我们的网卡,这里是系统默认的命名,这个是可以改的,一般我们改成eth0,也就是Ethernet以太网的缩写,网卡命名从eth0、eth1往后命名。
在日常中,我们经常希望指定eth0的IP地址,那么可以这样输入命令:
ifconfig eth0 192.168.xx.xx netmask 255.255.255.0
或者
ifconfig eth0 192.168.xx.xx/24
想手工断开/启用网卡的话就是以下这命令:
ifconfig eth0 down #断开网卡
ifconfig eth0 up #启用网卡
也可以简写为:
ifdown eth0 #断开网卡
ifup eth0 #启用网卡
当然,上面的eth0名称是以实际自己的网卡名称为准哦。
以上的配置是一种动态配置,也就是临时配置,该配置暂时保存在当前运行的内核中,一旦系统重启就会丢失。那我们下面来看下怎么做永久配置。
2、永久配置
系统启动后是从配置文件中读取的配置信息,所以我们要永久配置的话,就得直接去修改配置文件。
Redhat和CentOS系统的网络配置文件所处的目录为 /etc/sysconfig/network-scripts/,eth0的配置文件为ifcfg-eth0,即“ifcfg-网卡名称”。
下面看下我的网络配置文件默认情况:
对于这里默认的配置项不全,可能会有的配置项这里都尽量说明一下:
TYPE=Ethernet | 表示网卡的类型为以太网型 |
BOOTPROTO=none | 是启动时IP取得的协议,这里默认是动态主机,用dhcp。此值也可以改为static,即静态设置IP地址 |
PEERDNS=yes | 表示允许从DHCP获得的DNS覆盖本地的DNS |
PEERROUTES=yes | 是否从DHCP服务器获取用于定义接口的默认网关的信息的路由表条目 |
IPV6INIT=yes | 表示支持IPv6,no的话表示不支持 |
IPV6_AUTOCONF=yes | 表示自动配置IPv6 |
UUID=xxx | 这里是唯一标识,每台电脑配的都应不一样,避免冲突可以删掉 |
NAME=eth0 | 网络连接的名字 |
DEVICE=eth0 | 表示设定网卡的名称,它要跟文件名称对应 |
ONBOOT=yes | 表示在开机的时候启动网卡,这里肯定改成yes,如果选择no则网卡在系统引导都不会被分配IP地址 |
IPADDR=xx.xx.xx.xx | 配置该网卡的静态ip地址 |
NETMASK=255.255.255.0 | 配置子网掩码 |
GATEWAY=192.168.0.1 | 配置网关 |
HWADDR=00:14:22:1B:71:20 | 指网卡的MAC地址,会默认指定,可以不配置 |
USERCTL=no | 表示不允许普通用户修改配置 |
DNS1=8.8.8.8 | 第一个DNS配置,8.8.8.8为Google提供的免费DNS服务器的IP地址 |
DNS2=8.8.4.4 | 第二个DNS配置 |
IPV4_FAILURE_FATAL=yes | 如果ipv4配置失败禁用设备 |
IPV6_FAILURE_FATAL=yes | 如果ipv6配置失败禁用设备 |
PREFIX=24 | 子网掩码24位 |
DEFROUTE=yes | default route,是否把这个eth设置为默认路由 |
一般我们这里配置以下主要几项就可以了的:
凡是修改完配置文件,都需要重启服务,命令如下:
service netwwork restart
二、路由和网关设置
1、动态配置
Linux主机之间是通过IP进行通信的,如果A主机和B主机在同一个网段内且网卡都已激活,则A和B可以直接通信(通过交换机或简易HUB)。如果A和B处于不同网段,那么A必须通过路由器才能和B通信。一般每一个网段都会有一个网关。
这里可以用route命令配置:
route add default gw 192.168.31.1 #添加网关
route del default gw 192.168.31.1 #删除网关
route del default #删除网关
route -n #查看系统当前的路由表
2、永久配置
当然,跟上面一样,用命令的配置,一旦系统重启就失效了。为了永久生效,可以在上面的网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 中配置:
GATEWAY=192.168.0.1
也可以配置在/etc/sysconfig/network文件中,效果是一样的。
这里顺便提一下/etc/sysconfig/network文件中的配置项:
NETWORKING=yes | 网络是否工作,此处一定不能为no |
NETWORKING_IPV6=yes | ipv6网络是否工作 |
HOSTNAME=localhost.localdomain | 配置主机名,可以用hostname命令来查看当前主机名;hostname命令也可以临时配置主机名 |
GATEWAY=192.168.0.1 | 配置网关 |
三、DNS客户端配置
1、本地DNS配置
/etc/hosts文件用来做本地DNS的解析配置,输入ip、域名或主机名:
127.0.0.1 localhost #ip 域名或主机名
当我们“ping localhost”时,则等同于“ping 127.0.0.1” 。
2、外部DNS配置
hosts文件毕竟只能配置有限的主机名,那要解析所有的地址,就需要配置外部DNS。
/etc/resolv.conf文件用来配置外部DNS地址:
nameserver xx.xx.xx.xx #定义DNS服务器的IP地址,可以配置3个,从第一个开始解析
domain xx.com #定义本地域名
search www.xx.com xx.com #定义域名的搜索列表
sortlist #对返回的域名进行排序
- nameserver:表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。
- domain:声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。
- search:它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。domain和search不能共存;如果同时存在,后面出现的将会被使用。
- sortlist:允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。
四、网络测试工具
1、ping
ping命令用来向对端主机发送一个ICMP的echo请求包,对端主机接收到后会回应一个ICMP的reply回应包。
- 参数:
-c | 指定ping的次数 |
-i | 指定TTL值在对方的系统里停留的时间 |
-w | 如果ping没有回应,则在指定超时时间后退出;单位为毫秒 |
-t | 不停地ping,直至手动用Ctrl+C退出 |
-n | 指定发送数据包的个数,默认4 |
-l | 定义echo数据包的大小 |
-r | 在“记录路由”字段中记录传出和返回数据包的路由。 |
-f | TTL的作用是限制IP数据包在计算机网络中的存在的时间。TTL的最大值是255,TTL的一个推荐值是64。 在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。 |
-4 | 强行使用IPv4 |
-6 | 强行使用IPv6 |
- 使用:
ping www.baidu.com #发送ICMP包
ping www.baidu.com -c 3 #发送3次ICMP包
ping www.baidu.com -l 65500 -t #不停地发送大小为65500byte的数据包
2、host
host命令用来查询DNS记录。
指定在地址为114.114.114.114的DNS服务器中查询域名,而不是用/etc/resolv.conf文件中定义的DNS查询:
3、traceroute
traceroute (Windows 系统下是tracert) 命令利用ICMP 协议定位您的计算机和目标计算机之间的所有路由器。TTL 值可以反映数据包经过的路由器或网关的数量,通过操纵独立ICMP 呼叫报文的TTL 值和观察该报文被抛弃的返回信息,traceroute命令能够遍历到数据包传输路径上的所有路由器。
- 原理:
程序利用增加存活时间(TTL)值来实现其功能。每当数据包经过一个路由器,其存活时间就会减1。当其存活时间是0时,主机便取消数据包,并传送一个ICMP TTL数据包给原数据包的发出者。
程序发出的首3个数据包TTL值是1,之后3个是2,如此类推,它便得到一连串数据包路径。注意IP不保证每个数据包走的路径都一样。
- 详解:
在IP包结构中有一个定义数据包生命周期的TTL(Time To Live)字段,该字段用于表明IP数据包的生命值,当IP数据包在网络上传输时,每经过一个路由器该值就减1,当该值减为0时此包就会被路由器丢弃。这种设计可用于避免出现一些由于某种原因始终无法到达目的地的包不断地在互联网上传递(可以形象地称之为“幽灵包”),减少无谓的网络资源耗用。
不过路由器也不是“无声无息”地将TTL值为0的IP包丢弃的,它会同时给发送该IP数据包的主机发送一个ICMP“超时”消息,主机在接收到这个ICMP包后就同时能得到该路由的IP地址。
根据上面两个特点,人们写了一个检测数据包是如何经由路由器的工具—traceroute,我们可以想象一下该工具的工作原理:它先构造出一个TTL值为1的数据包发送给目的主机,这个数据包在经由第一个路由器时,路由器先将TTL值减1变为0,然后将该IP包丢弃,同时给发送一个ICMP消息,这样就得到了经过的第一台路由器的IP地址;然后再构造出一个TTL值为2的数据包,以此类推,就能得到该IP包经历的整条链路的路由器IP。
这里会有一个问题:traceroute如何确认该IP包成功地被目的主机接收了呢?因为目的主机即便收到了TTL值为1的数据包也不会发送ICMP通知给源主机的。这时traceroute所做的工作就是发送一个UDP包给目的主机,同时制定该UDP接收的端口为主机不可能存在的端口,主机在接收到这样的包后,由于端口不可达,则主机会返回一个“端口不可达”的通知,这样就能确认目的主机是否可以接收到数据包。
- 参数:tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
-d | 指定不对计算机名解析地址 |
-h maximum_hops | 指定查找目标的跳转的最大数目 |
-j computer-list | 指定在 computer-list 中松散源路由 |
-w timeout | 等待由 timeout 对每个应答指定的毫秒数 |
4、常见网络故障排查
第一步是要确认网卡本身是否能正常工作?利用ping工具可以确认这点。输入ping 127.0.0.1,然后看是否能正常ping通?这里的127.0.0.1被称为主机的回环接口,是TCP/IP协议栈正常工作的前提。如果ping不通,一般可以证实为本机TCP/IP协议栈有问题,自然就无法连接网络了。不过,出现这种现象的概率比较低。
第二步是要确认网卡是否出现了物理或驱动故障,使用ping本机IP地址的方式,如果能ping通则说明本地设备和驱动都正常。
第三步要确认是否能ping通同网段的其他主机。这一步主要是确认二层网络设备(比如交换机或者HUB)工作是否正常。如果ping不通往往说明二层网络上出现了问题,可能涉及交换机的端口工作模式、vlan划分等因素。
第四步要确认是否能ping通网关IP。如果数据包能正常到达网关,则说明主机和本地网络都工作正常。
第五步确认是否能ping通公网上的IP,如果可以则说明本地的路由设置正确,否则就要确认路由设备是否做了正确的nat或路由设置。
第六步确认是否能ping通公网上的某个域名,如果能ping通则说明DNS部分设置正确。
即便实际工作中可能会受到诸如更复杂的网络环境、安全ACL、防火墙等众多因素的影响,而加大了网络排查的困难,但以上步骤是排除网络故障的主要环节,在排除不同的网络之间个性化的设置之后,排查的主要步骤都与此类似。