Problém
Otevřeli jsme nový port nebo přidali službu v selhání brány firewall bez chyby. Na serveru je port 80 otevřen podle níže uvedeného výstupu:
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens3 sources: services: cockpit dhcpv6-client ssh ports: 80/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Ale při pokusu o připojení z jiného hostitele je hlášena níže uvedená chyba:
$ nc -v [SERVER_IP_ADDRESS] 80 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: No route to host.
Řešení
Ve výchozím nastavení je backend brány firewall nakonfigurován na nftables. Přímá pravidla používaná firewallem mohou ovlivnit způsob použití pravidel:
Přímá pravidla, že přijímá pakety, ve skutečnosti nezpůsobí, že pakety budou systémem okamžitě akceptovány. Tyto pakety stále podléhají sadě pravidel firewallu nftables. Pro přímá pravidla, že DROP pakety, jsou pakety okamžitě zahozeny. Pokud je obecné pravidlo DROP nebo REJECT nakonfigurováno jako poslední z přímých pravidel, způsobí to, že všechna pravidla nftables budou ignorována.
Poslední řádek v následujícím příkazu je jeden příklad:
# iptables -vnxL INPUT Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 2133 309423 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 27 1620 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 10 524 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 93 4740 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Lze také ověřit, že je nakonfigurován v přímých pravidlech brány firewall:
# grep -B4 INPUT /etc/firewalld/direct.xml <?xml version="1.0" encoding="utf-8"?> <direct> <passthrough ipv="ipv4">-N BareMetalInstanceServices</passthrough> <passthrough ipv="ipv4">-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT</passthrough> <passthrough ipv="ipv4">-A INPUT -p icmp -j ACCEPT</passthrough> <passthrough ipv="ipv4">-A INPUT -i lo -j ACCEPT</passthrough> <passthrough ipv="ipv4">-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT</passthrough> <passthrough ipv="ipv4">-A INPUT -j REJECT --reject-with icmp-host-prohibited</passthrough>
Ověřte, zda jsou přímá pravidla skutečně nezbytná, pravděpodobně jsou důležitá pravidla již nakonfigurována v „normálních“ pravidlech. Chcete-li přímá pravidla úplně odstranit, odeberte soubor /etc/firewalld/direct.xml .
# mv /etc/firewalld/direct.xml /etc/firewalld/direct.xml_bck
Pokud jsou potřeba přímá pravidla, odstraňte poslední pravidlo prostředku pomocí REJECT v přímých pravidlech a nakonfigurujte je v nftables/firewalld.