Redhat Linux的网络配置,基本上是通过修改几个配置文件来实现的,虽然也可以用ifconfig来设置IP,用route来配置默认网关,用hostname来配置主机名,但是重启后会丢失。
Linux中网络相关的主要的几个配置文件为:
/ect/hosts 配置主机名(域名)和IP地址的对应
/etc/sysconfig/network 配置主机名和网关
/etc/sysconfig/network-scripts/ifcfg-eth0 eth0配置文件,eth1则文件名为ifcfg-eth1,以此类推/etc/resolv.conf配置DNS客户端(关于使用哪个DNS服务器的配置)
1./etc/sysconfig/network-scripts/ifcfg-<interface-name>文件
在RedHat中,系统网络设备的配置文件保存在/etc/sysconfig/network-scripts目录下,ifcfg-eth0包含第一块网卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。在启动时,系统通过读取这个配置文件决定某个网卡是否启动和如何配置。
下面是/etc/sysconfig/network-scripts/ifcfg-eth0文件的示例:
DEVICE=eth0 IPADDR=192.168.0.2 NETMASK=255.255.255.0 BROADCAST=192.168.0.255 NBOOT=yes BOOTPROTO=none GATEWAY=192.168.0.1
若希望手工修改网络地址或增加新的网络连接,可以通过修改对应的文件ifcfg-<interface-name>或创建新的文件来实现。
DEVICE=<name><name>表示物理设备的名字
IPADDR=<address><address>表示赋给该网卡的IP地址
NETMASK=<mask><mask>表示子网掩码
BROADCAST=<address><address>表示广播地址
NBOOT=yes/no启动时是否激活该卡
BOOTPROTO=none none:无须启动协议;bootp:使用bootp协议;dhcp:使用dhcp协议
GATEWAY=<address> <address>表示默认网关
MACADDR=<MAC-address> <MAC-address>表示指定一个MAC地址
USERCTL=yes/no是否允许非root用户控制该设备
2./etc/resolv.conf文件
文件/etc/resolv.conf配置DNS客户端,它包含了DNS服务器地址和域名搜索配置,每一行应包含一个关键字和一个或多个的由空格隔开的参数。下面是一个例子文件:
search wuxp.com nameserver 192.168.0.1 nameserver 192.168.0.2
searchwuxp.com:表示当提供了一个不包括完全域名的主机名时,在该主机名后添加wuxp.com的后缀;nameserver:表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。因此,应该首先给出最可靠的服务器。目前,至多支持三个名字服务器。
3./etc/sysconfig/network文件
该文件用来指定服务器上的网络配置信息,下面是一个示例:
NETWORK=yes RORWARD_IPV4=yes HOSTNAME=server.wuxp.com GAREWAY=192.168.0.1 GATEWAYDEV=eth0
NETWORK=yes/no网络是否被配置
FORWARD_IPV4=yes/no是否开启IP转发功能
HOSTNAME=<hostname> <hostname>表示服务器的主机名
GAREWAY=<address><address>表示网络网关的IP地址
GAREWAYDEV=<device><device>表示网关的设备名,如:eth0
4./etc/hosts文件
当机器启动时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。
下面是一个/etc/hosts文件的示例:
127.0.0.1 Localhost server.wuxp.com 192.168.0.3 station1.wuxp.com
最左边一列是主机IP信息,中间一列是主机名。任何后面的列都是该主机的别名。
修改后,需要重启网络才会生效:重新启动网络设置:/sbin/service network restart
service network start //启动网络服务
service network stop //停止网络服务
service network status //查看网络服务状态
另外,还有单个网卡绑定多个IP和多个网卡绑定为一块虚拟网卡的配置。
1、单网卡绑定多个IP
有时,我们需要在一块网卡上配置多个IP,例如,在上面的例子中,我们还需要为eth0配置IP 192.168.168.2和192.168.168.3。那么需要再在/etc/sysconfig/network-scripts下新建两个配置文件:
ifcfg-eth0:0内容如下:
DEVICE=eth0:0 BOOTPROTO=static IPADDR=192.168.168.2 NETMASK=255.255.255.0 NBOOT=yes
ifcfg-eth0:1内容如下:
DEVICE=eth0:1 BOOTPROTO=static IPADDR=192.168.168.3 NETMASK=255.255.255.0 NBOOT=yes
当然临时添加的话,可以使用如下命令,但是机器重启的话,需要再次添加:
ifconfig eth0:0 192.168.168.2 broadcast 192.168.168.255 netmask 255.255.255.0 ifconfig eth0:1 192.168.168.3 broadcast 192.168.168.255 netmask 255.255.255.0
2、多个网卡绑定成一块虚拟网卡
为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断。比如我们可以将eth0和eth1绑定成虚拟网卡bond0
首先在/etc/sysconfig/network-scripts/下创建虚拟网卡bond0的配置文件ifcfg-bond0,内容如下
DEVICE=bond0 BOOTPROTO=none BROADCAST=192.168.168.255 IPADDR=192.168.168.1 NETMASK=255.255.255.0 NETWORK=192.168.168.0 NBOOT=yes TYPE=Ethernet GATEWAY=192.168.168.250 USERCTL=no
然后分别修改eth0和eth1的配置文件
ifcfg-eth0内容:
DEVICE=eth0 BOOTPROTO=none NBOOT=yes USERCTL=no MASTER=bond0 SLAVE=yes
ifcfg-eth1内容
DEVICE=eth1 BOOTPROTO=none NBOOT=yes USERCTL=no MASTER=bond0 SLAVE=yes
因为linux的虚拟网卡是在内核模块中实现的,所以需要安装的时候已经装好该module。在/etc/modprobe.conf文件(好像有些老版本是/etc/modules.con)中添加如下内容(如果没有该文件,则新建一个):
aliasbond0 bonding options bond0 miimon=100 mode=1 primary=eth0
其中miimon=100表示每100ms检查一次链路连接状态,如果不通则会切换物理网卡
mode=1表示主备模式,也就是只有一块网卡是active的,只提供失效保护。如果mode=0则是负载均衡模式的,所有的网卡都是active,还有其他一些模式很少用到
primary=eth0表示主备模式下eth0为默认的active网卡
最后,在/etc/rc.local中加入
modprobebonding miimon=100 mode=1
重启机器后可以看到虚拟网卡已经生效,可以通过插拔两个物理网卡的网线来进行测试,不过linux中网卡接管的时间好象比较长。