天天看点

Centos7系统配置上的变化(三)为网络接口添加多IP

实验的方法有 nmtui, 编辑ifcfg-*文件,ip addr 指令,子连接配置文件。

一、nmtui手工添加IP

Centos7系统配置上的变化(三)为网络接口添加多IP

看一下当前网络设备的IP,为了精简指令输出,指令就要复杂一些了:

<code>01.</code><code>[root</code><code>@centos7</code> <code>~]# nmcli -t -f IP4.ADDRESS dev show enp0s3</code>

<code>02.</code><code>IP4.ADDRESS[</code><code>1</code><code>]:ip = </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code><code>, gw = </code><code>192.168</code><code>.</code><code>150.254</code>

<code>03.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>04.</code><code>[root</code><code>@centos7</code> <code>~]# ip addr show enp0s3 scope global</code>

<code>05.</code><code>2</code><code>: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu </code><code>1500</code> <code>qdisc pfifo_fast state UP qlen </code><code>1000</code>

<code>06.</code><code>link/ether </code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>15</code><code>:</code><code>35</code><code>:d2 brd ff:ff:ff:ff:ff:ff</code>

<code>07.</code><code>inet </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global enp0s3</code>

<code>08.</code><code>valid_lft forever preferred_lft forever</code>

<code>09.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>10.</code><code>[root</code><code>@centos7</code> <code>~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0</code>

<code>11.</code><code>......</code>

<code>12.</code><code>IPADDR0=</code><code>192.168</code><code>.</code><code>150.110</code>

<code>13.</code><code>PREFIX0=</code><code>24</code>

<code>14.</code><code>GATEWAY0=</code><code>192.168</code><code>.</code><code>150.254</code>

<code>15.</code><code>DNS1=</code><code>192.168</code><code>.</code><code>150.254</code>

<code>16.</code><code>HWADDR=</code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>15</code><code>:</code><code>35</code><code>:D2</code>

<code>17.</code><code>IPADDR1=</code><code>192.168</code><code>.</code><code>150.111</code>

<code>18.</code><code>PREFIX1=</code><code>24</code>

<code>19.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

新IP已经被加入到ifcfg-eth0中,原始地址的关键字是 IPADDR0、PREFIX0,新地址的关键字是 IPADDR1、PREFIX1 。

<code>1.</code><code>[root</code><code>@centos7</code> <code>~]# nmcli con load /etc/sysconfig/network-scripts/ifcfg-eth0</code>

<code>2.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>3.</code><code>[root</code><code>@centos7</code> <code>~]# nmcli -t -f IP4.ADDRESS dev show enp0s3</code>

<code>4.</code><code>IP4.ADDRESS[</code><code>1</code><code>]:ip = </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code><code>, gw = </code><code>192.168</code><code>.</code><code>150.254</code>

<code>5.</code><code>[root</code><code>@centos7</code> <code>~]#&lt;br&gt;[root</code><code>@centos7</code> <code>~]# ip addr show enp0s3 scope global&lt;br&gt;</code><code>2</code><code>: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu </code><code>1500</code> <code>qdisc pfifo_fast state UP qlen </code><code>1000</code><code>&lt;br&gt;    link/ether </code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>15</code><code>:</code><code>35</code><code>:d2 brd ff:ff:ff:ff:ff:ff&lt;br&gt;    inet </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code> <code>brd</code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global enp0s3&lt;br&gt;       valid_lft forever preferred_lft forever&lt;br&gt;[root</code><code>@centos7</code> <code>~]#</code>

load connection 后,NetworkManager 也没有知晓新增IP,新增IP也没有出现在 ip addr show 中。

<code>01.</code><code>[root</code><code>@centos7</code> <code>~]# systemctl restart network</code>

<code>02.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>03.</code><code>[root</code><code>@centos7</code> <code>~]# nmcli -t -f IP4.ADDRESS dev show enp0s3</code>

<code>04.</code><code>IP4.ADDRESS[</code><code>1</code><code>]:ip = </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code><code>, gw = </code><code>192.168</code><code>.</code><code>150.254</code>

<code>05.</code><code>IP4.ADDRESS[</code><code>2</code><code>]:ip = </code><code>192.168</code><code>.</code><code>150.111</code><code>/</code><code>24</code><code>, gw = </code><code>192.168</code><code>.</code><code>150.254</code>

<code>06.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>07.</code><code>[root</code><code>@centos7</code> <code>~]# ip addr show enp0s3 scope global</code>

<code>08.</code><code>2</code><code>: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu </code><code>1500</code> <code>qdisc pfifo_fast state UP qlen </code><code>1000</code>

<code>09.</code><code>link/ether </code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>15</code><code>:</code><code>35</code><code>:d2 brd ff:ff:ff:ff:ff:ff</code>

<code>10.</code><code>inet </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global enp0s3</code>

<code>11.</code><code>valid_lft forever preferred_lft forever</code>

<code>12.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>13.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>14.</code><code>[root</code><code>@centos7</code> <code>~]# ping </code><code>192.168</code><code>.</code><code>150.111</code>

<code>15.</code><code>PING </code><code>192.168</code><code>.</code><code>150.111</code> <code>(</code><code>192.168</code><code>.</code><code>150.111</code><code>) </code><code>56</code><code>(</code><code>84</code><code>) bytes of data.</code>

<code>16.</code><code>From </code><code>192.168</code><code>.</code><code>150.110</code> <code>icmp_seq=</code><code>1</code> <code>Destination Host Unreachable</code>

<code>17.</code><code>From </code><code>192.168</code><code>.</code><code>150.110</code> <code>icmp_seq=</code><code>2</code> <code>Destination Host Unreachable</code>

<code>18.</code><code>......</code>

重启network服务后,NetworkManager 知晓新增IP了,但新增IP还是没有生效。

<code>01.</code><code>[root</code><code>@centos7</code> <code>~]# nmcli dev connect enp0s3</code>

<code>04.</code><code>[root</code><code>@centos7</code> <code>~]# nmcli -t -f IP4.ADDRESS dev show enp0s3</code>

<code>05.</code><code>IP4.ADDRESS[</code><code>1</code><code>]:ip = </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code><code>, gw = </code><code>192.168</code><code>.</code><code>150.254</code>

<code>06.</code><code>IP4.ADDRESS[</code><code>2</code><code>]:ip = </code><code>192.168</code><code>.</code><code>150.111</code><code>/</code><code>24</code><code>, gw = </code><code>192.168</code><code>.</code><code>150.254</code>

<code>07.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>08.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>09.</code><code>[root</code><code>@centos7</code> <code>~]# ip addr show enp0s3 scope global</code>

<code>10.</code><code>2</code><code>: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu </code><code>1500</code> <code>qdisc pfifo_fast state UP qlen </code><code>1000</code>

<code>11.</code><code>link/ether </code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>15</code><code>:</code><code>35</code><code>:d2 brd ff:ff:ff:ff:ff:ff</code>

<code>12.</code><code>inet </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global enp0s3</code>

<code>13.</code><code>valid_lft forever preferred_lft forever</code>

<code>14.</code><code>inet </code><code>192.168</code><code>.</code><code>150.111</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global secondary enp0s3</code>

<code>15.</code><code>valid_lft forever preferred_lft forever</code>

<code>16.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>17.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>18.</code><code>[root</code><code>@centos7</code> <code>~]# ping </code><code>192.168</code><code>.</code><code>150.111</code>

<code>19.</code><code>PING </code><code>192.168</code><code>.</code><code>150.111</code> <code>(</code><code>192.168</code><code>.</code><code>150.111</code><code>) </code><code>56</code><code>(</code><code>84</code><code>) bytes of data.</code>

<code>20.</code><code>64</code> <code>bytes from </code><code>192.168</code><code>.</code><code>150.111</code><code>: icmp_seq=</code><code>1</code> <code>ttl=</code><code>64</code> <code>time=</code><code>0.039</code> <code>ms</code>

<code>21.</code><code>64</code> <code>bytes from </code><code>192.168</code><code>.</code><code>150.111</code><code>: icmp_seq=</code><code>2</code> <code>ttl=</code><code>64</code> <code>time=</code><code>0.079</code> <code>ms</code>

<code>22.</code><code>......</code>

<code>23.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

重新连接设备 enp0s3,新IP生效了。注意:不需要先断开设备(nmcli dev disconnect enp0s3),断开设备的话ssh立刻断线。重新连接设备的过程中,ssh是不会断线的。

nmtui添加IP后,需要: nmcli con load /etc/sysconfig/network-scripts/ifcfg-eth0 nmcli dev connect enp0s3

二、手工添加IP到ifcfg-eth0

在ifcfg-eth0配置文件中手工添加如下两行: IPADDR2=192.168.150.112 PREFIX2=24

先执行 nmcli con load /etc/sysconfig/network-scripts/ifcfg-eth0 后,在nmtui中可以看到新增IP。(也可以简单的用 nmcli con reload ,reload 和 load的区别自己脑补一下吧。) 再执行 nmcli dev connect enp0s3 后,IP 192.168.150.112 才生效的。

手工添加IP到ifcfg-eth0后,需要: nmcli con load /etc/sysconfig/network-scripts/ifcfg-eth0 或 nmcli con reload nmcli dev connect enp0s3

三、用ip addr add指令添加/删除IP,即刻生效,重启不保留。

在线添加IP:

<code>01.</code><code>[root</code><code>@centos7</code> <code>~]# ip addr add </code><code>192.168</code><code>.</code><code>150.113</code><code>/</code><code>24</code> <code>dev enp0s3</code>

<code>07.</code><code>IP4.ADDRESS[</code><code>3</code><code>]:ip = </code><code>192.168</code><code>.</code><code>150.112</code><code>/</code><code>24</code><code>, gw = </code><code>192.168</code><code>.</code><code>150.254</code>

<code>08.</code><code>IP4.ADDRESS[</code><code>4</code><code>]:ip = </code><code>192.168</code><code>.</code><code>150.113</code><code>/</code><code>24</code><code>, gw = </code><code>192.168</code><code>.</code><code>150.254</code>

<code>10.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>11.</code><code>[root</code><code>@centos7</code> <code>~]# ip addr show enp0s3 scope global</code>

<code>12.</code><code>2</code><code>: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu </code><code>1500</code> <code>qdisc pfifo_fast state UP qlen </code><code>1000</code>

<code>13.</code><code>link/ether </code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>15</code><code>:</code><code>35</code><code>:d2 brd ff:ff:ff:ff:ff:ff</code>

<code>14.</code><code>inet </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global enp0s3</code>

<code>16.</code><code>inet </code><code>192.168</code><code>.</code><code>150.111</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global secondary enp0s3</code>

<code>17.</code><code>valid_lft forever preferred_lft forever</code>

<code>18.</code><code>inet </code><code>192.168</code><code>.</code><code>150.112</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global secondary enp0s3</code>

<code>19.</code><code>valid_lft forever preferred_lft forever</code>

<code>20.</code><code>inet </code><code>192.168</code><code>.</code><code>150.113</code><code>/</code><code>24</code> <code>scope global secondary enp0s3</code>

<code>21.</code><code>valid_lft forever preferred_lft forever</code>

<code>22.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>24.</code><code>[root</code><code>@centos7</code> <code>~]# ping </code><code>192.168</code><code>.</code><code>150.113</code>

<code>25.</code><code>PING </code><code>192.168</code><code>.</code><code>150.113</code> <code>(</code><code>192.168</code><code>.</code><code>150.113</code><code>) </code><code>56</code><code>(</code><code>84</code><code>) bytes of data.</code>

<code>26.</code><code>64</code> <code>bytes from </code><code>192.168</code><code>.</code><code>150.113</code><code>: icmp_seq=</code><code>1</code> <code>ttl=</code><code>64</code> <code>time=</code><code>0.098</code> <code>ms</code>

<code>27.</code><code>64</code> <code>bytes from </code><code>192.168</code><code>.</code><code>150.113</code><code>: icmp_seq=</code><code>2</code> <code>ttl=</code><code>64</code> <code>time=</code><code>0.255</code> <code>ms</code>

<code>28.</code><code>......</code>

/etc/sysconfig/network-scripts/ifcfg-eth0 配置文件里并没有192.168.150.113,所以重启后该IP不会保留。

在线删除IP:

<code>01.</code><code>[root</code><code>@centos7</code> <code>~]# ip addr del </code><code>192.168</code><code>.</code><code>150.113</code><code>/</code><code>24</code> <code>dev enp0s3</code>

<code>10.</code><code>[root</code><code>@centos7</code> <code>~]# ip addr show enp0s3 scope global</code>

<code>11.</code><code>2</code><code>: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu </code><code>1500</code> <code>qdisc pfifo_fast state UP qlen </code><code>1000</code>

<code>12.</code><code>link/ether </code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>15</code><code>:</code><code>35</code><code>:d2 brd ff:ff:ff:ff:ff:ff</code>

<code>13.</code><code>inet </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global enp0s3</code>

<code>14.</code><code>valid_lft forever preferred_lft forever</code>

<code>15.</code><code>inet </code><code>192.168</code><code>.</code><code>150.111</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global secondary enp0s3</code>

<code>16.</code><code>valid_lft forever preferred_lft forever</code>

<code>17.</code><code>inet </code><code>192.168</code><code>.</code><code>150.112</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global secondary enp0s3</code>

<code>18.</code><code>valid_lft forever preferred_lft forever</code>

四、使用子连接配置文件 ifcfg-*:n

子连接配置文件是 Centos6 常用的方法,即:如果当前网卡配置文件为 ifcfg-eth0,则子连接配置文件可以为 ifcfg-eth0:1,并且文件中需要写明 DEVICE=eth0:1 , IPADDR=&lt;新IP地址&gt; 。 我们试试在Centos7 中是否也支持。理论上应该是不支持的,因为在Centos7的网络连接配置文件(即 ifcfg-*)中,DEVICE关键字已经具有了新的定义,即我们上篇说的“设备”。参考上篇 http://www.cnblogs.com/panblack/p/Centos7-WhatsNew-02-networking.html

首先注释掉ifcfg-eth0中的其他地址,复制 ifcfg-eth0 为 ifcfg-eth0:1,编辑ifcfg-eth0:1, DEVICE 设为eth0:1 ,IP设为 192.168.150.119 ,然后 nmcli con reload , nmcli dev con enp0s3

<code>01.</code><code>[root</code><code>@centos7</code> <code>~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0</code>

<code>02.</code><code>TYPE=Ethernet</code>

<code>03.</code><code>BOOTPROTO=none</code>

<code>04.</code><code>DEFROUTE=yes</code>

<code>05.</code><code>IPV4_FAILURE_FATAL=no</code>

<code>06.</code><code>IPV6INIT=no</code>

<code>07.</code><code>IPV6_AUTOCONF=yes</code>

<code>08.</code><code>IPV6_DEFROUTE=yes</code>

<code>09.</code><code>IPV6_PEERDNS=yes</code>

<code>10.</code><code>IPV6_PEERROUTES=yes</code>

<code>11.</code><code>IPV6_FAILURE_FATAL=no</code>

<code>12.</code><code>NAME=eth0</code>

<code>13.</code><code>UUID=295e1841-0ff3-4db9-</code><code>8800</code><code>-4e25fc2944da</code>

<code>14.</code><code>ONBOOT=yes</code>

<code>15.</code><code>IPADDR0=</code><code>192.168</code><code>.</code><code>150.110</code>

<code>16.</code><code>PREFIX0=</code><code>24</code>

<code>17.</code><code>GATEWAY0=</code><code>192.168</code><code>.</code><code>150.254</code>

<code>18.</code><code>DNS1=</code><code>192.168</code><code>.</code><code>150.254</code>

<code>19.</code><code>HWADDR=</code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>15</code><code>:</code><code>35</code><code>:D2</code>

<code>20.</code><code>#IPADDR1=</code><code>192.168</code><code>.</code><code>150.111</code>

<code>21.</code><code>#PREFIX1=</code><code>24</code>

<code>22.</code><code>#IPADDR2=</code><code>192.168</code><code>.</code><code>150.112</code>

<code>23.</code><code>#PREFIX2=</code><code>24</code>

<code>24.</code> 

<code>25.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>26.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>27.</code><code>[root</code><code>@centos7</code> <code>~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0:</code><code>1</code>

<code>28.</code><code>TYPE=Ethernet</code>

<code>29.</code><code>BOOTPROTO=none</code>

<code>30.</code><code>DEFROUTE=yes</code>

<code>31.</code><code>IPV4_FAILURE_FATAL=no</code>

<code>32.</code><code>IPV6INIT=no</code>

<code>33.</code><code>IPV6_AUTOCONF=yes</code>

<code>34.</code><code>IPV6_DEFROUTE=yes</code>

<code>35.</code><code>IPV6_PEERDNS=yes</code>

<code>36.</code><code>IPV6_PEERROUTES=yes</code>

<code>37.</code><code>IPV6_FAILURE_FATAL=no</code>

<code>38.</code><code>NAME=eth0:</code><code>1</code>

<code>39.</code><code>DEVICE=eth0:</code><code>1</code>

<code>40.</code><code>UUID=295e1841-0ff3-4db9-</code><code>8800</code><code>-4e25fc2944da</code>

<code>41.</code><code>ONBOOT=yes</code>

<code>42.</code><code>IPADDR0=</code><code>192.168</code><code>.</code><code>150.119</code>

<code>43.</code><code>PREFIX0=</code><code>24</code>

<code>44.</code><code>GATEWAY0=</code><code>192.168</code><code>.</code><code>150.254</code>

<code>45.</code><code>DNS1=</code><code>192.168</code><code>.</code><code>150.254</code>

<code>46.</code><code>HWADDR=</code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>15</code><code>:</code><code>35</code><code>:D2</code>

<code>47.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>48.</code><code>[root</code><code>@centos7</code> <code>~]# nmcli con reload</code>

<code>49.</code><code>[root</code><code>@centos7</code> <code>~]# nmcli dev connect enp0s3</code>

<code>50.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>51.</code><code>[root</code><code>@centos7</code> <code>~]# nmcli -t -f IP4.ADDRESS dev show enp0s3</code>

<code>52.</code><code>IP4.ADDRESS[</code><code>1</code><code>]:ip = </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code><code>, gw = </code><code>192.168</code><code>.</code><code>150.254</code>

<code>53.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>54.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

<code>55.</code><code>[root</code><code>@centos7</code> <code>~]# ip addr show enp0s3 scope global</code>

<code>56.</code><code>2</code><code>: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu </code><code>1500</code> <code>qdisc pfifo_fast state UP qlen </code><code>1000</code>

<code>57.</code><code>link/ether </code><code>08</code><code>:</code><code>00</code><code>:</code><code>27</code><code>:</code><code>15</code><code>:</code><code>35</code><code>:d2 brd ff:ff:ff:ff:ff:ff</code>

<code>58.</code><code>inet </code><code>192.168</code><code>.</code><code>150.110</code><code>/</code><code>24</code> <code>brd </code><code>192.168</code><code>.</code><code>150.255</code> <code>scope global eth0:</code><code>1</code>

<code>59.</code><code>valid_lft forever preferred_lft forever</code>

<code>60.</code><code>[root</code><code>@centos7</code> <code>~]#</code>

可以看到ifcfg-eth0:1里的新IP确实没有生效。

五、总结

ip addr show 中显示的IP才是有效的。 ip addr add 能在线添加IP,立即生效,但重启即丢。 ip addr del 能在线删除IP,立即生效,但重启即丢。 子连接(ifcfg-*:n)已经无效了。 nmtui和编辑ifcfg-eth0 文件效果基本相同,都不能立即生效,必须 load 连接再重新connect网络设备,即: nmcli con load /etc/sysconfig/network-scripts/ifcfg-eth0 或 nmcli reload nmcli dev connect enp0s3

继续阅读