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实现介绍





相关文章
|
14天前
|
安全 Ubuntu Java
Linux配置使用篇
Linux配置使用篇
|
11天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
31 6
|
13天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
17 0
|
14天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
3天前
|
Linux 网络安全 开发工具
【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透
【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透
|
4天前
|
缓存 安全 Ubuntu
Linux配置代理上网
如何配置Linux代理
10 1
|
13天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
19 0
|
15天前
|
监控 Linux
|
17天前
|
域名解析 监控 网络协议
Linux网卡与IP地址:通往网络世界的通行证 🌐
探索Linux网卡与IP地址关系,理解网卡作为网络通信的关键。Linux网卡需配置IP地址以实现唯一标识、通信、路由、安全管理和网络服务。无IP地址时,网卡在特定情况如局域网服务、网络监控、无线认证和网络启动可有限工作,但通用功能受限。配置IP地址通常通过`ifconfig`(传统)或`ip`(现代)命令,永久配置需编辑网络配置文件。配置错误如IP冲突、子网掩码错误、默认网关和DNS配置不当可能导致服务中断、网络拥堵、安全漏洞和数据丢失。重视网络配置的正确与安全至关重要。
Linux网卡与IP地址:通往网络世界的通行证 🌐
|
19天前
|
存储 缓存 监控
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)