Dalam kasus belum terpecahkan. iptables Anda mengatakan:
negara bagian TERKAIT, DIDIRIKAN
Yang berarti hanya mengizinkan koneksi yang sudah dibuat ... yang dibuat oleh Anda, bukan oleh mesin jarak jauh. Kemudian Anda dapat melihat pengecualian untuk ini di aturan berikutnya:
state NEW tcp dpt:ssh
Yang dihitung hanya untuk ssh, jadi Anda harus menambahkan aturan/baris serupa untuk http, yang dapat Anda lakukan seperti ini:
state NEW tcp dpt:80
Yang dapat Anda lakukan seperti ini:
sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
(Dalam hal ini saya memilih untuk menambahkan aturan baru di baris keempat)
Ingatlah bahwa setelah mengedit file, Anda harus menyimpannya seperti ini:
sudo /etc/init.d/iptables save
CentOS 7 menggunakan firewalld secara default sekarang. Tetapi semua jawaban fokus pada iptables. Jadi saya ingin menambahkan jawaban terkait firewalld.
Karena firewalld adalah "pembungkus" untuk iptables, menggunakan jawaban antonio-fornie sepertinya masih berfungsi tetapi saya tidak dapat "menyimpan" aturan baru itu. Jadi saya tidak dapat terhubung ke server apache saya segera setelah restart firewall terjadi. Untungnya sebenarnya jauh lebih mudah untuk membuat perubahan yang setara dengan perintah firewalld. Pertama periksa apakah firewalld sedang berjalan:
firewall-cmd --state
Jika sedang berjalan, respons hanya akan menjadi satu baris yang mengatakan "berjalan".
Untuk mengizinkan koneksi http (port 80) sementara di zona publik:
sudo firewall-cmd --zone=public --add-service=http
Di atas tidak akan "disimpan", lain kali layanan firewalld di-restart akan kembali ke aturan default. Anda harus menggunakan aturan sementara ini untuk menguji dan memastikannya memecahkan masalah koneksi Anda sebelum melanjutkan.
Untuk mengizinkan koneksi http secara permanen di zona publik:
sudo firewall-cmd --zone=public --permanent --add-service=http
Jika Anda melakukan perintah "permanen" tanpa melakukan perintah "sementara" juga, Anda harus memulai ulang firewalld untuk mendapatkan aturan default baru Anda (ini mungkin berbeda untuk sistem non CentOS):
sudo systemctl restart firewalld.service
Jika ini belum menyelesaikan masalah koneksi Anda, mungkin karena antarmuka Anda tidak berada di "zona publik". Tautan berikut adalah sumber yang bagus untuk mempelajari tentang firewalld. Ini membahas secara rinci cara memeriksa, menetapkan, dan mengonfigurasi zona:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
SELinux mencegah Apache (dan karenanya semua modul Apache) membuat koneksi jarak jauh secara default.
# setsebool -P httpd_can_network_connect=1