Это мой текущий сценарий:
У меня в облаке проксмокс сервер. Я установил 2 виртуальные машины с разными IP-адресами (не в той же подсети, что и основной сервер proxmox - см. ЭТОТ чтобы понять почему).
На самой машине proxmox я установил список правил iptables, которые отлично работают.
# Allow localhostinterface
/sbin/iptables -A INPUT -i lo -j ACCEPT
#icmp
/sbin/iptables -A INPUT -p ICMP -j ACCEPT
#home network
/sbin/iptables -A INPUT -s xx.xx.xx.xx -j ACCEPT
# Allow already established connections
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Set default policies
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT
#LOG IPTABLES
/sbin/iptables -N LOGGING
/sbin/iptables -A INPUT -j LOGGING
/sbin/iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
/sbin/iptables -A LOGGING -j DROP
Однако по какой-то причине эти правила не применяются к виртуальным машинам, которые находятся вне системы безопасности вообще. Есть ли способ применить те же правила, действующие на сервере proxmox, к vms?
Сегодня утром у меня была точно такая же проблема, потом я нашел и ваш вопрос.
В соответствии с эта документация, мы можем установить правила для всей виртуальной машины только с помощью брандмауэра PVE, создав группу безопасности с глобальными правилами для всех машин, а затем добавив ее к каждой виртуальной машине на узле. Таким образом, после изменения группы безопасности изменения коснутся всех виртуальных машин, которые ее используют.
Мне это немного неудобно, потому что я думаю, что любые правила, определенные в /etc/pve/nodes/<nodename>/host.fw
должен также повлиять на его виртуальные машины, так как уже существует перекрывающаяся зона под названием «Datacenter» (или «кластер», поскольку правила в /etc/pve/firewall/cluster.fw
появляются именно в разделе Datacenter графического интерфейса), и я также подозреваю, что это архитектурная проблема, которая будет исправлена / изменена в ближайшем будущем.
В Документация по брандмауэру говорит:
Включение брандмауэра для виртуальных машин и контейнеров
Каждое виртуальное сетевое устройство имеет собственный флаг включения брандмауэра. Таким образом, вы можете выборочно включить брандмауэр для каждого интерфейса. Это требуется в дополнение к общей опции включения брандмауэра.
Брандмауэр требует специальной настройки сетевого устройства, поэтому вам необходимо перезапустить виртуальную машину / контейнер после включения брандмауэра на сетевом интерфейсе.
Итак, если вы уже сделали следующее:
… Вам по-прежнему необходимо выполнить следующие действия:
Network
config откройте Edit
всплывающее окно для устройства (например, net0
) и включите Firewall
флажок(Решение найдено Вот.)