一:概述
在对系统进行网络配置的时候,需要使用到网络配置文件。一般情况下我们使用Linux中提供的网络配置工具来对网络进行配置和维护。
二:Linux中的网络管理工具
在之前Linux中可能会使用各种各样的脚本来管理网络,经过不断的发展,Linux大牛开发了很多的网络管理工具。CentOS和Ubuntu中有关的网络管理的默认工具不同。Linux中的各种发行版本默认使用的网络管理工具主要有以下的三种:
- NetworkManager:CentOS8和Ubuntu桌面版中默认的网络管理工具。可以使用GUI或命令行工具nmcli进行设置,在设置的同时会自动生成配置文件,并且可以使用编辑器创建或编辑配置工具。
- systemd-network:Ubuntu服务器版本中默认的网络管理工具。没有自动配置文件的工具,使用编辑创建和编辑配置文件。
- netplan:Ubuntu服务器版本中默认的网络管理工具,对应的软件包是netplan.io。Ubuntu在使用netplan时,将不需要systemd-network或NetworkManager。CentOS不提供这个管理工具。
当NetworkManager动态配置多个有线和无线网络环境时,systmd-nerwork会像服务器一样配置网络环境。使用默认的软件进行设置时,可以同时使用GUI和CUI进行操作。这些管理工具对应的配置文件是下面几个。
- CentOS8:默认网络管理工具NetWorkManager,对应的网络配置文件是/etc/sysconfig/network-scriptd/ifconfig-*。
- Ubuntu18.04 Desktop:默认的网络管理工具NetworkManager,对应的网络配置文件是/etc/NetworkManager/system-connections/*.
- Ubuntu18.04 Server:默认网络管理工具systmd-network和netplan,对应的网络配置文件是/etc/netplan/*.yaml。
使用这几个工具设置网络时,一般需要编辑对应的配置文件,编辑文件可以使用vi或者VI编辑器。
三:在桌面环境中设置网络
CentOS在GNOME桌面左上角单击活动按钮,在桌面左侧弹出的应用程序列表框中单击‘显示应用程序“按钮,在列出的程序中单击”设置“应用程序启动它,如下图所示(以Linux CentOS Server版本为例):
根据上面截图可知,先点击应用程序,再点击系统工具,然后点击设置。
点开设置后,会出现对话框,需要在对话框中设置。在左侧列表中选择”网络“,然后在右侧的“网络”区域中点击“有线”右侧的“设置“按钮,如下图1所示,。在打开的‘有线”对话框中,可以查看和更改当前的网络设置,例如你可以在IPV4选项卡中手动设置ip地址,如下图2所示。
图1
图2
Ubuntu中的网络设置和CentOS中的网络配置很相似,这里就不演示了。
四:Linux中的网络配置文件
先来说一下/etc/hosts文件,这个配置文件里面记录了主机的ip地址以及对应的主机名或者别名,比如你使用ssh远程登录另外一台主机时,可以指定IP地址或者主机名。显然主机名比数字更容易理解和记忆。,如下图所示:
使用more命令可以查看/etc/hosts文件的内容,如下图所示:
/etc/hosts文件中第一部分表示网络的ip地址,第二部分表示主机名和域名,它们之间使用半角句号间隔,第三部分表示主机别名。配置文件中每一行内容为一个主机的相关信息,每个部分使用空格隔开。127.0.0.1是回环地址,与主机名localhost绑定,很多应用程序都会依赖这个绑定设置。当访问主机时,系统会从/etc/hosts文件中查找对应的Ip地址。
还有/etc/networks文件,它可以采用指定网络名称或者网络地址之间对应的0.0.0.0网络名称就是default,如下图所示:
如果你想知道LInux中服务对应的各种端口号,需要看一下etc/services文件。这个文件描述了服务器名称和端口号之间的对应关系。服务器端提供各种服务在主机中运行,如服务器端运行ssh服务和http服务。当客户端使用ssh服务远程登陆到主机时,指定ssh登录名@主机名以清楚地指定对应的主机,如果找到了相应的主机,接收该服务器的主机则将通过ssh服务有关的端口号进行发送和接收,如下图所示:
使用more命令查看/etc/services文件的内容,如下图所示:
由于我暂时没有使用过,所以这里不显示服务和对应的端口号。有的服务名称相同,却占用了两行记录,使用的协议不同,有TCP协议和UDP协议。
接下来说的是设置ip地址类的的信息都要使用到这个文件。而且,这个文件名称在CentOS和Ubuntu中不一样。在CentOS中进行网络配置时,需要在etc/sysconfig/network-scripts/ifconfig-<device>文件中修改IP地址和子网掩码之类的设置。<device>表示网卡名称,如果你的网卡是enp0s3,那么需要在/etc/sysconfig/network-scripts/ifconfig-enp0s3文件中设置信息。
如果你不知道网卡的名称是什么,可以先进入/etc/sysconfig/network-scipts/目录下使用ls命令名称查看一下,然后使用cat、head之类的命令查看这个文件的内容。
上述字段的具体含义如下:
字段 | 说明 |
TYPE | 指定网络设备类型:Ethernet(有线Ethernet)、Wireless(无线LAN)Bridge(网桥) |
BOOTPROTO | 指定启动网络方式:none表示不启动协议,bootp表示使用BOOT协议,dhcp表示使用DHCP协议 |
DEFROUTE | 指定是否使用此接口作为默认路由 |
IPV4_FAILURE_FATAL | 指定在IPV4初始化失败是否初始化此接口 |
IPV6INIT | 指定是否使用IPV6设置 |
IPV6_AUTOCONF | 指定是否启用IPV6自动配置 |
IPV6_DEFROUTE | 指定IPV6是否使用此接口作为默认路由 |
IPV6_FAILURE_FATAL | 指定IPV6初始化失败时是否初始化此接口 |
MAME | 指定此接口名称 |
UUID | 指定接口的UUID(唯一标识符) |
DEVICE | 指定设备的物理名称 |
ONBOOT | 指定是否在系统启动之时启动此接口 |
IPV6_PEERDNS | 在/etc/resolv.conf中指定是否通过IPV6获得DNS服务器 |
IPADDR | 指定IP地址 |
PREFIX | 指定网络掩码 |
这是CentOS中设置IP地址信息等网络配置的文件,再看看Ubuntu中的情况。在Ubuntu中的情况,在Ubuntu中,/etc/NetworkManager/system-connections/目录下的<device>文件中描述了IP地址和子网掩码等信息,如下图所示。要设置的信息写入”优先连接1“这个设备文件中,比如指定IP地址的方式是手动设置还是自动获取。
这个配置文件中的设置字段和CentOS中的差不多,包括连接信息、以太网信息、IPV4和IPV6等设置项,其中id可以指定设备名称,以太网中记录了MAC地址信息,method=auto表示指定IP地址的方式为自动获取,也就是DHCP方式。
由于我这里没有所以没有显示有线连接。
如果有多个本地名称用于主机名解析,使用/etc/nsswitch.conf文件可以指定解析顺序。通过more命令查看/etc/nsswitch.conf文件中的内容,如下图所示:
再来看看/etc/protocols文件,它可以用于记录协议编号列表。使用more命令查看/etc/services文件内容,如下图所示:
第一列字段表示协议的名称,第二列表示协议编号,第三列表示协议的别名,第四类是注释信息。
还有/etc/resolv.conf文件,可以设置DNS服务器的IP地址和DNS域名。使用more命令查看/etc/resolv.conf文件,如下图所示。使用nameserver关键字可以指定DNS服务器的IP地址。这个关键字很重套,如果不指定它,就找不到DNS服务器。
CentOS和Ubuntu中得文件名不一样,网卡NIC(Network Interface Card,网络接口卡)是连接计算机和网络的硬件设备,创痛的Linux网卡命名为ethX形式,比如之前见到的eth0和eth1。但是这种形式不一定能准确对应网卡接口的物理顺序,后来就使用了enp0s3这种形式得网卡,en表示网卡示以太网类型,p3so代表PCI接口的物理位置(3,0),其中横坐标表示bus,纵坐标表示slot。