Я пытаюсь понять логику зон firewalld Linux и способ их оценки.
Насколько я понимаю, зона определяется как список интерфейсов и диапазонов IP-адресов, к которым могут применяться правила разрешения / запрета. Это верно? Для зоны, которая включает интерфейс и дополнительный диапазон IP-адресов. Будут ли службы, разрешенные для этой зоны, разрешены для диапазона IP-адресов, даже если трафик будет достигать машины с IP-адресов в этом диапазоне, но через другой интерфейс?
В каком порядке оцениваются зоны? Что будет с входящим трафиком, совпадающим с двумя (возможно, противоречащими) зонами? Например, зона «Z1», которая разрешает доступ nfs к машине с заданного интерфейса, и зона «Z2», которая запрещает весь входящий трафик с IP-адреса. Что произойдет с трафиком NFS, который достигает машины через интерфейс, определенный в «Z1», но с IP-адреса, определенного в «Z2»?
Зона - это просто уровень абстракции, основанный на netfilter. На языке netfilter правила свой набор цепочек, которые дают вам ощущение конечного пользователя firewalld, что ваши пакеты находятся в какой-то «зоне». Вы всегда можете проверить точное поведение зоны:
iptables -L
Порядок, в котором совпадают пакеты firewalld:
Это в основном означает, что если конечный пункт назначения пакетов не определяется прямыми правилами, они войдут в некоторую зону. Сначала firewalld пытается маршрутизировать их на основе IP-адреса источника. Если совпадений нет, firewalld попытается направить их на основе интерфейса, в который они вошли. Если и это не удастся, они войдут в зону по умолчанию. Если у вас есть больше зон, установленных с исходным IP-адресом, и эти диапазоны IP-адресов перекрывают зону, какое исходное правило было добавлено первым, победит, потому что его правило будет сначала проверено на соответствие.
давайте иметь систему с интерфейсами:
Настройка Firewalld 1:
firewall-cmd --zone=home --add-interface=eth0
firewall-cmd --zone=internal --add-source=192.168.0.0/16
Пакеты, приходящие с адреса 192.168.0.2 через eth0, будут маршрутизироваться во внутреннюю зону.
Настройка Firewalld 2:
firewall-cmd --zone=internal --add-source=192.168.0.0/16
firewall-cmd --zone=home --add-source=192.168.0.2/32
Пакеты, приходящие из 192.168.0.2, снова будут маршрутизироваться во внутреннюю зону. Это работает так, потому что firewalld добавляет правила источника для зон маршрутизации одну за другой, чтобы мы запускали связанные команды.