Masalahnya
Aplikasi mendapatkan "koneksi ditolak" dari server lain. Aplikasi dapat diakses dari localhost dan juga mendengarkan port yang diharapkan.
Solusinya
Ini mungkin kasus Firewall di server lokal yang menjatuhkan upaya koneksi masuk dari server lain. Secara default, CentOS/RHEL 7 menggunakan layanan FIREWALLD untuk mengelola aturan IPTABLES. Subsistem IPTABLES yang lebih lama masih tersedia dan dapat digunakan secara langsung jika layanan FIREWALLD dinonaktifkan.
Tentukan apakah layanan FIREWALLD sedang digunakan
Untuk melihat apakah target firewalld aktif di sistem, gunakan perintah di bawah ini:
# 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.
Seperti yang Anda lihat dari output di atas, layanan firewalld aktif dan berjalan.
Tentukan apakah layanan IPTABLES sedang digunakan
Untuk menentukan apakah layanan iptables berjalan di sistem, gunakan perintah di bawah ini.
# 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.
Seperti yang terlihat dari output di atas, target iptables dalam keadaan nonaktif.
Perhatian :memeriksa firewall menggunakan "iptables -L" tidak cukup.Sebelum CentOS/RHEL 7, memeriksa firewall sistem menggunakan perintah iptables sudah cukup untuk mengetahui apakah firewall sedang digunakan. Misalnya, memeriksa dengan perintah di bawah ini sudah cukup untuk menentukan cara mengontrol aturan 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
Dengan CentOS/RHEL 7, layanan FIREWALLD yang lebih baru atau IPTABLES-SERVICE yang lebih lama dapat mengontrol aturan firewall.