O bloqueio da porta do comutador XCP não funciona

1

Estou experimentando os recursos de "bloqueio de porta de switch" do XCP / XenServer que permitem ao hipervisor limitar os endereços IP que uma máquina virtual pode usar. No entanto, não consigo fazer com que funcione como esperado.

Ambiente: XCP 1.6 em execução no Dell PE2950. VM (Ubuntu 12.04 VM) conectada a uma única rede. Rede fornecida ao XCP como uma rede unida (sem VLANs). O XCP está usando o OVS, não o Linux.

O VIF associado à VM em questão é configurado da seguinte maneira:

# xe vif-param-list uuid=31c2106f-18c0-1feb-453b-5500f6d7c2b4 
uuid ( RO)                        : 31c2106f-18c0-1feb-453b-5500f6d7c2b4
                 vm-uuid ( RO): 53cf1c1e-8fce-4c75-dbc5-987ed1dd6444
           vm-name-label ( RO): wtctest1
      allowed-operations (SRO): attach; unplug
      current-operations (SRO): 
                  device ( RO): 0
                     MAC ( RO): ae:63:a8:61:f6:24
       MAC-autogenerated ( RO): false
                     MTU ( RO): 1500
      currently-attached ( RO): true
      qos_algorithm_type ( RW): 
    qos_algorithm_params (MRW): 
qos_supported_algorithms (SRO): 
            other-config (MRW): 
            network-uuid ( RO): 8f2489a4-1b0e-b906-24bf-0f1c724396da
      network-name-label ( RO): 192.168.1.0/24
             io_read_kbs ( RO): 0.331
            io_write_kbs ( RO): 0.134
            locking-mode ( RW): locked
            ipv4-allowed (SRW): 192.168.1.131
            ipv6-allowed (SRW): fe80::ac63:a8ff:fe61:f624; 2001:470:e872:1::132

Eu esperaria que, quando a VM fosse configurada para usar um IP como 192.168.1.132, que o tráfego não fosse passado, ainda assim é:

root@wtctest1:~# ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.1.132/24 brd 192.168.1.255 scope global eth0
root@wtctest1:~# ping -c1 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=1.05 ms

Se eu definir o modo de bloqueio do VIF como "desativado", todo o tráfego deixa de fluir, como esperado.

O que estou perdendo? Algo óbvio para outra pessoa, tenho certeza ...

    
por ktower 30.12.2012 / 02:52

1 resposta

1

Graças a algum trabalho útil na comunidade, temos uma correção! O problema foi descoberto e corrigido por George Skuklin. O script em questão é / opt / xensource / libexec / setup-vif-rules. Há um problema com a linha 234.

“bridge_name=" xenbr% s "% devid"

"Devid é o número do dispositivo para domU (por exemplo, vif1.15; 15 - devid) e definitivamente NÃO é um número de xenbr (xenbr0, xenbr1, etc)."

Foi criado um patch que substitui essa linha e adiciona uma função que retorna a ponte correta à qual o VIF também pertence. Eu coloquei meus hosts no modo de manutenção e apliquei o patch do diretório home do dom0 em cada host fazendo o seguinte:

cd ~

wget https://github.com/selectel/xen-api/commit/7f5608382e7d1c634f748ec78ace67c2c98ba617.patch

patch -p2 /opt/xensource/libexec/setup-vif-rules 7f5608382e7d1c634f748ec78ace67c2c98ba617.patch

Após o patch, descobri que o bloqueio no nível VIF está funcionando como pretendido em qualquer rede do meu pool.

    
por 04.01.2013 / 22:35

Tags