首页 > 代码库 > Linux之网络管理 (4)相关基本配置文件

Linux之网络管理 (4)相关基本配置文件

Linux之网络管理 (4)相关基本配置文件

linux 中有很多命令可以用来管理网络,其中最常用的就是设置主机的ip地址、网关等信息,并且其设置方法也有很多。当然,网络的配置功能属于linux内核模块。

 

关于主机中于与网络相关的参数:

IP  NETMASK(一般用14255来表示,当然换成2进制用1的个数表示)

 GATEWAY  HOSTNAME  DNS

 

linux一般网卡的分类:

lo:本地回环接口,用于主机访问自己

以太网网卡:一般用ethX格式命令接口

ppx:老旧的网络电话拨号设备

sit0:用于ipv4ipv6地址之间转换通信

 

网卡命名控制的配置:

RHEL5/etc/modprobe.conf配置文件中,以别名定义,如

技术分享 

解析:其中pcnet32表示网卡模块名称,使用此模块的接口设备名为eth0,当然可以修改。

RHEL6/etc/udev/rules.d/70.persisent-net.rules文件中,用mac地址等来绑定名称,如:

技术分享

解析:这里的命名规则更加规范,使用网卡MAC地址与其NAME想绑定,并且添加了ACTION动作,add表示添加时,会知道在此规则文件中添加条目,并按KERNELNAEME中的值来进行标识列(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服务

RHLE7systemctl  {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}

#引导协议,使用静态地址设置为staticnone; dhcp表示使用dhcp服务动态获取

IPADDR=              #设置IP地址,只有设为静态协议才会生效

NETMASK=             #设置子网掩码,使用十进制的255表示,如255.0.0.0

PREFIX=              #同样表示子网掩码,使用二进制1 的位数表示,如81624

GATEWAY=             #设置默认网关地址

ONBOOT={yes|no}      #开机或重启网络服务时时是否自动激活此网络接口

HWADDR=              #硬件地址,要与绑定硬件地址的信息保持一致,可以省略,也可以伪造

USERCTL=             #硬件地址,是否允许普通用户控制设置此接口

PEERDNS={yes|no}     #是否在BOOTPROTOdhcp时接受DHCP服务器指定的DNS地址,写入到/etc/resolv.conf文件中

DNS1=                #指定此网卡设备的第一个DNS服务器指向

DNS2=                #指定此网卡设备的第二个DNS服务器指向

DNS3=                #指向第二个DNS服务器

 

RHEL67中可额外配置

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.010.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 对应的值

技术分享 

说明:fileslinux系统识别的默认配置文件(/etc/hosts),而dns表示根据dns配置或者服务进行解析主机名。files在前表示,优先使用,因此要让dns优先,调整在前面即可。

例子:

/etc/hosts添加www.baidu.com条目执行一个特定ip10.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解析。

 

 

配置主机名:

RHEL56

使用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,以此可以判断有没有设置主机名。

 

 

图形界面工具

RHEL56中:

setupsystem-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为回环设备,因此只考虑eth1eth2设备,下面把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值修改为eth0eth1等,内容如下

[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 image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-94e935d012664e00bc0c7b356866d7b1
Found initrd image: /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后直接重启就生效了。

 


本文出自 “孟天霸-IT的垃圾回收站” 博客,谢绝转载!

Linux之网络管理 (4)相关基本配置文件