Problém
Aplikace dostává „odmítnutí připojení“ z jiných serverů. Aplikace je přístupná z localhost a také naslouchá očekávanému portu.
Řešení
Může se jednat o případ, kdy brána firewall na místním serveru ukončí pokusy o příchozí připojení z jiných serverů. CentOS/RHEL 7 standardně používá ke správě pravidel IPTABLES službu FIREWALLD. Starší subsystém IPTABLES je stále dostupný a lze jej používat přímo, pokud je služba FIREWALLD zakázána.
Určete, zda se používá služba FIREWALLD
Chcete-li zjistit, zda je v systému aktivní cíl brány firewall, použijte následující příkaz:
# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2017-12-21 15:03:59 EST; 4s ago Docs: man:firewalld(1) Main PID: 18880 (firewalld) CGroup: /system.slice/firewalld.service └─18880 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Dec 21 15:03:58 testserver systemd[1]: Starting firewalld - dynamic firewall daemon... Dec 21 15:03:59 testserver systemd[1]: Started firewalld - dynamic firewall daemon. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: ICMP type 'beyond-scope' is not supported by the kernel for ipv6. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: beyond-scope: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: ICMP type 'failed-policy' is not supported by the kernel for ipv6. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: failed-policy: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: ICMP type 'reject-route' is not supported by the kernel for ipv6. Dec 21 15:04:01 testserver firewalld[18880]: WARNING: reject-route: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time.
Jak můžete vidět z výstupu výše, služba firewalld je aktivní a běží.
Určete, zda se používá služba IPTABLES
Chcete-li zjistit, zda je v systému spuštěna služba iptables, použijte níže uvedený příkaz.
# systemctl status iptables.service * iptables.service - IPv4 firewall with iptables Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled) Active: active (exited) since Thu 2017-12-21 17:51:12 UTC; 26min ago Process: 440 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS) Main PID: 440 (code=exited, status=0/SUCCESS) CGroup: /system.slice/iptables.service Dec 21 17:51:12 testserver systemd[1]: Starting IPv4 firewall with iptables... Dec 21 17:51:12 testserver iptables.init[440]: iptables: Applying firewall rules: [ OK ] Dec 21 17:51:12 testserver systemd[1]: Started IPv4 firewall with iptables.
Jak je vidět z výše uvedeného výstupu, cíl iptables je ve vypnutém stavu.
Pozor :kontrola firewallu pomocí „iptables -L“ nestačí.Před CentOS/RHEL 7 stačila kontrola systémové brány firewall pomocí příkazu iptables, aby se zjistilo, zda byla brána firewall používána. Například kontrola pomocí níže uvedeného příkazu stačila k určení, jak ovládat pravidla brány firewall:
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- anywhere anywhere udp dpt:domain ACCEPT tcp -- anywhere anywhere tcp dpt:domain ... INPUT_direct all -- anywhere anywhere INPUT_ZONES_SOURCE all -- anywhere anywhere INPUT_ZONES all -- anywhere anywhere DROP all -- anywhere anywhere ctstate INVALID REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
S CentOS/RHEL 7 by mohla pravidla brány firewall řídit buď novější služba FIREWALLD nebo starší služba IPTABLES-SERVICE.