王继敏
【摘 要】笔者以RHEL6系统为例,总结了在Linux安装完成后需要进行的基础网络配置,以供Linux学习者参考。
【关键词】Linux;网络配置;网络参数
中图分类号: TP393.0文献标识码: A文章编号: 2095-2457(2019)34-0115-002
DOI:10.19694/j.cnki.issn2095-2457.2019.34.051
1 网卡名称和网卡别名
Linux启动后,网卡被内核探测到并自动被命名为ethX(此处的X为数字,如0、1等)。内核将探测到的第一块网卡命名为eth0,第二块网卡命名为eth1……依次类推。除了ethX这个名称以外,网卡也可以有其他名称,称之为网卡别名(aliases)。需要注意的是,同一个网卡的每个别名都会被当作一个独立的网卡对待,可以配置不同的IP地址。例如给eht0网卡命名两个别名分别为eth0:1和eht0:2,此时就可以给这块网卡分配三个不同的IP地址了,即网卡eth0一个IP地址,网卡eth0:1一个IP地址,网卡eth0:2一个IP地址。网卡别名需要用户手动实现。
2 需配置的几个网络参数
初学者首先应该知道有哪些网络参数需要配置,并能够通过命令或者配置文件查看这些网络参数的当前配置。这里主要有IP地址、子网掩码、网关、主机名和DNS的配置信息。
IP地址与子网掩码
要查看当前网卡IP地址配置信息,可以用ifcfg命令。如:
#ifconfig
eth0 Link encap:Ethernet HWawddr 08:00:27:09:21:0E
inet addr:192.168.1.45 Bcast:192.168.1.255 Mask:255.255.255.0
……
命令ifcfg后面也可以不跟任何参数,它将列出系统内所有网卡的IP配置信息。而命令ip是一个比ifcfg更强大的命令,命令ip有很多子命令,如ip link show可以列出系统内的所有网卡,ip addr show可以查看某网卡的具体地址配置信息。下面这条命令即可查看eth0网卡的当前配置:
#ip addr show eth0
这两条命令输出的信息都相当丰富,除了网卡的IP地址以外,还有MAC地址、子网掩码、网卡状态等等,如这里的state UP表示该网卡已启用,qlen 1000表示eth0是一个千兆网卡。
路由和网关信息
当一个IP包要发送到其他网络的主机地址时,就需要检查路由表中的静态路由,如果没有找到路由信息,则这个IP包就被发往默认网关。要查看当前系统的路由配置信息,可以使用命令ip route,它将列出当前系统的路由表。如:
#ip route
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.45
169.254.0.0/16 dev eth0 scope link metric 1002
default via 192.168.1.1 dev eth0
屏幕上打印出的最后一行default via 192.168.1.1 dev eth0,表示的含义是192.168.1.1是eth0网卡的默认网关。另外查看路由表还可以使用route-n命令,具体可以参阅man手册,此处不再赘述。
主机名和主机名的本地解析
可以用hostname命令查看当前系统的主机名,而系统中/etc/hosts文件实现了从主机名到IP地址的本地解析,这是一个文件,可以用任意文本编辑器打开编辑。此处主要是定义本机主机名到IP地址的对应。如:
#hostname
stu1.sailor.org
#cat /etc/hosts
192.168.1.111 stu1.sailor.org stu1
……
這里可以看到,当前系统的主机名为stu1.sailor.org,对应的IP地址为192.168.1.111。当前系统的主机名是在系统安装的过程中设定的,如果系统安装完成后又想要修改主机名,则需要修改/etc/sysconfig/network文件。如:
#cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= stu1.sailor.org
GATEWAY=192.168.1.1
其中NETWORKING项可以控制系统网络的开启或者关闭,yes表示开启网络,no表示关闭网络;HOSTNAME是设置系统主机名的地方,当前系统的主机名为stu1.sailor.org;GATEWAY设置了系统的默认网关,此处系统的默认网关为192.168.1.1。需要注意的是,在系统的另一个配置文件中,即/etc/sysconfig/network-scripts/ifcfg-ethX(X为数字)中还可以配置了某个具体网卡的网关。如果这个文件中配置了网关,则该配置覆盖了默认网关;如果该文件没有设置该网卡的网关,则该网卡使用全局的默认网关。对/etc/sysconfig/network的修改通常需要重启整个系统才能生效。
DNS
Linux将本地/etc/hosts文件无法解析的主机名提交给DNS服务器进行解析,Linux系统对DNS的配置分为全局DNS和仅对某网卡有效的DNS。其中全局DNS是对所有网卡都有效的,它在系统中的/etc/resolv.conf文件中进行配置。可以用文本编辑器打开并编辑这个文件。如:
#cat /etc/resolv.conf
nameserver 192.168.1.1
我们可以看到,当前系统的DNS服务器地址为192.168.1.1。
僅对某网卡有效的DNS是在该网卡的配置文件中定义的,如eth0网卡的配置文件是/etc/sysconfig/network-scripts/ifcfg-eth0,用cat命令查看该文件可以看到“DNS1=192.168.1.254”这样的字样,其含义为192.168.1.254这个DNS仅仅当eth0激活时对eth0有效,它可以覆盖全局的DNS。
3 网络配置文件
系统的/etc/sysconfig/network-scripts目录是传统UNIX的网络配置文件的保存位置,在Redhat Enterprise Linux 6中也保留了这一传统。但是在RHEL6中,还采用/etc/sysconfig/networking目录来存放网络配置文件。如果通过手工修改配置文件的方式配置网络,则需确保这两套配置体系的一致和同步,否则系统有可能会产生紊乱。因此,推荐用户使用Redhat开发的网络配置工具system-config-network或者system-config-network-tui,可以自动同步两套配置文件,节省了不少工作量也避免了出错。其中system-config-network是GUI界面,需要依赖XWindows运行而system-config-network-tui可以在字符终端界面下运行。由于Linux服务器通常不会安装XWindows系统,所以这里推荐安装和使用后者。如以下命令演示了安装和运行system-config-network-tui,配置完成后通常需要重启网络服务以使配置生效:
#yum install system-config-network-tui
#system-config-network-tui
#service network restart
在Redhat Enterprise Linux 6系统中,如果用户启动了NetworkManager服务,那么它可以自动地进行网络配置。在一些经常需要移动办公的环境中,NetworkManager服务是非常便利的,但是对于服务器使用环境来说,因为各自网络配置基本上不可能经常变动,因此最好一开始就关闭该服务,以免该服务影响我们配置好的网络。
4 网络配置基本流程
Linux运维的初学者在安装Linux虚拟机完成后,可以依照以下流程来设置各项网络参数:
1)IP地址
2)子网掩码
3)路由与网关 #1、2和3的修改需重启网络服务才能生效
4)DNS
5)DNS后缀 #4和5的修改无需重启网络服务即可生效
6)主机名 #6的修改需重启整个系统才能生效
7)/etc/hosts文件 #7的修改无需重启网络服务即可生效
对于步骤1~3,如果使用system-config-network-tui工具配置网络,则步骤1、2和3可以一步完成,配置完成后需要使用命令service network restart重启网络服务以使配置生效。因为直接使用ip、ifconfig命令或者直接修改配置文件比较复杂且非常容易出错,所以不推荐这种做法。可以直接修改/etc/resolv.conf文件定义全局的DNS和DNS后缀来完成步骤4和5,该文件修改完成后,DNS配置信息是立即生效的,无需重启网络服务。可以通过修改/etc/sysconfig/network文件来配置主机名。当Linux系统需要进行主机名解析时,会先进行本地解析即读取/etc/hosts文件查找对应条目,如果没有找到,再访问DNS服务器。因此在步骤7,可以将本主机名和一些需要经常访问的主机名对应的IP地址放在/etc/hosts文件中以加快解析的速度。
5 结束语
Linux下的网络配置相关内容的知识点较为分散,涉及的命令和配置文件也比较多,通常成为初级Linux运维学员在配置实验环境过程中的一个拦路虎。本文将Linux下的网络配置相关知识进行总结提炼,并给出一个基础网络配置的七个步骤以供读者参考。
【参考文献】
[1]鸟哥.鸟哥的Linux私房菜基础学习篇[M].第三版.北京:人民邮电出版社,2010.