Linux系统学习之网络管理
网络接口配置
使用ifconfig检查和配置网卡 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:65536 Metric:1
RX packets:3576 errors:0 dropped:0 overruns:0 frame:0
TX packets:3576 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1781256 (1.6 MiB) TX bytes:1781256 (1.6 MiB) venet0(eth0) Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00
-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:149510 errors:0 dropped:0 overruns:0 frame:0
TX packets:130564 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:34270807 (32.6 MiB) TX bytes:33492903 (31.9 MiB) venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:23.228.103.10 P-t-P:23.228.103.10 Bcast:23.228.103.10
Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 在我的虚拟机上eth0叫venet0,通常不管是eth0也好或venet0也罢,表示的都是以太网的第一块网卡。
其中eth是Ethernet的前三个字母,代表以太网,
0代表第一张网卡,第二块网卡则是eth1,以此类推。
Link encap是指 封装的方式为以太网;HWaddr是指网卡的硬件地址;
inet addr是指网卡当前的IP地址;Broadcast是广播地址
(这部分是由系统根据IP和掩码算出来的,一般不需要算出来的,一般不需要手工设置);
Mask是指掩码;UP说明了该网卡目前处于活动状态;
MTU代表最大的存储单位,即此网卡一次所能传输的最大分包;RX和TX分别代表接受和发送的包;
collision代表发送的冲突数,如果发现值不为0则很可能网络存在故障;txqueuelen代表传输缓冲区长度大小;
第二个设备是lo,表示主机的环回地址,这个地址是用于本地通信的。 关闭和启动网卡的命令是:
ifconfig venet0 down
ifconfig venet0 up 将IP配置信息写入配置文件 RedHat和CentOS系统的网络配置文件所在目录为/etc/sysconfig/network-scripts/,
通常所在配置文件为ifcfg-eth0,如果有第二块物理网卡,则配置文件为ifcfg-eth1,以此类推。
cat ifcft-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes 其中,DEVICE变量定义了设备的名称;BOOTPROTO变量定义了获取IP的方式,这里BOOTPROTO=dhcp的含义是:
系统在启用这块网卡时,IP将会通过dhcp的方式获得;还有一个可选的值为static,表示静态设置的IP;ONBOO
T变量定义了启动时是否激活使用该设备,yes表示激活,no表示不激活。
路由和网关的设置
Linux主机之间使用IP进行通信,假设A主机和B主机同在一个网段内且网卡都处于激活状态,
则A具备和B同样的直接通信的能力(通过交换机或简易的HUB)。
但是如果A主机和B主机处于两个不同的网段,则A必须通过路由器B才能和B通信。
一般来说,路由器属于IT设备的基础设置,每一个网段都应该有至少一个网关。
在Linux上可使用route命令添加默认网关。假设添加的网关是192.168.160.55,添加的方式如下: route add default gw 192.168.160.55 如果想删除的话只需将add改为del即可。 该命令可以简写为如下形式:
route del default [root@Cfhost-170820-UCNK /]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 venet0
0.0.0.0 192.168.160.55 0.0.0.0 UG 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0 如果只使用route命令添加网关,一旦系统重启,配置信息就不存在了,必须将这种配置信息写入配置文件
中才能永久保存。可以进入到/etc/sysconfig/network-scripts/目录下,找到ifcfg-eth0目录,
添加GATEWAYT=192.168.160.55就可以永久保存。
DNS客户端配置
因特网发明初期,联网的主机数量有限,想要访问对方的主机只需要输入对方的IP地址
即可。
但是随着主机的不断增长,单凭人脑已经无法记忆越来越多的IP地址了。为了解决这个问题,
人们使用hosts主机来记录主机名和IP地址的对应关系,这样访问对方的主机时,就不需要使用IP了,只需
要使用主机名。这个文件在linux下就是/etc/hosts. hosts文件的具体作用如下:
1.为了加快域名解析。当访问网站时,系统会首先查看hosts文件中是否有记录,如果记录存在则直接解析
出对应的IP,这时则不需要请求DNS服务器。 2.方便小型局域网用户使用的内部设备。很多单位的局域网中都存在着不少内部应用系统(比如办公自动化
OA、公司论坛等),平时在工作中也都需要访问,但是由于这些局域网太小而不必为此专门设置DNS服务器,
那么此时使用hosts文件则能简单地解决这个问题。 假设公司里有两台主机,B主机的IP为10.1.1.145,为了方便访问B主机,可以再A主机的/etc/hosts文件中添加一条记录:
10.1.1.145 hostB 完成后再主机上使用ping命令测试B主机的连通性,再ping的输出中可以看到主机名hostB
被正确地解析为10..1.1.145,如果没有之前添加的记录,
这里将会显示ping:unknown host hostB的错误。 /etc/resolv.conf 使用hosts文件毕竟只能做有限的主机记录,无法将所有已知的主机名记录到hosts文件中。因此
,当今几乎所有的主机都在使用DNS来解析地址,从技术上来说,DNS就是全互联网上主机名
及其IP地址对应的数据库。设置主机为DNS客户端的配置文件就是/etc/resolv.conf,其中包含namesever、
、、search、domain这三个关键字。
[root@Cfhost-170820-UCNK ~]# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver关键字后面会紧跟一个DNS主机的IP地址,可以设置2~3个nameserver,但是主机在查询域名时
,会首先查询第一个DNS,当该DNS不可用时,才会查询第二个DNS,以此类推。 注意:虽然你可以在该文件中定义多于3个的nameserver,但是这并没有意义,因为系统永远不会用
到第四个nameserve search关键字后面跟的是一个域名。每个主机严格来说都应该有一个FQDN(全限定域名)
,所以往往域名就很长,如果这里写成search google.com,那么www就代表www.google.com,这个关键
字后面可以跟多个域名。 domain关键字和search类似,不同的是domain后面只能跟一个域名
网络测速工具
ping 程序的目的在于测试另外一台主机是否可到达,一般来说,如果ping不通某台机器,就是说明对方主机已经严重出问题,但是不排除由于链路防火墙的因素、ping包被丢弃等原因
造成ping不通情况。
ping命令最简单的使用方式是接收一个主机名或IP作为单一的参数,在按回车键后,
执行ping命令的主机会向对端主机发送一个ICMP的echo请求包,对端主机在接收到这个包后
会回应一个ICMP的reply回应包。在linux下ping命令并不会主动停止,需要使用Ctry+C
组合键来停止,ping命令将会对发出的请求包和收到的回应包进行计数,这样就能计算网络丢包率。 [root@Cfhost-170820-UCNK ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39: icmp_seq=1 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=2 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=3 ttl=50 time=150 ms
64 bytes from 14.215.177.39: icmp_seq=4 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=5 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=6 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=7 ttl=50 time=149 ms
64 bytes from 14.215.177.39: icmp_seq=8 ttl=50 time=150 ms
^C
host
host命令是用来查询DNS记录的,如果使用域名作为host的参数,命令返回该域名的IP,
如下所示:
[root@Cfhost-170820-UCNK ~]# host www.google.com
www.google.com has address 172.217.11.164
www.google.com has IPv6 address 2607:f8b0:4007:804::2004 注意:如果使用host www.google.com
出现-bash: host: command not found
说明缺包,执行yum install bing-utils命令即可解决
traceroute
在IP包结构中有一个定义数据包生命周期的TTL字段,该字段用于表明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接收的端口为主机不可能存在的端口--
常见网络故障排查:
首先网络故障分为两类:硬件故障和软件故障
硬件故障又主要分为网卡物理损坏、链路故障等原因。其中网卡物理损坏指网卡设备由于使用中发送电子元件损坏而造成网卡设备无法继续使用的情况;链路故障横多时候表现为网线或者水晶头在制作过程中出现线路问题,或由于线路老化等原因造成物理链路断开,从而致使网络无法物理连通的情况。
软件主要表现为网卡驱动故障,也就是操作系统对网卡驱动的不兼容,这个问题往往需要安装对应的网卡设备驱动来解决。
基于以上两点,将解决网络在故障时采用的步骤如下:
第一步 是要确认网卡本身是否能正常工作?利用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,如果可以则说明本地的路由设置正确、否则就要确认路由设备是否做了正确的net或路由设置。
第六步确认是否能ping通公网上的某个域名,如果能ping 通则说明DNS部分设置正确。
即便实际工作中可能受到诸如更复杂的网络环境、安全ACL、防火墙等众多的因素的影响,而加大了网络排查的困难,但以上步骤是排除网络故障的主要环节,在排除不同的网络个性化的设置之后,排查步骤都与此类似
Linux系统学习之网络管理的更多相关文章
- Linux系统学习笔记:文件I/O
Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...
- 基于Linux系统的Nagios网络管理模块的实现
基于Linux 系统的Nagios网络管理模块的实现 1.引言 随着计算机网络的普及,网络管理已成为信息时代中最重要的问题之一.在现有的技术条件下,人们希望有一个更加稳定可靠的网络环境.计算机网络管理 ...
- 老司机浅谈linux系统学习技巧
Linux起源于20世纪70年代,是一种优秀的操作系统系统.初次接触到linux这个系统是在大学期间,这样才发现除了windows外的另外一个有趣系统.开始抱着好奇的心态去了解,随着深入学习,笔者被它 ...
- Linux系统学习优缺点
Linux是一套操作系统,按照鸟哥的说法Linux提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构,这个架构是沿袭Unix良好的传统而来的,功能强大而且稳定性卓越.其实Torvalds ...
- 网工的Linux系统学习历程
偶遇篇作为一名通过思科CCNP认证的网络工程师,专注于网络技术.但在日常的工作中,难免不接触到服务器,对于大多数服务器来说,鉴于稳定性等因素的考虑,基本使用的都是Linux系统,包括RHEL.Cent ...
- 谈谈我对Linux系统学习的历程回顾
众所周知,Windows 和Linux 是目前最流行的2个操作系统.Windows系统适合普通用户,它的优势是图形化界面,简单易用,使用起来门槛很低,很容易上手,所以,windows占有了大多数普 ...
- 说一说本人对linux系统学习的方法和经验
摘要: 相信大伙都听说过linux系统,然而对于这个系统,总使让新手感觉茫然,诺达的系统.下面是一段百度中的介绍: 相信大伙都听说过linux系统,然而对于这个系统,总使让新手感觉茫然,诺达的系统.下 ...
- Linux 系统学习梳理_【All】
第一部分---基础学习 00.Linux操作系统各版本ISO镜像下载 00.Linux系统下安装Vmware(虚拟机) 00.Linux 系统安装[Redhat] 00.Linux 系统安装[Cent ...
- Linux系统学习笔记(1)
学习地址:http://www.runoob.com/linux/linux-tutorial.html 1.学习Windows和Linux哪个比较难? 前期是Windows容易学习,后期是Linux ...
随机推荐
- [PHP] 数据结构-反转链表PHP实现
1.常见方法分为迭代和递归,迭代是从头到尾,递归是从尾到头2.设置两个指针,old和new,每一项添加在new的后面,新链表头指针指向新的链表头3.old->next不能直接指向new,而是应该 ...
- Java并发编程:什么是CAS?这回总算知道了
无锁的思想 众所周知,Java中对并发控制的最常见方法就是锁,锁能保证同一时刻只能有一个线程访问临界区的资源,从而实现线程安全.然而,锁虽然有效,但采用的是一种悲观的策略.它假设每一次对临界区资源的访 ...
- 了解java虚拟机—在TALB上分配对象(10)
由于对象一般会分配在堆上,而堆是全局共享的.因此在同一时间,可能有多个线程在堆上申请空间.每次对象分内都必须要进行同步,因此TLAB这种线程专属的区域来避免多线程冲突.TLAB本身占用了eden区的空 ...
- Java - 线程池设计与选择
http://ifeve.com/how-to-calculate-threadpool-size/ 任务一般可分为:CPU密集型.IO密集型.混合型,对于不同类型的任务需要分配不同大小的线程池. C ...
- POM、STS、IOC、DI、AOP
POM:全称:poject object model 说明:项目对象模型.maven用来管理项目的依赖.编译.文档等信息 STS: 全称:spring tool suite 说明:spring 基于e ...
- Django框架理解和使用常见问题
1.什么是中间件? 中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出. 中间件一般做认证或批量请求处理,django中的中间 ...
- Jmeter在非GUI(命令行)模式下生成测试报告
根据各大招聘网站上的需求来看,熟悉Jmeter做性能测试已经几乎成为必要条件了. 那么今天在这个给大家安利一波,怎么使用Jmeter在非GUI(命令行)模式下生成测试报告呢?? 条件准备: 1.Jme ...
- 微信小程序-01-项目组成文件介绍(入门篇)
自古开篇先说两句,写这些笔记不是学习用的,主要是后续分享一些遇到的坑,碰到过什么样的问题,怎么去解决,如果你不是一个很耐心无看文章的人,建议去 网易云课堂找一些课程,跟着别人的脚步或许会更有动力,我的 ...
- git svn 流程
$ git svn clone http://192.168.10.208/svn/DeptDoc $ git svn rebase $ git commit -asm "svn tra ...
- [SequenceFile_3] MapFile
0. 说明 MapFile 介绍 && 测试 1. 介绍 对 MapFile 的介绍如下: MapFile 是带有索引的 SequenceFile MapFile 是排序的 Seque ...