GNU/Linux >> Tutoriels Linux >  >> Linux

apache n'accepte pas les connexions entrantes de l'extérieur de localhost

Au cas où pas encore résolu. Vos iptables disent :

État CONNEXE, ÉTABLI

Ce qui signifie qu'il ne laisse passer que les connexions déjà établies... qui sont établies par vous, pas par des machines distantes. Ensuite, vous pouvez voir les exceptions à cela dans les règles suivantes :

state NEW tcp dpt:ssh

Ce qui ne compte que pour ssh, vous devez donc ajouter une règle/ligne similaire pour http, ce que vous pouvez faire comme ceci :

state NEW tcp dpt:80

Ce que vous pouvez faire comme ceci :

sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

(Dans ce cas, je choisis d'ajouter la nouvelle règle à la quatrième ligne)

N'oubliez pas qu'après avoir modifié le fichier, vous devez l'enregistrer comme ceci :

sudo /etc/init.d/iptables save

CentOS 7 utilise désormais un pare-feu par défaut. Mais toutes les réponses se concentrent sur iptables. Je voulais donc ajouter une réponse liée à firewalld.

Étant donné que firewalld est un "wrapper" pour iptables, l'utilisation de la réponse d'antonio-fornie semble toujours fonctionner, mais je n'ai pas pu "enregistrer" cette nouvelle règle. Je n'ai donc pas pu me connecter à mon serveur apache dès qu'un redémarrage du pare-feu s'est produit. Heureusement, il est en fait beaucoup plus simple d'effectuer une modification équivalente avec les commandes firewalld. Vérifiez d'abord si firewalld est en cours d'exécution :

firewall-cmd --state

S'il est en cours d'exécution, la réponse sera simplement une ligne indiquant "en cours d'exécution".

Pour autoriser temporairement les connexions http (port 80) sur la zone publique :

sudo firewall-cmd --zone=public --add-service=http

Ce qui précède ne sera pas "enregistré", la prochaine fois que le service firewalld sera redémarré, il reviendra aux règles par défaut. Vous devez utiliser cette règle temporaire pour tester et vous assurer qu'elle résout votre problème de connexion avant de continuer.

Pour autoriser en permanence les connexions http sur la zone publique :

sudo firewall-cmd --zone=public --permanent --add-service=http

Si vous exécutez la commande "permanent" sans exécuter également la commande "temporaire", vous devrez redémarrer firewalld pour obtenir vos nouvelles règles par défaut (cela peut être différent pour les systèmes non CentOS) :

 sudo systemctl restart firewalld.service

Si cela n'a pas résolu vos problèmes de connexion, c'est peut-être parce que votre interface n'est pas dans la "zone publique". Le lien suivant est une excellente ressource pour en savoir plus sur firewalld. Il explique en détail comment vérifier, attribuer et configurer des zones :https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7


SELinux empêche Apache (et donc tous les modules Apache) d'établir des connexions à distance par défaut.

# setsebool -P httpd_can_network_connect=1

Linux
  1. Comment ouvrir les ports 80 et 443 dans FirewallD

  2. Comment configurer des vHosts dans Apache

  3. Devenir root depuis l'intérieur de Vim ?

  4. Installer Apache sur Debian 10

  5. Mesurer le trafic à partir du journal d'accès apache

Installer Apache 2 à partir de la source sur Linux

visudo :commande introuvable

sudoedit :commande introuvable

sudo :commande introuvable

commande introuvable lors de l'utilisation de sudo

'rm' introuvable dans PATH ou non exécutable