Linux环境下配置虚拟ip,方法1:新增多个子网卡,每个子网卡有独立的配置文件-阿里云开发者社区

开发者社区> y2hr4cjzssnlm> 正文

Linux环境下配置虚拟ip,方法1:新增多个子网卡,每个子网卡有独立的配置文件

简介: Linux环境下配置虚拟ip,方法1:新增多个子网卡,每个子网卡有独立的配置文件
+关注继续查看

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


eth0 eth0:1 和eth0.1三者的关系对应于物理网卡、子网卡、虚拟VLAN网卡的关系:

物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡分别对应是eth0和eth1这两个网络接口。

子网卡:子网卡在这里并不是实际上的网络接口设备,但是可以作为网络接口在系统中出现,如eth0:1、eth1:2这种网络接口。它们必须要依赖于物理网卡,虽然可以与物理网卡的网络接口同时在系统中存在并使用不同的IP地址,而且也拥有它们自己的网络接口配置文件。但是当所依赖的物理网卡不启用时(Down状态)这些子网卡也将一同不能工作。

虚拟VLAN网卡:这些虚拟VLAN网卡也不是实际上的网络接口设备,也可以作为网络接口在系统中出现,但是与子网卡不同的是,他们没有自己的配置文件。他们只是通过将物理网加入不同的VLAN而生成的VLAN虚拟网卡。如果将一个物理网卡通过vconfig命令添加到多个VLAN当中去的话,就会有多个VLAN虚拟网卡出现,他们的信息以及相关的VLAN信息都是保存在/proc/net/vlan/config这个临时文件中的,而没有独自的配置文件。它们的网络接口名是eth0.1、eth1.2这种名字。


下面通过几个例子简单介绍一下如何使用ifconfig命令给网卡配置ip别名。

一、首先为服务器网卡配置静态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                          //表示立即激活该网卡


请注意。不一定每个服务器都是eth0,例如我的公司服务器是em1,em2...我的虚拟机是ens33等等。实际应该以ifconfig命令和ip addr命令查看到的为准。


#ifconfig

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


image.png



二、设置网卡的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

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


image.png

#ping 192.168.6.100

#ping 173.173.173.173

#ping 119.110.120.1

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

image.png



*注意:在设置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目录中,一个网卡对应一个配置文件,如图:

image.png

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


#vi ifcfg-eth0

打开网卡的配置文件,将里面所有字段复制一下

#vi ifcfg-eth0:0

创建eth0:0的配置文件,并将刚才复制的字段粘贴到这个配置文件,按照下文的介绍修改部分信息,修改完成后保存退出


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

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


# 3Com Corporation 3c905B 100BaseTX [Cyclone]    //硬件型号,忽略不计

DEVICE=eth0:0                 //虚拟网络接口,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

......


很简单吧...无需多解释。重启所有网卡的命令:service network restart




五、firecat亲自实践,我使用虚拟机桥接网络模式,


[root@localhost ~]# ifconfig ens33:0 172.16.6.162 netmask 255.255.255.0 up

[root@localhost ~]# ifconfig

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

       inet 172.16.6.161  netmask 255.255.255.0  broadcast 172.16.6.255

       inet6 fe80::2176:1363:975e:6c17  prefixlen 64  scopeid 0x20<link>

       ether 00:0c:29:b9:7b:31  txqueuelen 1000  (Ethernet)

       RX packets 43636  bytes 4482547 (4.2 MiB)

       RX errors 0  dropped 0  overruns 0  frame 0

       TX packets 587  bytes 65621 (64.0 KiB)

       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

       inet 172.16.6.162  netmask 255.255.255.0  broadcast 172.16.6.255

       ether 00:0c:29:b9:7b:31  txqueuelen 1000  (Ethernet)

[root@localhost ~]# netstat -nalp|grep 1883

tcp        0      0 172.16.6.161:1883       0.0.0.0:*               LISTEN       6977 /epltest        

tcp        0      0 172.16.6.162:1883       0.0.0.0:*               LISTEN      7002/epltest        




所有网卡的配置文件都保存在/etc/sysconfig/network-scripts目录中,但是firecat发现这种方法在虚拟机下有些奇怪现象:


(1)、ifconfig看到的网卡是ens33,但是我在/etc/sysconfig/network-scripts目录下又找不到ifcfg-ens33文件,倒是有这个文件:


ifcfg-Wired_connection_1,里面记录了ens33的网络信息。


(2)、这个掉电保存网卡信息的方法2对虚拟机不好使,建议看下一篇博客的方法。




六、ifconfig详解


ifconfig配置网络接口语法:

ifconfig 网络端口 IP地址 hw MAC地址 netmask 掩码地址 broadcast 广播地址 [up/down]


ifconfig常用用法:

ifconfig : 查看主机激活状态的网络接口情况; 输出结果中:lo 是表示主机的回坏地址,eth0 表示第一块网卡, 其中 HWaddr 表示网卡的物理地址(MAC地址); inet addr 用来表示网卡的IP地址,Bcast表示广播地址,Mask表示掩码地址

ifconfig -a : 查看主机所有(包括没有被激活的)网络接口的情况

ifconfig eth0 : 查看特定网络接口的状态

ifconfig eth0 down = ifup eth0 : 如果eth0是激活的,就把它终止掉。此命令等同于 ifdown eth0;

ifconfig eth0 up = ifdown eth0 : 激活eth0 ; 此命令等同于 ifup eth0

ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 : 配置 eth0的IP地址、广播地址和网络掩码;

ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 up : 配置IP地址、网络掩码、广播地址的同时,激活网卡eth0

ifconfig eth1 hw ether 00:11:00:00:11:22 : 设置网卡的物理地址(MAC地址)。其中 hw 后面所接的是网络接口类型, ether表示以太网, 同时也支持 ax25 、ARCnet、netrom等,详情请查看 man ifconfig ;


用ifconfig 来配置虚拟网络接口:

有时我们为了满足不同的需要还需要配置虚拟网络接口,比如我们用不同的IP地址来架运行多个HTTPD服务器,就要用到虚拟地址;这样就省却了同一个IP地址,如果开设两个的HTTPD服务器时,要指定端口号。

虚拟网络接口指的是为一个网络接口指定多个IP地址,虚拟接口是这样的 eth0:0 、 eth0:1、eth0:2 ... .. eth1N。当然您为eth1 指定多个IP地址,也就是 eth1:0、eth1:1、eth1:2 ... ...以此类推;

ifconfig eth1:0 192.168.1.250 hw ether 00:11:00:00:11:44 netmask 255.255.255.0 broadcast 192.168.1.255 up

ifconfig eth1:1 192.168.1.249 hw ether 00:11:00:00:11:55 netmask 255.255.255.0 broadcast 192.168.1.255 up

注意:指定时,要为每个虚拟网卡指定不同的物理地址;




七、原理,说白了就是别名,仍然指向同个物理网卡,MAC地址相同,IP地址不同


虚拟IP技术在高可用领域像数据库SQLSERVER、web服务器等场景下使用很多,很疑惑它是怎么实现的,偶然,发现了一种方式可以实现虚拟ip。它的原理在于同一个物理网卡,是可以拥有多个ip地址的,至于虚拟网卡,也可用通过该方式拥有多个ip。  即对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的 任意一个都可以连接到这台主机,所有项目中数据库链接一项配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。其实现原理主要是靠TCP/IP的ARP协议。因为ip地址只是一个逻辑地址,在以太网中MAC地址才是真正用来进行数据传输的物理地址,每台主机中都有一个ARP高速缓存,存储同一个网络内的IP地址与MAC地址的对应关系,以太网中的主机发送数据时会先从这个缓存中查询目标IP对应的MAC地址,会向这个MAC地址发送数据。操作系统会自动维护这个缓存。这就是整个实现 的关键。


---


参考文章:


linux配置虚拟IP地址

Linux-eth0 eth0:1 和eth0.1关系、ifconfig以及虚拟IP实现介绍





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Maven项目中无法找到 xml文件或 properties文件等配置文件的解决方法
在初次使用 Maven 项目的时候总是会遇到一些比较奇异的问题 就比如说总是会报错:项目里的 **.xml 或 **.properties 配置文件无法找到 这时你去项目中的 classes 生成文件(target 或 out)中找,确实这些配置文件没有被编译 这是因为 ...
1414 0
centos6配置vnc登录远程物理机及vb复制vdi启动虚拟机网络问题
1、安装vnc和vncserver #yum install tigervnc tigervnc-server 2、启动VNC服务# vncserverYou will require a password to access your desktops.Password:Verify:会提示输入密码,这个密码是远程登录时所需要输入的密码。
867 0
spring profile 多环境配置管理
本地、测试、开发、产品等不同环境文件配置 现象   如果在开发时进行一些数据库测试,希望链接到一个测试的数据库,以避免对开发数据库的影响。   开发时的某些配置比如log4j日志的级别,和生产环境又有所区别。
694 0
spring-自动加载配置文件\使用属性文件注入
在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到WEB-INF下 首先看下pom.
950 0
Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介
原文:Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介 Linux内核分析(四) 两天没有更新了,上次博文我们分析了linux的内存管理子系统,本来我不想对接下来的进程管理子系统、网络子系统、虚拟文件系统在这个阶段进行分析的,但是为了让大家对内核有个整体的把握,今天还是简单的介绍一下剩余的几个子系统,我们对这几个子系统的分析,只要了解其作用和部分内容即可,不必深究,等我们写上几个驱动,到时候按照驱动再来分析这几个子系统我们就清晰多了。
949 0
682
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载