Linux之网络管理 (4)相关基本配置文件
在linux 中有很多命令可以用来管理网络,其中最常用的就是设置主机的ip地址、网关等信息,并且其设置方法也有很多。当然,网络的配置功能属于linux内核模块。
关于主机中于与网络相关的参数:
IP NETMASK(一般用1到4个255来表示,当然换成2进制用1的个数表示)
GATEWAY HOSTNAME DNS
linux一般网卡的分类:
lo:本地回环接口,用于主机访问自己
以太网网卡:一般用ethX格式命令接口
ppx:老旧的网络电话拨号设备
sit0:用于ipv4和ipv6地址之间转换通信
网卡命名控制的配置:
RHEL5:/etc/modprobe.conf配置文件中,以别名定义,如
解析:其中pcnet32表示网卡模块名称,使用此模块的接口设备名为eth0,当然可以修改。
RHEL6:/etc/udev/rules.d/70.persisent-net.rules文件中,用mac地址等来绑定名称,如:
解析:这里的命名规则更加规范,使用网卡MAC地址与其NAME想绑定,并且添加了ACTION动作,add表示添加时,会知道在此规则文件中添加条目,并按KERNEL和NAEME中的值来进行标识列(Indentity)排序命名。
RHEL7:默认没有/dev/udev/rules.d/下的规则文件,但是,默认是没有的,因为rhel7使用在/etc/sysconfig/grub文件中使用了新的设置,所有默认的名称是enoXXXXXX后跟一串数字,因为配置规则默认不存在,下面列出网卡信息:
解析:其中eno16777736是以太网网卡设备,而lo为回环设备,这里后面的数字是网卡MAC地址及其它算法得到的唯一标示,RHLE7上为了进一步匹配网卡命名冲突。
一些常用的网卡信息查看命令
显示网络接口设备信息
ifconfig [ethX] : 后跟接口名称为显示特定接口信息
-a : 显示所有接口的配置信息
设置网卡信息:
ifconfig ethx IP mask MASK [up|down]
ifconfig ethX IP/MASK [up|down]
注意:配置的地址会立即生效,但重启网络或主机,都会失效。
网络服务启动脚本:
RHLE5:/etc/init.d/network {start|stop|restart|status}
RHLE6:/etc/init.d/NetworkManager {start|stop|restart|status}
注意: RHEL6版本也保留了RHEL5的启动方式,而NetworkManager在某些时候会和 network服务进程冲突,所以一般情况会关闭和禁用此服务,并使用network服务
RHLE7:systemctl {start|stop|restart|status} network.service
网络全局配置文件:
/etc/sysconfig/network #在里面设置的网关等信息会全局生效
网卡接口配置文件命令规范:
/etc/sysconfig/network-scrippts/ifcfg-INTERFACE_NAME
文件格式为变量赋值格式:
各版本通用配置:
DEVICE=ethX #关联的设备名称,要与文件名的后半部”INTERFACE_NAME”保持一致
TYPE= #接口类型;常见的有Ethernet, Bridge
BOOTPROTO={static|none|dhcp|bootp}:
#引导协议,使用静态地址设置为static或none; dhcp表示使用dhcp服务动态获取
IPADDR= #设置IP地址,只有设为静态协议才会生效
NETMASK= #设置子网掩码,使用十进制的255表示,如255.0.0.0
PREFIX= #同样表示子网掩码,使用二进制1 的位数表示,如8、16、24
GATEWAY= #设置默认网关地址
ONBOOT={yes|no} #开机或重启网络服务时时是否自动激活此网络接口
HWADDR= #硬件地址,要与绑定硬件地址的信息保持一致,可以省略,也可以伪造
USERCTL= #硬件地址,是否允许普通用户控制设置此接口
PEERDNS={yes|no} #是否在BOOTPROTO为dhcp时接受DHCP服务器指定的DNS地址,写入到/etc/resolv.conf文件中
DNS1= #指定此网卡设备的第一个DNS服务器指向
DNS2= #指定此网卡设备的第二个DNS服务器指向
DNS3= #指向第二个DNS服务器
RHEL6、7中可额外配置
NM_CONTROLLED={yes|no} #表示是控制NetworkManager控制,一般建议设置为no关闭
UUID= #网卡的唯一标示,从centos6开始使用为了防止冲突
提示:如果使用RHEL7中的nmcli工具来设置team功能,必须要将NM_CONTROLLED设置为yes,并开启NetworkManager服务才能使用nmcli工具。
注意:
1、这些配置不会立即生效,但重启网络服务或主机都会生效;
2、左侧的变量为固定格式,要想自定义变量和一些变量特定参数,需要修改脚本文件
3、大部分带固定参数的变量都有默认值,要使用默认值,可以省略此条目
路由网关配置文件:
/etc/sysconfig/network-scripts/route-ethX #这里的命名规则-后面为要为哪个网卡添加路由
添加格式一:
Destination via NEXHTOP
目标地址 下一条地址 (及数据转发的下一个接收地址)
例如:
#这里表示为eth0网卡添加静态路由条目
[root@mageedu ~]# cat /etc/sysconfig/network-scripts/route-eth0 0.0.0.0 via 10.0.0.20 dev eth0
解析:访问表示所有网络时将数据发送给10.0.0.20来接收并通过此网关转发
[root@meng ~]# cat /etc/sysconfig/network-scripts/route-eth0
10.0.0.0/8 via 172.0.0.10 dev eth0
解析:访问子网掩码为255.0.0.0的10.0.0.0网络时将数据发送给172.0.0.10来接收并通过此网关转发
添加格式二:
ADDRESS0=指定特定的IP或网段
NETMASK0=指定10进制表示的子网掩码
GATEWAY0= 指定网关及下一条地址
例如:
ADDRESS0=10.0.0.0
NETMASK0=255.0.0.0
GATEWAY0=172.0.0.10
DNS服务器指向方式只有一种:
/etc/resolv.conf
nameserver DNS_IP_1
nameserver DNS_IP_2
注意:可以指定多个nameserver条目,但是如果前面有一条能访问,将不会使用剩余条目,除非此DNS地址执行的服务器关闭,才会使用下面的。
主机名解析:
/etc/hosts :本地主机解析文件
格式为:
#主机IP 主机名主机 别名
172.16.0.1 www.mzf.com ww
DNS解析主机优先级:
DNS解析:/etc/hosts--->DNS
说明:此优先级为默认优先级,当然也可以通过通用框架配置文件进行优先级的调整。
可以通过修改/etc/nsswitch.conf文件来配置:
#找到host 对应的值
说明:files是linux系统识别的默认配置文件(/etc/hosts),而dns表示根据dns配置或者服务进行解析主机名。files在前表示,优先使用,因此要让dns优先,调整在前面即可。
例子:
在/etc/hosts添加www.baidu.com条目执行一个特定ip: 10.1.249.223
使用ping命令指定主机名进行访问
[root@mzf network-scripts]# ping www.baidu.com
说明:其实10.1.249.223为本机一个网卡地址,而www.baidu.com实际为一个网站,但是却因为/etc/hosts中条目的优先级,而对特定地址进行访问。这里存在隐患,有人可能远程通过修改此文件来进行DNS劫持,当访问某个网站,而是访问被指定的地址。因此要经常查看此文件是否被改动。
下面调整优先级,将dns放在files前面
再次ping www.baidu.com
解析:已经ping不同了,但是等待一会儿后,任然会访问10.1.249.185,因为dns 服务器解析找不到,会选择nsswitch.conf中的下一个字段配置,也就是本地 hosts解析。
配置主机名:
RHEL5、6
使用hostname命令:
hostname HOSTNAME
说明:立即生效,但不会永久有效,要永久有效,需要配置文件:
配置文件中设置:
/etc/sysconfig/network 文件下添加或设置HOSTNAME变量
HOSTNAME=mzf.server
RHLE7:
使用hostnamectl命令
hostnamectl set-hostname server.mzf.com
会立即生效,且保存到特定的配置文件/etc/hostname中,例如:
[root@server ~]# hostnamectl set-hostname server.mzf.com [root@server ~]# hostname server.mzf.com [root@server ~]# cat /etc/hostname server.mzf.com
说明:如果设置为(none)或者不给值,那么重启服务时,network脚步会默认设置为
localhost.localadomain,以此可以判断有没有设置主机名。
图形界面工具
RHEL5、6中:
setup、system-config-network-tui
system-config-network-gui #图形终端下
RHEL7中:
mntui
新增网卡设备及修改网卡名称:
redhat5新增网卡
1、新增一块网卡,先添加一个配置文件:
#新建新网卡配置文件
vim ifcfg-eth1
#添加对应配置文件到eth1新网卡
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth1
BOOTPROTO=dhcp
IPADDR=10.0.0.10
PREFIX=8
ONBOOT=yes
DHCP_HOSTNAME=localhost.localdomain
2、重启网络服务
service network restart
解析:这里因为内核并未识别到modprobe配置文件中有新的网卡条目。
3、编辑/etc/modprobe.conf文件,添加一个新网卡别名:内容如:eth1 pcnet32(使用的驱动加载模块)
4、重启机器,reboot后,查看网卡是否进行使用pcnet32驱动模块
解析:这里等显示link up,所以,eth1设备以及被识别,且正在使用。当然如果要改名,把两个配置文件中的设备名同步即可。
centos6网卡改名
1、先查看当前网卡设备
说明:这里lo为回环设备,因此只考虑eth1和eth2设备,下面把eth2进行改名。
2、修改网卡命名规则文件 /etc/udev/rules.d/70-persistent-net.rules
#查看eth2中的规则信息
[root@mzf ~]# cat /etc/udev/rules.d/70-persistent-net.rules | grep eth2 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:a3:5d:e1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
#修改NAME的值为eth100,也就是网卡命名
3、修改网卡配置文件
#进入网络脚步目录
[root@mzf ~]# cd /etc/sysconfig/network-scripts/
#重命令原来eth2的文件命令
[root@mzf network-scripts]# mv ifcfg-eth2 ifcfg-eth100
#编辑此文件,将DEVICE的值改为eth100,与规则文件中的NAME相对应
[root@mzf network-scripts]# vim ifcfg-eth100
#查看修改过后的文件
[root@mzf network-scripts]# cat ifcfg-eth100 DEVICE=eth100 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=172.0.0.10 PREFIX=16
4、重启主机
#然后输入 reboot重启机器,再次查看网卡信息
[root@mzf ~]# ifconfig
解析:这里设备名已经重新被识别成了eth100了
centos7修改为老式命令规则
方法一:直接修改内核加载主配置文件
#先查看grub2.cfg配置,发现一个指向/boot/grub2/grub.cfg的符号链接文件
[root@mzf network-scripts]# ll -l /etc/grub2.cfg
#于是打开/boot/grub2/grub.cfg文件,并在编辑模式下输入/linux16回车进行查找
#找到第一个,并在此行尾添加net.ifnames=0
#然后修改网卡的配置文件,将里面的DEVICE值修改为eth0、eth1等,内容如下
[root@mzf network-scripts]# echo ifcfg-eth{0,1} | tr ' ' '\n' | while read arg;do echo "#>>---$arg---<<"; cat $arg;echo ""; done #>>---ifcfg-eth0---<< DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes NM_CONTROLLED=yes #>>---ifcfg-eth1---<< DEVICE=eth1 BOOTPROTO=dhcp ONBOOT=yes NM_CONTROLLED=yes
#然后重启机器就行了。
注意:这样直接改主配置文件不是很佳方案,在centos7中提供了一个模板文件,因此可以直接修改模板的文件。
方法二:修改模板文件来调整
#修改模板文件/etc/default/grub
#然后在使用grub2-mkconfig命令直接将模板配置修改到grub.cfg文件特定文件
[root@mzf network-scripts]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux p_w_picpath: /boot/vmlinuz-3.10.0-327.el7.x86_64 Found initrd p_w_picpath: /boot/initramfs-3.10.0-327.el7.x86_64.img Found linux p_w_picpath: /boot/vmlinuz-0-rescue-94e935d012664e00bc0c7b356866d7b1 Found initrd p_w_picpath: /boot/initramfs-0-rescue-94e935d012664e00bc0c7b356866d7b1.img done
注意:这里输出的信息中会表示grub重要配置被修改。
#再次查看/boot/grub2/grub.cfg文件,因为上次修改此文件为行首有linux16,因此直接通过字符匹配找出此行信息查看即可:
[root@mzf network-scripts]# grep 'linux16 /vmlinuz' /boot/grub2/grub.cfg
#同样,下面修改网卡的配置文件中DEVICE后直接重启就生效了。