CA88新登入Ubuntu下配置虚拟IP地址,在虚拟机上eth0

Linux一个主机配多个IP

在虚拟机上eth0 ping 主机,为什么在其他出接口tcpdump还能看到报文?
主机信息:

我配置虚拟IP地址的目的是为了实现高可用性,那是后话,先看看Ubuntu
12.04下如何设置虚拟IP地址。

 

连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::998f:e20:1480:3aab%13
IPv4 地址 . . . . . . . . . . . . : 192.168.1.107
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.1.1

首先看一下我的Ubuntu的IP:

首先我们在linux下查看该主机的IP地址:

虚拟机信息:
eth0 Link encap:Ethernet HWaddr 00:0C:29:A0:55:AB

  1. chenshu@sloop2:~$ ifconfig  
  2. eth0      Link encap:Ethernet  HWaddr d0:67:e5:ef:5a:6e    
  3.           inet addr:10.112.18.158  Bcast:10.112.18.255  Mask:255.255.255.0  
  4.           inet6 addr: fe80::d267:e5ff:feef:5a6e/64 Scope:Link  
  5.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
  6.           RX packets:341661 errors:0 dropped:0 overruns:0 frame:0  
  7.           TX packets:242801 errors:0 dropped:0 overruns:0 carrier:0  
  8.           collisions:0 txqueuelen:1000   
  9.           RX bytes:328287656 (328.2 MB)  TX bytes:31858367 (31.8 MB)  
  10.           Interrupt:17   
  11.   
  12. lo        Link encap:Local Loopback    
  13.           inet addr:127.0.0.1  Mask:255.0.0.0  
  14.           inet6 addr: ::1/128 Scope:Host  
  15.           UP LOOPBACK RUNNING  MTU:16436  Metric:1  
  16.           RX packets:17904 errors:0 dropped:0 overruns:0 frame:0  
  17.           TX packets:17904 errors:0 dropped:0 overruns:0 carrier:0  
  18.           collisions:0 txqueuelen:0   
  19.           RX bytes:2160236 (2.1 MB)  TX bytes:2160236 (2.1 MB)  

#ifconfig

inet addr:192.168.1.108 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea0:55ab/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8313 errors:0 dropped:0 overruns:0 frame:0
TX packets:9646 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:612195 (597.8 KiB) TX bytes:2116557
Interrupt:19 Base address:0x2024

ping一下191,发现网络中没有,就用它做虚拟IP吧。

eth0      Link encap:Ethernet HWaddr 00:16:8d:B7:6A:E0 

eth1 Link encap:Ethernet HWaddr 00:0C:29:A0:55:B5

sudo -s之后,执行下面的命令,

          inet addr:192.168.1.111 Bcast:192.168.1.255 Mask:255.255.252.0

inet addr:192.168.1.109 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea0:55b5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1443 errors:0 dropped:0 overruns:0 frame:0
TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:128176 (125.1 KiB) TX bytes:5634
Interrupt:19 Base address:0x20a4

  1. ifconfig eth0:0 10.112.18.191 netmask 255.255.255.0 up  

          inet6 addr: fd80::213:8eff:feb7:2ae0/64 Scope:Link

eth2 Link encap:Ethernet HWaddr 00:0C:29:A0:55:BF

确保虚拟IP地址和本机IP地址在一个网段。

          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

inet addr:192.168.1.110 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea0:55bf/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8109 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1117965 TX bytes:1408
Interrupt:16 Base address:0x2424

再来看一下是否成功:

          RX packets:7077 errors:0 dropped:0 overruns:0 frame:0

lo Link encap:Local Loopback

  1. ifconfig  
  2. eth0      Link encap:Ethernet  HWaddr d0:67:e5:ef:5a:6e    
  3.           inet addr:10.112.18.158  Bcast:10.112.18.255  Mask:255.255.255.0  
  4.           inet6 addr: fe80::d267:e5ff:feef:5a6e/64 Scope:Link  
  5.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
  6.           RX packets:347634 errors:0 dropped:0 overruns:0 frame:0  
  7.           TX packets:246488 errors:0 dropped:0 overruns:0 carrier:0  
  8.           collisions:0 txqueuelen:1000   
  9.           RX bytes:335797145 (335.7 MB)  TX bytes:32178089 (32.1 MB)  
  10.           Interrupt:17   
  11.   
  12. eth0:0    Link encap:Ethernet  HWaddr d0:67:e5:ef:5a:6e    
  13.           inet addr:10.112.18.191  Bcast:10.112.18.255  Mask:255.255.255.0  
  14.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
  15.           Interrupt:17   
  16.   
  17. lo        Link encap:Local Loopback    
  18.           inet addr:127.0.0.1  Mask:255.0.0.0  
  19.           inet6 addr: ::1/128 Scope:Host  
  20.           UP LOOPBACK RUNNING  MTU:16436  Metric:1  
  21.           RX packets:17953 errors:0 dropped:0 overruns:0 frame:0  
  22.           TX packets:17953 errors:0 dropped:0 overruns:0 carrier:0  
  23.           collisions:0 txqueuelen:0   
  24.           RX bytes:2164072 (2.1 MB)  TX bytes:2164072 (2.1 MB)  

          TX packets:54 errors:0 dropped:0 overruns:0 carrier:0

inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1584 TX bytes:1584

本机测试:

          collisions:0 txqueuelen:1000 

[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth2
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

  1. ping 10.112.18.191  
  2. PING 10.112.18.191 (10.112.18.191) 56(84) bytes of data.  
  3. 64 bytes from 10.112.18.191: icmp_req=1 ttl=64 time=0.028 ms  

          RX bytes:654811 (639.4 KiB) TX bytes:6229 (6.0 KiB)

在虚拟机上进行如下操作:(去ping主机的ip地址,用eth0)
[root@localhost ~]# ping 192.168.1.107 -I eth0
PING 192.168.1.107 (192.168.1.107) from 192.168.1.108 eth0: 56 bytes of
data.
64 bytes from 192.168.1.107: icmp_seq=1 ttl=64 time=0.492 ms
64 bytes from 192.168.1.107: icmp_seq=2 ttl=64 time=0.500 ms
64 bytes from 192.168.1.107: icmp_seq=3 ttl=64 time=1.13 ms
64 bytes from 192.168.1.107: icmp_seq=4 ttl=64 time=0.517 ms
64 bytes from 192.168.1.107: icmp_seq=5 ttl=64 time=0.381 ms
在虚拟机上抓包
[root@localhost ~]# tcpdump -i eth2 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode
listening on eth2, link-type EN10MB , capture size 65535 bytes
18:11:46.945393 IP 192.168.1.108 > 192.168.1.107: ICMP echo request,
id 54537, seq 8, length 64
18:11:46.945438 IP 192.168.1.107 > 192.168.1.108: ICMP echo reply, id
54537, seq 8, length 64
18:11:47.947676 IP 192.168.1.108 > 192.168.1.107: ICMP echo request,
id 54537, seq 9, length 64
竟然可以抓到。
我就很疑惑,虚拟机的网卡都是桥连的,感谢大牛为我解决疑惑。

换台机器测试:

          Interrupt:10 Base address:0xb800

  1. edward@edward-catamaran:~$ ping 10.112.18.191  
  2. PING 10.112.18.191 (10.112.18.191) 56(84) bytes of data.  
  3. 64 bytes from 10.112.18.191: icmp_req=1 ttl=64 time=0.916 ms  
  4. 64 bytes from 10.112.18.191: icmp_req=2 ttl=64 time=0.258 ms  

   
这里我们只看到该主机只有一个IP地址,我们要在网卡eth0上再绑定另外一个IP,因为一般的机器它只有一张网卡,所以我们就在同一张网卡上进行多个IP的绑定。好了,我们开始做吧。

删除虚拟IP的方法。

1.首先进入网卡的配置文件

ifconfig eth0:0 down

#cd /etc/sysconfig/network-scripts

后面还要做什么?当然是保存配置,保证重启后虚拟IP也还在。

2.复制网卡eth0的配置文件

直接在/etc/network/interfaces文件中添加:

#cp ifcfg-eth0 ifcfg-eth0:0

  1. auto lo  
  2. iface lo inet loopback  
  3.   
  4.   
  5.   
  6. auto eth0:0  
  7. iface eth0:0 inet static  
  8. name Ethernet alias LAN card  
  9. address 10.112.18.191  
  10. netmask 255.255.255.0  
  11. broadcast 10.112.18.255  
  12. network 10.112.18.0  

3.修改ifcfg-eht0:0文件

重新启动网络服务。

#vi ifcfg-eth0:0

/etc/init.d/networking restart

将其中的IP地址改为你的另外一个IP地址,比如我的修改如下:

CA88新登入 1

DEVICE=eth0:0  #网卡的设置名称,要跟文件名一致