CARP 虚拟 IP 在虚拟化环境中无法 ping 通

CARP 虚拟 IP 在虚拟化环境中无法 ping 通

我们在 LAN 中有三台安装了 SmartOS 的物理机。其中两台、10.40.0.3010.40.0.240是虚拟机管理程序,上面有两个基于 pfSense 的虚拟化网关。这些网关分别具有10.40.0.110.40.0.2地址。10.40.0.3网关之间共享一个虚拟 IP。第三台 SmartOS 机器10.40.0.221是存储主机。以下是其中的 ARP 表:

[root@68-05-ca-1a-d2-eb ~]# arp -a -n
Net to Media Table: IPv4
Device   IP Address               Mask      Flags      Phys Addr
------ -------------------- --------------- -------- ---------------
aggr0  224.0.0.251          255.255.255.255 S        01:00:5e:00:00:fb
aggr0  10.40.0.2            255.255.255.255          f2:b4:a3:21:de:9f
aggr0  10.40.0.3            255.255.255.255          00:00:5e:00:01:02
aggr0  10.40.0.1            255.255.255.255          a2:b1:25:07:ea:97
aggr0  10.40.0.15           255.255.255.255          20:6a:8a:0e:a5:6e
aggr0  10.40.0.30           255.255.255.255          02:08:20:ee:5b:8b
aggr0  10.40.0.240          255.255.255.255          02:08:20:3e:aa:9e
aggr0  224.0.0.22           255.255.255.255 S        01:00:5e:00:00:16
aggr0  10.40.0.221          255.255.255.255 SPLA     68:05:ca:1a:d2:eb
[root@68-05-ca-1a-d2-eb ~]# 

如您所见,ARP 表有一个共享虚拟 IP 的条目。问题是我们既无法从存储主机 ping 共享 IP,也无法在 pfSense 虚拟机上看到传入的 ICMP 数据包。

我们猜测该问题与虚拟化有某种关系。我们从虚拟化网卡上移除了所有限制:

root@a0-36-9f-17-e3-fe ~ dladm show-linkprop net1 -z d783afd7-f8e0-48bf-bc9d-b41939e7b8f8            
LINK         PROPERTY        PERM VALUE          DEFAULT        POSSIBLE
net1         autopush        rw   --             --             -- 
net1         zone            rw   d783afd7-f8e0-48bf-bc9d-b41939e7b8f8 -- -- 
net1         state           r-   unknown        up             up,down 
net1         mtu             rw   1500           1500           1500 
net1         secondary-macs  rw   --             --             -- 
net1         maxbw           rw   --             --             -- 
net1         cpus            rw   --             --             -- 
net1         cpus-effective  r-   1-2            --             -- 
net1         pool            rw   --             --             -- 
net1         pool-effective  r-   --             --             -- 
net1         priority        rw   high           high           low,medium,high 
net1         tagmode         rw   vlanonly       vlanonly       normal,vlanonly 
net1         protection      rw   --             --             mac-nospoof,
                                                                restricted,
                                                                ip-nospoof,
                                                                dhcp-nospoof 
net1         promisc-filtered rw  off            on             off,on 
net1         allowed-ips     rw   --             --             -- 
net1         allowed-dhcp-cids rw --             --             -- 
net1         rxrings         rw   --             --             -- 
net1         rxrings-effective r- --             --             -- 
net1         txrings         rw   --             --             -- 
net1         txrings-effective r- --             --             -- 
net1         txrings-available r- 0              --             -- 
net1         rxrings-available r- 0              --             -- 
net1         rxhwclnt-available r- 0             --             -- 
net1         txhwclnt-available r- 0             --             -- 
root@a0-36-9f-17-e3-fe ~ 

但它并没有开始起作用。

我们还可以尝试什么?

答案1

我认为您必须配置运行 UCARP 的两台网关机器,并将这些属性添加到网络配置中:

  "allow_ip_spoofing": true,
  "allow_mac_spoofing": true

为此,您可以创建一个文件,例如将其命名为 updatenic.json

{
   "update_nics": [
      {
         "mac": "e2:31:fc:70:df:1c",
         "allow_ip_spoofing": true,
         "allow_mac_spoofing": true
      }
   ]
}

然后发出命令

vmadm update UUID < updatenic.json

答案2

只需在 virtualbox 中启用接口虚拟混杂模式。

相关内容