我们在 LAN 中有三台安装了 SmartOS 的物理机。其中两台、10.40.0.30
和10.40.0.240
是虚拟机管理程序,上面有两个基于 pfSense 的虚拟化网关。这些网关分别具有10.40.0.1
和10.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 中启用接口虚拟混杂模式。