Masalahnya
Kami telah membuka port baru atau menambahkan layanan di firewalld gagal tanpa kesalahan. Di server, port 80 dibuka sesuai output di bawah ini:
# 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:
Tetapi ketika mencoba terhubung dari host lain, kesalahan di bawah ini dilaporkan:
$ nc -v [SERVER_IP_ADDRESS] 80 Ncat: Version 7.50 ( https://nmap.org/ncat ) Ncat: No route to host.
Solusinya
Secara default, backend firewalld dikonfigurasikan ke nftables. Aturan langsung yang digunakan oleh firewalld dapat memengaruhi cara aturan diterapkan:
Aturan langsung bahwa paket ACCEPT tidak benar-benar menyebabkan paket segera diterima oleh sistem. Paket-paket tersebut masih tunduk pada aturan nftables firewalld. Untuk aturan langsung yaitu DROP paket, paket langsung di-drop. Jika aturan DROP atau REJECT umum dikonfigurasi sebagai aturan langsung terakhir, itu akan menyebabkan semua aturan nftables diabaikan.
Baris terakhir pada perintah berikut adalah salah satu contohnya:
# 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
Itu juga dapat diverifikasi bahwa itu dikonfigurasi dalam aturan langsung 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>
Verifikasi apakah aturan langsung benar-benar diperlukan, mungkin aturan penting sudah dikonfigurasi dalam aturan "normal". Untuk menghapus aturan langsung sepenuhnya, hapus file /etc/firewalld/direct.xml .
# mv /etc/firewalld/direct.xml /etc/firewalld/direct.xml_bck
Jika aturan langsung diperlukan, hapus aturan sumber daya terakhir, dengan REJECT, dalam aturan langsung dan konfigurasikan di nftables/firewalld.