Libvirt Ağı Etkisiz hale getir

Libvirt Ağı Etkisiz hale getir

Çoğu OpenStack kurulumu hypervisor ile iletişime geçmek için libvirt araç takımını kullanır. Özellikle, OpenStack Hesaplama, sanal makine sunucuları önyükleme ve sonlandırma gibi görevler için libvirt kullanır. OpenStack Hesaplama yeni bir sunucuyu başlattığında, libvirt, OpenStack’a sunucu ile ilişkili VIF’yi sağlar ve OpenStack Hesaplama, VIF’yi OpenStack Ağ tarafından sağlanan bir sanal aygıta takar. Libvirt araç seti kendisi OpenStack dağıtımlarında herhangi bir ağ işlevselliği sağlamaz.

Bununla birlikte, libvirt yönettiği sanal makinelere ağ hizmetleri sağlayabilir. Özellikle, libvirt, OpenStack’in basitleştirilmiş, tek düğümlü sürümüne benzer bir ağ oluşturma işlevselliği sağlamak üzere yapılandırılabilir. Kullanıcılar libvirt’i, OpenStack Networking ağlarına benzer, tek bir düğümle sınırlı olan katman 2 ağlar oluşturmak için kullanabilirler.

libvirt ağ uygulaması

Varsayılan olarak, libvirt’in ağ oluşturma işlevi etkindir ve sistem önyüklenirken libvirt bir ağ oluşturur. Bu ağın uygulanması için libvirt, OpenStack Ağ’in yaptığı teknolojilerin bir kısmından yararlanır. Özellikle, libvirt şunları kullanır:

  • Bir katman 2 ağı oluşturmak için Linux köprüleme
  • DHCP kullanarak sanal makinelere IP adresi sağlamak için dnsmasq
  • Sunucuların halka açık internete bağlanabilmesi ve sanal makinelerin dnsmasq ile DHCP ile iletişim kurmasına izin verilmesini sağlamak için SNAT uygulamak için iptables

Varsayılan olarak, libvirt default adlı bir ağ oluşturur. Bu ağın ayrıntıları dağıtıma göre değişebilir; Ubuntu’da bu ağ şunları içerir:

  • Bir 192.0.2.1/24 IP adresli virbr0 isimli Linux köprüsü
  • virbr0 arayüzünü dinleyen ve 192.0.2.2-192.0.2.254 aralığındaki IP adreslerini veren bir dnsmasq işlemi.
  • Bir grup iptables kuralı

Libvirt sanal bir makineyi önyüklendiğinde, açıkça belirtilmediği sürece makinenin VIF’sini virbr0 köprüsüne yerleştirir.

Ubuntu’da, libvirt’in oluşturduğu iptales kural seti aşağıdaki kuralları içerir:

*nat
-A POSTROUTING -s 192.0.2.0/24 -d 224.0.0.0/24 -j RETURN
-A POSTROUTING -s 192.0.2.0/24 -d 255.255.255.255/32 -j RETURN
-A POSTROUTING -s 192.0.2.0/24 ! -d 192.0.2.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.0.2.0/24 ! -d 192.0.2.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.0.2.0/24 ! -d 192.0.2.0/24 -j MASQUERADE
*mangle
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
*filter
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.0.2.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.0.2.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT

Aşağıda, ps: komutunun çıktısında göründüğü gibi libvirt’in yönettiği dnsmasq işlemi gösterilmektedir:

2881 ?        S      0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf

Nasıl libvirt ağları devre dışı bırakılır

OpenStack, libvirt’in ağını kullanmasa da, bu ağ OpenStack’ın davranışını etkilemeyecektir ve güvenle açık olarak bırakılabilir. Bununla birlikte, libvirt’in ağları OpenStack ağ sorunlarını gidermekte sıkıntı olabilir. Libvirt ek bir köprü, dnsmasq süreci ve iptables kural seti oluşturduğundan, bu ağ sorunlarını giderme ile uğraşan bir operatoru rahatsız edebilir. Sanal makineleri libvirt’i doğrudan başlatmak zorunda değilseniz, libvirt’in ağını güvenle devre dışı bırakabilirsiniz.

Tanımlanmış libvirt ağlarını ve durumlarını görüntülemek için:

# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes

default adlı libvirt ağını devre dışı bırakmak için:

# virsh net-destroy default

Ağın devre dışı bırakılması virbr0 köprüsünü kaldıracak, dnsmasq sürecini sonlandıracak ve iptables kurallarını kaldıracaktır.

Ağın önyükleme sırasında otomatik olarak başlatılmasını önlemek için:

# virsh net-autostart --network default --disable

Devre dışı bırakıldıktan sonra ağı etkinleştirmek için:

# virsh net-start default
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.