У меня есть KVM-хост CentOS 7 с одним общедоступным IPv4, который содержит несколько гостевых ОС и действует как брандмауэр / шлюз для гостевой сети 192.168.1.0/24 / nat.
Я хочу запустить веб-сервер для одного гостя на порту 80, поэтому необходимо следующее правило firewalld:
семейство правил = "ipv4" порт пересылки порта = "80" протокол = "tcp" to-port = "80" to-addr = "192.168.1.3"
Как только это будет сделано, все гости, кроме 192.168.1.3, потеряют подключение к порту 80 мира (т.е. при выполнении yum makecache), за исключением хоста KVM, на который это не повлияет.
Вопрос в том, отменяет ли это правило политику отслеживания соединений по умолчанию firewalld, и если да, то почему это не влияет на хост?
Дополнительная информация: гости используют сеть в режиме маршрутизации KVM; соответствующая конфигурация firewalld хоста:
external (active)
target: default
icmp-block-inversion: no
interfaces: enp2s0
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" forward-port port="80" protocol="tcp" to-port="80" to-addr="192.168.1.3"
следующего не существовало раньше, но virbr0 был подхвачен NetworkManager, поэтому я добавил слепое доверие, пока не будет разработана лучшая стратегия
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces: virbr0
sources: 192.168.1.0/24
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Ваше богатое правило слишком широко; он применяется ко всему трафику для порта 80, независимо от его источника или назначения.
Чтобы устранить проблему, также укажите IP-адрес назначения в расширенном правиле. Это Глобальный IPv4-адрес, на который поступает трафик. Например:
rule family="ipv4" destination address="198.51.100.220" forward-port port="80" protocol="tcp" to-port="80" to-addr="192.168.1.3"