Как добавить новую зону в firewalld, не блокируя `port=80/tcp` в `zone=public` в Ubuntu 20.04
Я не слишком знаком с firewalld, но решил попробовать его на Ubuntu20.04. Проблема, с которой я столкнулся, заключается в том, что она блокируется каждый раз, когда я пытаюсь добавить новую зону.
Итак, мой вопрос: как добавить новую зону без ее блокировки?
Я описываю то, что я сделал ниже.
( редактировать - в конце этих вопросов я объясняю, что эти же действия успешны в Ubuntu 18.04 и Centos 8, но не работают в Ubuntu 20.04)
Сначала я устанавливаю чистый экземпляр Ubuntu 20.04 на VPS. Затем я запускаю эти команды от имени пользователя root из терминала:
# make sure ufw is not used
systemctl stop ufw && systemctl disable ufw;
# install a webserver so I can test port 80 will give me a web page
apt-get install -y apache2;
# install firewalld and configure
apt-get install -y firewalld;
systemctl start firewalld;
firewall-cmd --permanent --zone=public --add-port=80/tcp;
firewall-cmd --reload;
Теперь, когда я захожу на IP-адрес своего сервера с помощью веб-браузера, я вижу веб-страницу Apache по умолчанию.
Далее, вот что становится необычным. Я перечислю свои эксперименты в том порядке, в котором я их проводил:
Эксперимент 1 – нет активных зон
Я запускаю командуfirewall-cmd --get-active-zones
.
Результат: терминал ничего не показывает.
Эксперимент 2. Добавьте Zone=John без правил.
Я запускаю эти три команды:
firewall-cmd --new-zone=john --permanent;
firewall-cmd --reload;
firewall-cmd --get-active-zones;
Результат:
Веб-страница отображается правильно.
Но мой терминал по-прежнему не печатает никаких активных зон.
Эксперимент 3. Добавьте правила в зону=john.
Я запускаю эти три команды:
# replace 1.1.1.1 with my home's ip address
firewall-cmd --zone=john --add-source=1.1.1.1/24 --permanent;
firewall-cmd --reload;
firewall-cmd --get-active-zones;
Результат:
Порт 80 блокируется, время ожидания веб-страницы истекает и она недоступна.
Мой терминал печатает:
john
sources: 1.1.1.1/24
Эксперимент 4 — удалить зону = Джон
Я запускаю эти команды:
firewall-cmd --delete-zone=john --permanent;
firewall-cmd --reload;
Результат:
Моя веб-страница может перезагрузиться снова.
Эксперимент 5 — добавление интерфейса=eth0 в зону=public
Я попытался активировать свою публичную зону с помощью этой команды:
firewall-cmd --zone=public --permanent --add-interface=eth0;
firewall-cmd
firewall-cmd --reload;
firewall-cmd --get-active-zones;
Результат:
Моя веб-страница все еще может загружаться.
Мой терминал показывает:
public
interfaces: eth0
Эксперимент 6 — повторное добавление Zone=john
Я запускаю эти команды:
firewall-cmd --new-zone=john --permanent;
firewall-cmd --reload;
firewall-cmd --zone=john --add-source=1.1.1.1/24 --permanent;
firewall-cmd --reload;
firewall-cmd --get-active-zones;
Результат:
Порт 80 блокируется, время ожидания веб-страницы истекает и она недоступна.
Мой терминал печатает:
john
sources: 1.1.1.1/24
public
interfaces: eth0
Конечный результат
Итак, после всех этих экспериментов,firewall-cmd --list-all-zones
покажет это:
block
target: %%REJECT%%
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
drop
target: DROP
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
internal
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
john (active)
target: default
icmp-block-inversion: no
interfaces:
sources: 1.1.1.1/24
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
trusted
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
work
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Я пересобрал эту машину VPS, используя Ubuntu 18.04, и запустил тот же сценарий, что и выше. Результат – успех . Я могу добавить новую зону без блокировки.
Я пересобрал эту машину VPS, используя CentOS 8. Затем я взял приведенный выше скрипт и заменилapt-get
сyum
илиdnf
. Результат – успех . Я могу добавить новую зону без блокировки.
Я снова пересобрал эту машину VPS с помощью Ubuntu 20.04 и запустил тот же сценарий. Результат – провал . Новая зона блокируетсяport=80/tcp
наzone=public
.
Я не понимаю, почему в Ubuntu 20.04 ничего не получается, а в Ubuntu 18.04 и CentOS 8 все получается.