Linux系统学习之网络管理
网络接口配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 使用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< br >-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 < br > Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 在我的虚拟机上eth0叫venet0,通常不管是eth0也好或venet0也罢,表示的都是以太网的第一块网卡。< br >其中eth是Ethernet的前三个字母,代表以太网,< br >0代表第一张网卡,第二块网卡则是eth1,以此类推。 Link encap是指 封装的方式为以太网;HWaddr是指网卡的硬件地址;< br >inet addr是指网卡当前的IP地址;Broadcast是广播地址< br >(这部分是由系统根据IP和掩码算出来的,一般不需要算出来的,一般不需要手工设置);< br >Mask是指掩码;UP说明了该网卡目前处于活动状态;< br >MTU代表最大的存储单位,即此网卡一次所能传输的最大分包;RX和TX分别代表接受和发送的包;< br >collision代表发送的冲突数,如果发现值不为0则很可能网络存在故障;txqueuelen代表传输缓冲区长度大小;< br >第二个设备是lo,表示主机的环回地址,这个地址是用于本地通信的。 关闭和启动网卡的命令是: ifconfig venet0 down ifconfig venet0 up 将IP配置信息写入配置文件 RedHat和CentOS系统的网络配置文件所在目录为/etc/sysconfig/network-scripts/,< br >通常所在配置文件为ifcfg-eth0,如果有第二块物理网卡,则配置文件为ifcfg-eth1,以此类推。< br >cat ifcft-eth0< br >DEVICE=eth0< br >BOOTPROTO=dhcp< br >ONBOOT=yes< br >< br >其中,DEVICE变量定义了设备的名称;BOOTPROTO变量定义了获取IP的方式,这里BOOTPROTO=dhcp的含义是:< br >系统在启用这块网卡时,IP将会通过dhcp的方式获得;还有一个可选的值为static,表示静态设置的IP;ONBOO< br >T变量定义了启动时是否激活使用该设备,yes表示激活,no表示不激活。< br > |
路由和网关的设置
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、防火墙等众多的因素的影响,而加大了网络排查的困难,但以上步骤是排除网络故障的主要环节,在排除不同的网络个性化的设置之后,排查步骤都与此类似
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述