REHL系Linux的网络管理涉及主要内容如图所示


Linux基础--网络管理_network


1. 配置工具

主要有两组工具,一个是net-tools系列,一个是iproute2系列。其中net-tools是一组很经典但同时很古老的工具,已经很长时间没人维护了。但是还必要学它,因为还有很多人在使用它。当别人在代码中用到它的时候,你至少需要知道它在干什么。


iproute2是目前主流的网络管理工具,各种网络资源(如网卡、IP地址、路由和隧道等)的配置,均是ip命令的二级对象,命令接口更直观,另外它仍然处于开发状态,版本已经迭代到3.x。


命令基本使用方法可以在[Linux命令大全]这个网站搜到。

二者的区别,可以通过[iproute2 对决 net-tools]这篇文章了解到。


2. 配置文件

通过配置工具所设置的配置信息是直接通知内核调整工作状态的,因此会立即生效,但是副作用是系统或是网络服务重启就会失效。而通过配置文件所设置的配置信息刚好相反,不会立即生效,只会在系统或网络服务重启时载入生效。


/etc/hosts是本地域名解析库,结构如下。需要做域名解析时,主机会在请求DNS服务器帮忙解析之前,先检查此本地域名解析库,如果有相应结果,就直接使用,而不用再去找DNS服务器了。

127.0.0.1       localhost
192.168.1.10    foo.mydomain.org       foo
192.168.1.13    bar.mydomain.org       bar
146.82.138.7    master.debian.org      master
209.237.226.90  www.opensource.org


/etc/resolv.conf是配置DNS服务器地址的配置文件。

[root@localhost ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 172.18.0.1


/etc/sysconfig/network-scripts/ifcfg-IFACE是网卡配置文件,其中IFACE是网卡名。以下是基本配置项的含义。

DEVICE:此配置文件对应的设备的名称;
ONBOOT:在系统引导过程中,是否激活此接口;
UUID:此设备的惟一标识;
IPV6INIT:是否初始化IPv6;
BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcp、bootp、static、none;
TYPE:接口类型,常见的有Ethernet, Bridge;
DNS1:第一DNS服务器指向;
DNS2:备用DNS服务器指向;
DOMAIN:DNS搜索域;
IPADDR: IP地址;
NETMASK:子网掩码;CentOS 7支持使用PREFIX以长度方式指明子网掩码;
GATEWAY:默认网关;
USERCTL:是否允许普通用户控制此设备;
PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许;
HWADDR:设备的MAC地址;
NM_CONTROLLED:是否使用NetworkManager服务来控制接口;


/etc/sysconfig/network-scripts/route-IFACE是与网卡相关的路由配置,有两种配置方式。

10.10.10.0/24  via  172.18.0.1
default          via    192.168.0.1

或者

ADDRESS1=10.10.10.0
NETMASK1=255.255.255.0
GATEWAY1=172.18.0.1
ADDRESS2=0.0.0.0
NETMASK2=0.0.0.0
GATEWAY2=192.168.0.1


3. CentOS-7中引入的新特性

NetworkManager服务,其实在CentOS-6中就已经引入了该服务,希望用来接管network服务,但是由于它很不稳定,所以基本上CentOS-6安装完的第一件事就是把NetworkManager服务关了,换回network服务。而在CentOS-7中NetworkManager已趋于稳定,所以需要掌握它,它提供了两个命令接口,一个是nmcli命令行接口,一个是nmtui文本图形化接口。

nmcli的使用方式参照[ RedHat/CentOS 7.x 中使用 nmcli 命令管理网络]

nmtui和CentOS-6及以前的setup和system-config-network使用方法差不多,界面比较友好,使用简单。


主机名配置,使用hostnamectl来替代以前的hostname。hostnamectl修改主机名是立即生效,且重启不会失效的,因为它将配置结果写入的配置文件。CentOS-7中主机名的配置文件也由之前的/etc/sysconfig/network变为了/etc/hostname,不过仍然保留了/etc/sysconfig/network。


另外是网卡的命令方式也发生很大变化,之前的版本都是类似于eth0、eth1这样的,CentOS-7中引入了新的命名规则,参照[Centos 7 网卡命名规则]