Выполните инструкцию пошаговая инструкция настройки Libvirt на Ubuntu 18.04 с поддержкой LXC контейнеров
Настройки сети сохраняются здесь: /etc/libvirt/qemu/networks
Создадим сеть по умолчанию. Отредактируем уже существующую сеть.
_x000D_lxc net-edit --network defaultОбратите внимание на UUID. У вас он может быть другим. Вставьте следующий код в открывшемся редакторе:
_x000D_<network>_x000D_ <name>default</name>_x000D_ <forward mode="nat" />_x000D_ <bridge name='lxcnet' stp='on' delay='0'/>_x000D_ <mac address='52:54:00:35:a2:59'/>_x000D_ <dns>_x000D_ <forwarder addr="1.1.1.1"/>_x000D_ <forwarder addr="8.8.8.8"/>_x000D_ </dns>_x000D_ <ip address="172.30.0.1" netmask="255.255.255.0">_x000D_ <dhcp>_x000D_ <range start="172.30.0.100" end="172.30.0.254"/>_x000D_ <host name="test" ip="172.30.0.5"/>_x000D_ </dhcp>_x000D_ </ip>_x000D_</network>В данном файле мы задаем сеть 172.30.0.0/24. Сеть будет организована на мосту(bridge) с названием lxcnet . IP адреса будут раздаваться автоматически по DHCP от 172.30.0.100 до 172.30.0.254. Автоматически будет прописан DNS сервера 1.1.1.1 и 8.8.8.8. Для хоста «test» будет автоматически выдаваться IP адрес 172.30.0.5.
IP адрес постоянно может выдаваться не всегда. Дело в том, что, если хост подключается первый раз, то dnsmasq запоминает MAC адрес и имя хоста машине, и выдает ему IP. Если явно прописан хост, то выдает статичный IP. НО! Если будет подключаться второй хост с таким же именем, но другим MAC адресом, то dnsmasq выдаст другой IP адрес. Даже если машина первая была уже выключена. Сервер dnsmasq запоминает IP адреса на 24 часа. Если вы хотите использовать статические IP адреса для контейнера, то их можно прописать в разделе xml interface в самом контейнере.
После того, как мы настроили сеть, добавляем ее в автозапуск.
_x000D_lxc net-autostart --network defaultПерезапускаем сеть:
_x000D_lxc net-destroy default _x000D_lxc net-start defaultПосле каждого редактирования настроек сети ее надо перезапускать.
Добавление хостов на лету
Иногда нужно добавить новые статические адреса, не перезагружая сеть. Для этого существуют следующая комманда:
_x000D_lxc net-update default add-last ip-dhcp-host "<host name='bob' ip='172.30.0.25' />" --live --configКак узнать IP адреса хостов в libvirt?
Для того, чтобы узнать IP, нужно выполнить комманду:
_x000D_lxc net-dhcp-leases defaultНастройка iptables
Установка iptables
_x000D_aptitude install iptables-persistent_x000D_Включаем NAT
_x000D_echo 1 > /proc/sys/net/ipv4/ip_forward_x000D_echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/10-ip-forward.conf_x000D_Для автоматической настройки создадим скрипты iptables. Создайте папку
_x000D_mkdir /etc/iptablesСоздайте файл:
nano /etc/iptables/rules.v4
_x000D_*filter_x000D_:INPUT ACCEPT [19:913]_x000D_:FORWARD ACCEPT [0:0]_x000D_:OUTPUT ACCEPT [39:3584]_x000D_:ALLOW-INPUT - [0:0]_x000D_:f2b-sshd - [0:0]_x000D__x000D_-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT_x000D_-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT_x000D_-A INPUT -p icmp -j ACCEPT_x000D_-A INPUT -i lo -j ACCEPT_x000D__x000D_# Fail2Ban SSH_x000D_#-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd_x000D__x000D_# Разрешаем входящие соединения ssh_x000D_-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT_x000D_-A INPUT -p tcp -m state --state NEW -m tcp --dport 22050 -j ACCEPT_x000D__x000D_# Перейти к цепочке ALLOW-INPUT_x000D_-A INPUT -j ALLOW-INPUT_x000D__x000D_# Запрещаем остальные входящие соединения_x000D_-A INPUT -j REJECT_x000D_-A FORWARD -j REJECT_x000D__x000D_# Раскомментируйте, если нужно запретить все исходящие соединения _x000D_#-A OUTPUT -j REJECT_x000D__x000D_# Разрешить http_x000D_-A ALLOW-INPUT -p tcp -m tcp --dport 80 -j ACCEPT_x000D_-A ALLOW-INPUT -p tcp -m tcp --dport 443 -j ACCEPT_x000D__x000D_# Разрешаем FTP_x000D_-A ALLOW-INPUT -p tcp -m tcp --dport 21 -j ACCEPT_x000D_-A ALLOW-INPUT -p tcp -m tcp --dport 30000:50000 -j ACCEPT_x000D__x000D_# Разрешаем входящие соединения http_x000D_-A ALLOW-INPUT -p tcp -m tcp --dport 80 -j ACCEPT_x000D_-A ALLOW-INPUT -p tcp -m tcp --dport 443 -j ACCEPT_x000D__x000D_-A ALLOW-INPUT -j RETURN_x000D__x000D_# Fail2ban_x000D_-A f2b-sshd -j RETURN_x000D__x000D__x000D_*nat_x000D_:PREROUTING ACCEPT [0:0]_x000D_:INPUT ACCEPT [0:0]_x000D_:OUTPUT ACCEPT [0:0]_x000D_:POSTROUTING ACCEPT [0:0]_x000D__x000D_# Проброс HTTP на 172.30.0.1_x000D_-A PREROUTING -i ens3 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.30.0.10:80_x000D_-A PREROUTING -i ens3 -p tcp -m tcp --dport 443 -j DNAT --to-destination 172.30.0.10:443_x000D__x000D_# Проброс FTP на 172.30.0.10_x000D_-A PREROUTING -i ens3 -p tcp -m tcp --dport 21 -j DNAT --to-destination 172.30.0.10:21_x000D_-A PREROUTING -i ens3 -p tcp -m tcp --dport 30000:50000 -j DNAT --to-destination 172.30.0.10:30000-50000_x000D__x000D_COMMITСкопируйте этот же конфиг в /etc/iptables/rules.v6
_x000D_cp /etc/iptables/rules.v4 /etc/iptables/rules.v6Используемые источники
- https://wiki.libvirt.org/page/Networking — Официальная документация
- https://gist.github.com/tachang/24b72d613faa19f76cfa — Скрипт перезапуска сети