Linux网络设置

查看及测试网络

查看及测试网络配置是管理Linux网络服务的第一步,本节将学习Linux操作系统中的网络查看及测试命令。其中讲解的大多数命令以普通用户权限就可以完成操作,但普通用户在执行/sbin/目录中的命令时需要指定命令文件的绝对路径。

查看网络配置

1. 查看网络接口地址

主机的网络接口卡(网卡)通常称为网络接口。在Linux 操作系统中,使用ifconfig 命令可以查看网络接口的地址配置信息(Interface Configuration)。

(1)查看活动的网络接口设备

若采用 mini 版 CentOS7  安装的系统,默认是没有 ifconfig 命令的,需要先通过 yum  方式安装 net-tools 软件包,才有 ifconfig 命令。在不带任何选项和参数执行 ifconfig 命令时,将显示当前主机中已启用(活动)的网络接口信息。

[root@localhost~]# ifconfig

(2)查看指定的网络接口信息

当只需要查看其中某一个网络接口的信息时,可以使用网络接口的名称作为 ifconfig 命令的参数(不论该网络接口是否处于激活状态)。例如,执行“ifconfig  ens33”命令后可以只查看网卡 ens33的配置信息

[root@localhost~]# ifconfig ens33
2. 查看主机名称

在 Linux操作系统中,相当一部分网络服务都会通过主机名来识别主机,如果主机名配置不当,可能会导致程序功能出现故障。使用hostname  命令可以查看当前主机的主机名,不用添加任何选项或参数,具体操作如下:

[root@localhost~]# hostname localhost.localdomain
3. 查看路由表条目

Linux操作系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向,是排除网络故障的关键信息。直接执行“route” 命令可以查看当前主机中的路由表信息,在输出结果中,Destination列对应目标网段的地址,Gateway  列对应下一跳路由器的地址,lface列对应发送数据的网络接口。

[root@localhost~]# route 

当目标网段为“default ”时,表示此行是默认网关记录;当下 一 跳为“gateway”时,表示目标网段是与本机直接相连的。但是,直接执行“route ”命令无法直接看出默认网关地址。

若结合“-n”选项使用,可以将路由记录中的地址显示为数字形式,这可以跳过解析主机名的过程,在路由表条目较多的情况下能够加快执行速度。

4. 查看网络连接情况

通过netstat  命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息,它是了解网络状态及排除网络服务故障的有效工具。以下是 netstat  命令常用的几个选项。

>  -a:    显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。

>  -n:    以数字的形式显示相关的主机地址、端口等信息。

>  -r:   显示路由表信息。

>  -l:显示处于监听(Listening ) 状态的网络连接及端口信息。

>  -t:  查看TCP(Transmission Control Protocol,   传输控制协议)相关的信息。   

>  -u:   显示 UDP(User   Datagram   Protocol, 用户数据报协议)协议相关的信息。 

>  -p:   显示与网络连接相关联的进程号、进程名称信息(该选项需要root 权限)。

通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的TCP连接信息,同时显示对应的进程信息。结合管道命令使用“grep” 命令,还可以在结果中过滤出所需要的特定记录。例如,执行以下操作可以查看本机中是否有监听“TCP 80”端口(即标准Web 服 务 ) 的

服务程序,输出信息中包括PID号和进程名称。

[root@localhost~]#netstat -anpt |grep ":80" tcp600…80 :…* LISTEN 20563/httpd

除了netstat,ss 命令也可以查看网络连接情况,它是Socket  Statistics 的缩写,主要用于获取socket 统计信息,它可以显示和netstat 命令类似的输出内容。但ss 的优势在于它能够显示更多更详细的有关TCP 和连接状态的信息,而且比netstat更快速更高效。要想使用ss 命令,首先确保iproute 程序包已被安装,可以通过yum 方式进行安装。以下是ss命令常用的几个选项。

>  -h:--help       通过该选项获取更多的使用帮助。

>  -V:--version  显示软件的版本号。

>  -t: -tcp 显示TCP协议的 sockets。

>  -u:--udp  显示UDP协议的 sockets。

> -n:--numeric  不解析服务的名称,如“22”端口不会显示成"ssh"。

>  -1: --listening  只显示处于监听状态的端口。

>  -p:--processes        显示监听端口的进程。

>  -a:-  -all  对 TCP  协议来说,既包含监听的端口,也包含建立的连接。

>  -r:--resolve    把 IP 解释为域名,把端口号解释为协议名称。

ss 命令的输出结果,可以提供TCP  和 UDP  的socket信息,以及各种服务建立的持久连结,熟悉这个命令有助于更好的发现与解决系统性能问题。

测试网络连接

用户访问网络服务的前提是网络连接处于正常状态。若网络连接不稳定,甚至无法连接,用户则无法正常访问网络服务。因此,当网络连接出现问题时,需要通过测试网络连接的命令来确定故障点。下面介绍几个常用的测试网络连接的命令。

1. 测试网络连通性

使用 ping 命令可以向目标主机持续地发送测试数据包,并显示反馈结果,直到按Ctrl +C  组合键后中止测试,并显示最终统计结果。

执行 ping 测试命令时,若不能获得从目标主机发回的反馈数据包,则表示在本机到目标主机之间存在网络连通性故障。例如,若看到“Destination    Host   Unreachable”的反馈信息,则表示目的主机不可达,可能目标地址不存在或者主机已经关闭;若看到"Network   is  unreachable”的反馈信息,则表示没有可用的路由记录(如默认网关),无法达到目标主机所在的网络。

当网络中存在影响通信过程稳定性的因素(如网卡故障、病毒或网络攻击等)时,使用 ping  命令测试可能会频繁看到"Request     timeout"的反馈结果,表示与目标主机间的连接超 时(数据包响应缓慢或丢失)。除此以外,当目标主机有严格的防火墙限制时,也可能收到“Request     timeout”的反馈结果。

2. 跟踪数据包的路由途径

若服务器上没有traceroute命令,可通过yum方式安装traceroute软件包。traceroute 命令可以用于测试从当前主机到目的主机之间经过了哪些网络结点,并显示各中间结点的连 接状态(响应时间)。对于无法响应的结点,连接状态将显示为“*”。

traceroute  命令能够比ping 命令更加准确地定位网络连接的故障点(中断点),因此执行速度会比ping 命令稍慢。在网络测试与排错过程中,通常会先使用ping 命令测试与目的主机的网络连接,如果发现网络连接有故障,再使用traceroute 命令跟踪查看是在哪个中间结点存在故障。

3. 测试 DNS 域名解析

当域名解析出现异常时,将无法使用域名的形式访问网络中的Web  站点、电子邮件系 统等服务。nslookup命令是用来测试域名解析的专用工具,使用时只要指定要解析的目标域名作为参数即可。若在执行过程中提示无法找到nslookup 命令,可通过yum安装bind-utils程序包的方式来解决。

若能够成功反馈要查询域名的IP 地址,则表示域名解析没有问题,否则需要根据实际 反馈情况来判断故障原因

此外还有dig  命令也可以用来测试域名解析,相对于nslookup命令,dig 可以得到更多的域名信息。dig的全称是(domain information  groper), 它是一个用于查询DNS域名服务器的灵活的工具。大多数系统管理员都是利用dig 作为DNS问题的故障诊断工具,因为它具有灵活性好、易用、输出清晰等特点。dig命令最典型的用法就是查询单个主机的信息。

[root@localhost~ ]#dig baidu.com

dig 在查询过程中,还可以指定特点的 DNS 服务器。如果不指定 DNS 服务器,默认会使用/etc/resolve.conf 里面的地址作为 DNS 服务器。

设置网络地址参数

在Linux主机中,手动修改网络配置包括两种最基本的方法。

>  临时配置:通过命令行直接修改当前正在使用的网络地址,修改后立即可以生效。这种方式操作简单快速、执行效率高,一般在调试网络的过程中使用。但由于所做的修改并没有固定地存放在静态的文件中,因此当重启network服务或重启主机后将会失效。

>   固定配置:通过配置文件来存放固定的各种网络地址,需要重启network 服务或重启主机后才会生效。这种方式操作上相对要复杂一些,但相当于“永久配置”,一般在需要为服务器设置固定的网络地址时使用。

使用网络配置命令

1.修改网卡的地址、状态

ifconfig 命令不仅可以用于查看网卡配置,还可以修改网卡的IP 地址、子网掩码,也可以绑定虚拟网络接口、激活或禁用网络接口。

(1)修改网卡的IP 地址、子网掩码

需要设置网卡的地址时,命令格式如下:

ifconfig 网络接口名称 IP地址 [netmask 子网掩码] 
或者 
ifconfig 网络接口名称 IP 地址[/子网掩码长度]

通常后一种方式用得更多一些。当不指定子网掩码时,将使用IP地址所在分类的默认子网掩码。指定新的IP地址和子网掩码以后,原有的地址将会失效。

(2)禁用、激活网络接口

需要临时禁用或者重新激活指定的网络接口时,需要结合“down”和“up”开关选项。网络接口被禁用以后,将无法使用该网络接口与其他主机进行连接。

[root@localhost ~]#ifconfig ens37 down
(3)为网卡绑定虚拟接口

在对服务器网络进行调试的过程中,有时候需要临时在同一个网卡上使用一个新的IP 地址,但是又不能覆盖原有IP地址而导致服务程序不可用。这时可以为网卡绑定一个虚拟的网络接口,然后为虚拟接口设置新的IP  地址(相当于一块网卡配多个IP地址)。

[root@localhost ~]# ifconfig ens33:0172.17.17.17
2.添加、删除静态路由记录

route  命令不仅可以用于查看路由表信息,还可用来添加、删除静态的路由表条目,其中也包括设置默认网关地址(默认网关记录是一条特殊的静态路由条目)。

(1)添加、删除到指定网段的路由记录

通过“route add”操作可以添加路由记录,结合“-net”选项指定目标网段的地址,结合“gw”选项指定下一跳路由器的IP  地址。例如,若要使本机访问另一个网段192.168.3.0/24的数据包都发送给192.168.4.254,可以执行以下操作。需要注意的是,默认网关的IP地址应该

与本机其中一个接口的IP 地址在同一个网段内。

[root@www ~]#route add -net 192.168.3.0/24 gw 192.168.4.254 //添加静态路由 
[root@www~]#route -n I/确认添加的路由条目

通过“route  del”操作可以删除路由记录,只要结合“-net” 选项指定对应路由记录中目标网 段的地址即可。例如,执行以下操作可以删除前面添加到 192.168.3.0/24    网段的静态路由条目。

[root@www~]# route del -net 192.168.3.0/24
(2)添加、删除默认网关记录

添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用“default” 表示即可,无须再使用“-net” 选项指明网段地址。

[root@www ~]#route del default gw 192.168.4.1 //删除默认网关记录192.168.4.1 
[root@www ~]#route add default gw 192.168.4.254 I/添加新的默认网关记录192.168.4.254

需要注意的是,在同一个主机的路由表中只应有一条默认网关记录。若同时存在多条默认网关记录,则可能导致该主机的网络连接出现故障。

3.修改主机的名称

hostname命令不仅可以用于显示当前主机的名称,还可以修改当前主机的名称。在新登录的用户会话(Shell环境)中,命令提示符中的主机名部分也会出现相应的变化。例如,执行“hostname    www.bdqn.com”命令可以将主机名改为“www.bdqn.com” , 具体操作如下:

[root@localhost~]# hostname aaa 
[root@localhost~]# bash 
[root@aaa~]#

修改网络配置文件

当需要为Linux服务器设置固定的网络地址时,若仍用ifconfig等网络命令来进行设置,将会大大降低服务器运行的可靠性。若要使Linux  主机在重启系统以后仍然能够使用相同的网络配置,那么直接修改配置文件是最好的方法。下面将分别介绍常见的几个网络配置文件。

1.网络接口配置文件

网络接口的配置文件默认位于目录/etc/sysconfig/network-scripts/ 中,文件名格式为“ifcfg-XXX”,其 中“XXX”是网络接口的名称。

[root@localhost~]#Is /etc/sysconfig/network-scripts/ifcfg-*

在网卡的配置文件 ifcfg-ens33    中,可以看到设置静态 IP 地址的部分内容如下:

BOOTPROTO=static

DEVICE=ens33

ONBOOT=yes

IPADDR=192.168.4.11

NETMASK=255.255.255.0

GATEWAY=192.168.4.1

上述各配置项的含义及作用如下。

>  TYPE:  设置网卡类型,“Ethenet” 表示以太网。

>  BOOTPROTO:  设置网络接口的配置方式,值为“static”时表示使用静态指定的 IP地址,为“dhcp”时表示通过 DHCP 的方式动态获取地址。

>  DEVICE:  设置网络接口的名称。

>  ONBOOT:  设置网络接口是否在 Linux 操作系统启动时激活。

>  IPADDR:  设置网络接口的 IP 地址。

> NETMASK:  设置网络接口的子网掩码。

>  GATEWAY:  设置网络接口的默认网关地址。

2. 启用、禁用网络接口配置

在CentOS7操作系统中,当修改了网络接口的配置文件以后,若要使新的配置生效,可以重新启动network 服务或者重启主机,具体操作如下。默认情况下,重启network 服务会先关闭所有的网络接口,再根据配置文件重新启用所有的网络接口

[root@localhost~]#systemctl restart network

如果只是禁用、启用某一个网络接口(而不是所有接口),可分别使用两个接口控制脚本ifdown、ifup。例如,执行以下操作将会先关闭 ens33 网卡,然后根据配置文件启用 ens33网卡。

[root@localhost~]#ifdown ens33 
[root@localhost~] #ifup ens33
3. 主机名称配置文件

若要修改Linux操作系统的主机名,可以修改配置文件/etc/hostname 。将要设置的主机名写入此文件内,如果文件内输入了多行内容,此时系统仅识别第一行的内容为系统主机名。

[root@localhost~]#vi letc/hostname www.bdqn.com

通过修改/etc/hostname  来更改的主机名,如果要让其生效,需重启Linux  系统。

此外,还可以通过 hostnamectl    命令来修改主机名,命令操作如下。

[root@localhost~]# hostnamectl set-hostname www.bdqn.com //设置新的主机名 
[root@localhost ~]# bash 
[root@www ~]#hostname www.bdqn.com
4. 域名解析配置文件

在 Linux 操作系统中有两个与域名解析相关的配置文件,下面逐一介绍。

(1)指定为本机提供 DNS 解析的服务器地址

/etc/resolv.conf 文件中记录了本机默认使用的 DNS 服务器的地址信息,对该文件所做的修改将会立刻生效。Linux 操作系统中最多可以指定3个(第3个以后的将被忽略)不同的 DNS 服务器地址,优先使用第一个DNS 服务器。

resolv.conf 文件中的“search localdomain”行用来设置默认的搜索域(域名扩展名)。例如,当访问主机“localhost” 时,就相当于访问"localhost.localdomain”。但是,在CentOS  7环境下,如果按照上面方式配置,过一段时间会被系统重新覆盖或加“dns=none”配置项。

[root@localhost~]#vi letc/NetworkManager/NetworkManager.conf 
[main] 
plugins=ifcfg-rh 
dns=none 
[logging]
#level=DEBUG 
#domains=ALL

之后需要重启NetworkManager服务。确保/etc/resolv.conf 内有配置信息,此时就可以正常解析域名了。

(2) 本地主机映射文件

letc/hosts 文件中记录着一份主机名与IP地址的映射关系表,一般用来保存经常需要访问的主机的信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到再去向DNS服务器查询。

[root@localhost~]#cat /etc/hosts 
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 
……//省略部分内容 
119.75.218.70 www.baidu.com

对于经常访问的一些网站,可以通过在/etc/hosts 文件添加正确的映射记录,减少DNS查询过程,从而提高上网速度。当然,若添加了错误的映射记录,则可能导致网站访问出现异常。另外,因为hosts 文件只保存在本地,所以其中的映射记录也只适用于当前主机,而无法作用于整个网络。

相关推荐

  1. Linux网络设置

    2024-06-12 13:10:05       13 阅读
  2. Linux 高级网络设置

    2024-06-12 13:10:05       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 13:10:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 13:10:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 13:10:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 13:10:05       20 阅读

热门阅读

  1. Android面试题汇总-Jetpack组件

    2024-06-12 13:10:05       12 阅读
  2. 前端的强缓存和协商缓存

    2024-06-12 13:10:05       8 阅读
  3. ffmpeg的部署踩坑及简单使用方式

    2024-06-12 13:10:05       9 阅读
  4. win10下 mysql8.0.37.0 msi版本安装时出现的问题

    2024-06-12 13:10:05       7 阅读
  5. windows下安装IntelliJIDEA

    2024-06-12 13:10:05       9 阅读
  6. 【实用技巧】Unity中的Scrollbar组件的实用技巧

    2024-06-12 13:10:05       7 阅读
  7. 在 Jupyter 编辑函数(Edit function in Jupyter)

    2024-06-12 13:10:05       6 阅读