IP别名及其应用

来源:互联网 发布:国外博士论文数据库 编辑:程序博客网 时间:2024/05/16 04:58
Linux下配置网卡ip别名

何谓ip别名(ip alias)?
用windows的话说,就是为一个网卡配置多个ip。
什么场合增加ip别名能派上用场?
布网需要、多ip访问测试、特定软件对多ip的需要...and so on.

下面通过几个例子简单介绍一下如何使用ifconfig命令给网卡配置ip别名。
环境:新购买的服务器,刚装好RedHat AS4操作系统,只有一个网卡并且干干净净没做过任何配置。

一、首先为服务器网卡配置静态ip地址
#ifconfig eth0 192.168.6.99 netmask 255.255.255.0 up
eth0                                     //机器的第一个网卡,有些机器有多个网卡,eth1、eth2...
192.168.6.99                       //设置网卡的静态ip地址
netmask 255.255.255.0       //ip地址的子网掩码,无需多解释
up                                      //表示立即激活该网卡

#ifconfig
if一下,如图所示静态ip已经设置成功



二、设置网卡的ip别名
#ifconfig eth0:0 192.168.6.100 netmask 255.255.255.0 up
#ifconfig eth0:1 173.173.173.173 netmask 255.255.255.0 up
#ifconfig eth0:2 119.110.120.1 netmask 255.255.255.0 up
......

eth0:x                    //虚拟网络接口,建立在eth0上,取值范围0-255
192.168.6.xxx        //增加ip别名,想加多少就加多少~~

#ifconfig
设置完我们if一下看看,如图所示,增加的ip都已经生效了



#ping 192.168.6.100
#ping 173.173.173.173
#ping 119.110.120.1
然后在本机分别ping一下这几个ip,如图所示一路畅通~~




*注意:在设置ip别名时,如果增加的是和局域网同一网段的ip(如192.168.6.100),那么除了本机外局域网内其他机器都可以ping通这个ip。如果增加的是奇形怪状的ip,那么就只有本机可以ping通而已,后者主要用于本机测试需要。


三、保留网卡的ip别名信息
当我们汗流浃背的增加了n个ip,正准备大展拳脚进行项目测试时,突然~~停电了...xx@#$%,转眼月上枝头,好不容易来电了打开电脑一看,傻了~~刚刚增加的ip全没了???
原来当系统重启后,所有的ip别名都会丢失...rpwt...xx$#%@
基于linux这个特点,所以如果需要长时间使用ip别名,最好将别名信息保存起来,一般方法有两个,如下:

1.将增加ip别名的命令填写到/etc/rc.local文件中
即将所有如这样ifconfig eth0:0 192.168.6.100 netmask 255.255.255.0 up的命令一行行全部填写到rc.local文件中去,rc.local文件是作用于linux开机自动执行命令,详细用法g或b一下,这里不详细说明。
这个方法最方便,但不太可靠,有时会失灵。

2.手动编写ip别名的网卡配置文件
所有网卡的配置文件都保存在/etc/sysconfig/network-scripts目录中,一个网卡对应一个配置文件,如图:


文件ifcfg-eth0就是本机网卡的配置文件,我们可以通过仿照这个文件的格式来编写其他ip别名的配置文件。

#cp ifcfg-eth0 ifcfg-eth0:0
将ifcfg-eth0复制一份
#vi ifcfg-eth0:0
按照下文的介绍修改部分信息,修改完成后保存退出

以下是网卡配置文件的部分信息说明,其他类似信息默认即可:
##############################################################################

# 3Com Corporation 3c905B 100BaseTX [Cyclone]    //硬件型号,忽略不计
DEVICE=eth0:0                 //虚拟网络接口,随意                                    
ONBOOT=yes                    //系统启动时激活
BOOTPROTO=static             //使用静态ip地址                
IPADDR=192.168.6.100          //该虚拟网络接口的ip别名,随意
NETMASK=255.255.255.0         //子网掩码,对应ip别名
GATEWAY=192.168.6.1           //网关,对应ip别名
HWADDR=00:10:5A:5E:B1:E4      //网卡MAC地址,无需更改                   
USERCTL=no                    //是否给予非root用户设备管理权限

##############################################################################

其他ip别名的配置文件大同小异,纯粹体力活~~
这个方法最繁琐,但又是最可靠,唉,人生就是这样,永远不得两全其美~~

四、清除ip别名
#ifconfg eth0:0 down
#ifconfg eth0:1 down

#ifconfg eth0:2 down

......

五、ip别名和从属ip地址(secondary ip address

secondary ip address和ip alias是不同的概念,首先问Google,Google没有给我好的答案。只好自己摸索了,于是目前只能得到下面的一些概念:

ip alias和secondary ip address是两种不同的实现方式,用来在Linux系统中给同一个物理网卡增加多个ip地址。

ip alias是由ifconfig程序来创建和维护的,而secondary ip address则是有ip程序来创建和维护的。ip addr add 创建的scondary ip address不能在ifconfig -a中看到,反过来,ifconfig创建的ethX:Y却能在ip addr show中看到。

ip alias在上面介绍了,因此说说secondary ip address如何创建

[root@mlsx autostart]# ifconfig
eth1 Link encap:Ethernet HWaddr 00:13:77:00:7C:C6
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:163438 errors:2515 dropped:0 overruns:0 frame:2515
TX packets:165217 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:96792997 (92.3 MiB) TX bytes:16356841 (15.5 MiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:561 errors:0 dropped:0 overruns:0 frame:0
TX packets:561 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:119798 (116.9 KiB) TX bytes:119798 (116.9 KiB)
eth0被我用ifconfig eth0 down了。

[root@mlsx autostart]# ip addr sh
2: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
4: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:12:f0:1d:e8:c5 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.101/24 brd 192.168.1.255 scope global eth0
6: eth1: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:13:77:00:7c:c6 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.100/24 brd 192.168.0.255 scope global eth1
down下去的eth0在这里还是能体现出来的。

[root@mlsx autostart]# ip addr add 192.168.0.102/24 dev eth1
[root@mlsx autostart]# ip addr sh eth1
6: eth1: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:13:77:00:7c:c6 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.100/24 brd 192.168.0.255 scope global eth1
inet 192.168.0.102/24 scope global secondary eth1
[root@mlsx autostart]# ping 192.168.0.102
PING 192.168.0.102 (192.168.0.102) 56(84) bytes of data.
64 bytes from 192.168.0.102: icmp_seq=1 ttl=64 time=0.049 ms
64 bytes from 192.168.0.102: icmp_seq=2 ttl=64 time=0.043 ms
通过ip程序增加了一个secondar ip address,通过ip addr show也能看到,而且能ping通,但是ifconfig中却看不到。

[root@mlsx autostart]# ifconfig -a
eth1 Link encap:Ethernet HWaddr 00:13:77:00:7C:C6
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:163888 errors:2515 dropped:0 overruns:0 frame:2515
TX packets:165696 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:96837439 (92.3 MiB) TX bytes:16426734 (15.6 MiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:565 errors:0 dropped:0 overruns:0 frame:0
TX packets:565 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:120134 (117.3 KiB) TX bytes:120134 (117.3 KiB)
但是ip alias和secondary ip address在实际的使用过程中,会有什么差别呢?
大部分HA软件,包括开源的heartbeat都采用了ip alias的方式,为什么他们不采用secondary ip address方式呢?
或者说ip alias和secondary ip address比较起来,谁更优秀呢?

五、ip别名的应用

通过使用从属ip地址或ip别名,你可以在一个ip地址上提供一个服务如sendmail,以及在另一个ip地址上提供另外的服务,如HTTP,即使这两个ip地址同属于一台计算机(一块物理网卡,一个MAC地址)。

当你使用Heartbeat在一个从属ip地址(或ip别名)上提供一个服务时,这个服务是属于服务器的(意味着服务器是激活的或主要节点),服务器拥有用于访问服务的ip地址,备用节点必须使用从属ip地址(或ip别名),当主节点出故障时,服务应该都备用节点提供,备用服务器不但需要启动服务或守护进程,而且还需要为它的网卡添加适当的从属ip地址(或ip别名)。

使用以太网传输心跳数据包的双节点Heartbeat集群配置如图6-2所示。

 (点击查看大图)图6-2:一个基本的Heartbeat配置

在图6-2中,ip地址209.100.100.2是主服务器的主ip地址,它永远不需要转移到备用服务器,备用服务器的主ip地址是209.100.100.5,同样这个ip地址也永远不用转移到另外的网卡上,然而,ip地址209.100.100.3和209.100.100.4分别关联到运行在主服务器上的某个特定的服务上,如果主服务器停掉,这些ip地址需要转移到备用服务器上,如图6-3所示。

 (点击查看大图)图6-3:主服务器失效后相同的Heartbeat基本配置


原创粉丝点击