ip addr del 操作ip时的注意事项[通俗易懂]

ip addr del 操作ip时的注意事项[通俗易懂]在高可用,多线路及系统维护的特殊情况下,我们通常会通过”ipaddr”这一命令来添加一个隐形IP在相应的设备上,但是当我们在一个设备上添加多个ip的时候,删除某个IP的时候尤其要注意,下面通过几个实例来说明,如下:root@localhost~]#ipaddradd10.1.1.230/24deveth0[root@localhost~]#ipaddradd1…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在高可用,多线路及系统维护的特殊情况下,我们通常会通过”ip addr ” 这一命令来添加一个隐形IP在相应的设备上,但是当我们在一个设备上添加多个ip的时候,删除某个IP的时候尤其要注意,下面通过几个实例来说明,如下:

root@localhost ~]# ip addr add 10.1.1.230/24 dev eth0
[root@localhost ~]# ip addr add 10.1.1.231/24 dev eth0
[root@localhost ~]# ip addr show
1: lo: 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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:19:b9:ef:44:8b brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.230/24 brd 172.16.0.255 scope global eth0
    inet 10.1.1.230/24 scope global eth0
    inet 10.1.1.231/24 scope global secondary eth0
    inet6 fe80::219:b9ff:feef:448b/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop qlen 1000
    link/ether 00:19:b9:ef:44:8d brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
[root@localhost ~]#

当删除10.1.1.230时,10.1.1.231 同时被删除,如下

 

[root@localhost ~]# ip addr del 10.1.1.230/24 dev eth0
[root@localhost ~]# ip addr show
1: lo: 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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:19:b9:ef:44:8b brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.230/24 brd 172.16.0.255 scope global eth0
    inet6 fe80::219:b9ff:feef:448b/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop qlen 1000
    link/ether 00:19:b9:ef:44:8d brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
[root@localhost ~]#


[root@localhost ~]# ip addr add 10.1.1.230/24 dev eth0
[root@localhost ~]# ip addr add 10.1.1.231/24 dev eth0
[root@localhost ~]# ip addr show
1: lo: 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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:19:b9:ef:44:8b brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.230/24 brd 172.16.0.255 scope global eth0
    inet 10.1.1.230/24 scope global eth0
    inet 10.1.1.231/24 scope global secondary eth0
    inet6 fe80::219:b9ff:feef:448b/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop qlen 1000
    link/ether 00:19:b9:ef:44:8d brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0

当删除 10.1.1.231时,10.1.1.230 还在

[root@localhost ~]# ip addr del 10.1.1.231/24 dev eth0  
[root@localhost ~]# ip addr show
1: lo: 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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:19:b9:ef:44:8b brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.230/24 brd 172.16.0.255 scope global eth0
    inet 10.1.1.230/24 scope global eth0
    inet6 fe80::219:b9ff:feef:448b/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop qlen 1000
    link/ether 00:19:b9:ef:44:8d brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0
[root@localhost ~]#

通过上面我们可以发现,如果删除的时候不小心仔细,可能会酿成悲剧,造成损失。那到底这一现象是怎么产生的呢?

原因是,在linux中只要在一个网卡上配置的ip是同一个网段的,那么它有Primary IP和Secondary address的区分,反之只要不是同一个网段的ip那么都是Primary IP;primary 和secondary 的关系就是一条链上的吊链结构中上面的那条主链中的IP就是Primary IP,Secondary address是主链结点的子链结点中的IP,一 旦主链上一个节点被删除了,那么它的子链也将不复存在,随之被删除.

要解决这疑问,可以通过调整一个参数来实现,当一个primary地址被删除时,如果它有secondary地址的话,那么它的第一个secondary地址(长子)继承被删除的primary地址的位置成为primary地址,这样就显得很合理了,要不然在删除 primary地址的时候,如果有程序用secondary地址,那么要么延迟删除,要么程序崩溃;起做法如下:

通过/proc可以配置一个选项,在当前Primary地址被删除时可以将Secondary地址提升为Primary地址,具体命令为 :

/sbin/sysctl net.ipv4.conf.eth0.promote_secondaries=1

设置重启后仍然生效的方法:

echo “net.ipv4.conf.eth0.promote_secondaries=1” >>/etc/sysctl.conf

请看下列实例,删除了先前的 scope global 10.1.1.230,inet 10.1.1.232/24 scope global 被提升了

[root@localhost ~]# ip addr del 10.1.1.230/24 dev eth0
[root@localhost ~]# ip addr show
1: lo: 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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:19:b9:ef:44:8b brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.230/24 brd 172.16.0.255 scope global eth0
    inet 10.1.1.232/24 scope global eth0
    inet6 fe80::219:b9ff:feef:448b/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop qlen 1000
    link/ether 00:19:b9:ef:44:8d brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd 0.0.0.0

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164672.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • origin绘图同时添加柱状图和折线图

    origin绘图同时添加柱状图和折线图在绘制数据图时,为了清晰反应不同数据之间的关系,往往需要在同一个图中同时添加柱状图和点线图。这时候需要左右两个纵坐标。下面介绍这种图的绘制方法1、首先绘制一个柱状图,具体绘制方法可以参考上一篇博客:origin绘图软件安装包及入门使用2在图的右侧插入刻度线,插入顺序如下图所示,点击图–>新图层(轴)–>右Y轴3、添加完后双击右侧刻度线修改刻度的起始值和要插入的点线图数值范围对应4、插入折线图,选择图->添加点线图,从book中选择要绘制点线图的数据导入到右侧

    2022年5月22日
    422
  • XMLHTTPREQUEST_ASP.NET

    XMLHTTPREQUEST_ASP.NET移除X-AspNet-VersionHTTP头在Web.Config的节点下添加如下内容:<httpRuntimeenableVersionHeader=”false”/>移除X-AspNetMvc-VersionHTTP头X-AspNetMvc-VersionHTTP头会自动被Asp.netMVC框架加入进去,如果你没有使用Asp.net…

    2022年9月29日
    0
  • c语言中break和continue的用法和区别

    c语言中break和continue的用法和区别break与continue的的用法以及区别1.当它们用在循环语句的循环体时,break用于立即退出本层循环,而continue仅仅结束本次循环(本次循环体内不执continue语句后的其它语句,但下一次循环还会继续执行。2.如果有多层循环时,break只会跳出本层循环,不会跳出其他层的循环.3.break可用于switch语句,表示跳出整个switch语句块,而contin…

    2022年9月11日
    0
  • ES6数组方法汇总

    ES6数组方法汇总1.forEachforEach会遍历数组,没有返回值,不允许在循环体内写return,不会改变原来数组的内容.constarray=[1,2,3,4];array.forEach((item,index,array)=>{  console.log(item)//顺序打出1234})2.mapmap遍历数组,会返回一个新…

    2022年6月12日
    34
  • linux下的C语言编程(总结篇)

    linux下的C语言编程(总结篇)【声明:版权所有,欢迎转载,请勿用于商业用途。联系信箱:feixiaoxing@163.com】在Linux下面关于C语言的内容其实挺多的。不同的人关注的地方也不一样。关注系统设计的人可能更关注整个linux系统的结构;设计驱动的人可能更关注linux驱动的配置和实现;而我在这里所关注的只是linux应用层方面的内容,属于最基础的内容,当然也是最重要的内容。实际上对应于………

    2022年7月26日
    3
  • 一遍记住Java常用的八种排序算法与代码实现[通俗易懂]

    一遍记住Java常用的八种排序算法与代码实现[通俗易懂]一遍记住Java常用的八种排序算法与代码实现

    2022年4月21日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号