apache ne pas accepter les connexions entrantes provenant de l'extérieur de localhost
J'ai démarré un serveur CentOS sur rackspace et exécuté yum install httpd
'd. Puis services httpd start
. Donc, juste le barebones.
Je peux accéder à son adresse IP à distance via ssh (22) pas de problème, donc il n'y a pas de problème avec le DNS ou quoi que ce soit (je pense...), mais quand j'essaie de me connecter sur le port 80 (par l'intermédiaire d'un navigateur ou quelque chose), je reçois connexion refusée.
À partir de localhost, cependant, je peux utiliser telnet (80), ou encore le lynx sur lui-même et de me faire servir sans problème. De l'extérieur (ma maison, mon école, un café local, etc...), telnet se connecte sur 22, mais pas 80.
- Je utiliser netstat -tulpn
(<- je ne vais pas mentir, je ne comprends pas le -tulpn
partie, mais qu'est ce qu'internet m'a dit de faire...) et de voir
tcp 0 0 :::80 :::* LISTEN -
que je crois que je dois. Le httpd.conf
dit Listen 80
.
J'ai services httpd restart
'd la plupart du temps.
Honnêtement, je n'ai aucune idée de quoi faire. Il n'y a AUCUN moyen que rackspace a un pare-feu entrant sur le port 80 demandes. J'ai l'impression que je suis absent quelque chose de stupide, mais j'ai démarré un barebones serveur à deux reprises et ont fait le minimum absolu pour obtenir ce fonctionnement, je pensais avoir couché avec mon bricolage, mais ni travaillé.
Toute aide est grandement appréciée! (Et désolé pour la longue haleine post...)
Modifier
On m'a demandé de poster la sortie de iptables -L
. Il est donc ici:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
- Poste de sortie de
iptables -L
- Pourquoi êtes-vous blâmer d'Apache(Tomcat)? Il doit y avoir un pare-feu ou iptable qui est tomber à l'extérieur du paquet sur le port 80. Je ne pense pas qu'Apache va à ce niveau de filtre de paquets, de mieux laisser ce travail soit fait par des Utilitaires réseau, fourni par l'OS sous-jacent. Ou faut-il le faire?
- oups je vois! la liaison docs, tomcat donner à ces options.Mieux d'aller à travers elle à trouver son détail.
- Hors-sujet pour SI; appartient à Serveur de Faute
Vous devez vous connecter pour publier un commentaire.
En cas pas encore résolus. Votre iptables-dire:
Ce qui signifie qu'il ne laisse passer que les connexions déjà établies... c'est créé par vous, pas par des machines à distance. Ensuite, vous pouvez voir des exceptions à cela dans les règles suivantes:
Qui ne compte que pour ssh, donc vous devez ajouter une règle similaire/ligne pour http, vous pouvez le faire comme ceci:
Qui vous pouvez faire comme ceci:
(Dans ce cas, j'ai choisi d'ajouter la nouvelle règle de la quatrième ligne)
Rappelez-vous que, après l'édition du fichier, vous devez l'enregistrer comme ceci:
CentOS 7 utilise firewalld par défaut maintenant. Mais toutes les réponses se concentrent sur iptables. Je voulais donc ajouter une réponse liée à firewalld.
Depuis firewalld est un "wrapper" pour iptables, à l'aide de antonio-fornie la réponse semble fonctionner mais j'ai été incapable de "sauver" cette nouvelle règle. Je n'étais donc pas en mesure de se connecter à mon serveur apache dès qu'un redémarrage du pare-feu qui s'est passé. Heureusement, il est effectivement beaucoup plus simple de faire un équivalent de changement avec firewalld commandes. Vérifiez d'abord si firewalld est en cours d'exécution:
Si elle est en cours d'exécution la réponse sera simplement une ligne qui dit "courant".
Pour permettre à l'adresse http (port 80) temporairement les connexions sur la zone publique:
Le ci-dessus ne sera pas "sauvé", la prochaine fois la firewalld service est redémarré, il va revenir à des règles par défaut. Vous devez utiliser cette règle temporaire pour tester et assurez-vous qu'il permet de résoudre votre problème de connexion avant de passer.
Permanente pour permettre les connexions http sur la zone publique:
Si vous ne le "" permanent "" commande sans faire le "temporaire" de la commande ainsi, vous aurez besoin de redémarrer firewalld pour obtenir vos nouvelles règles par défaut (cela peut être différent pour les non CentOS systèmes):
Si cela n'a pas résolu vos problèmes de connexion, il se peut que votre interface n'est pas dans la "zone publique". Le lien suivant est une grande ressource pour l'apprentissage de firewalld. Il va plus en détail comment vérifier, de céder et de configurer les zones: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
firewall-cmd --zone=public --add-port=12345/tcp
SELinux empêche Apache (et donc tous les modules d'Apache) de faire les connexions à distance par défaut.
Essayer avec les paramètres dessous dans iptables.table de configuration
Exécutez la commande ci-dessous pour redémarrer l'iptable service
modifier le httpd.fichier de configuration pour
re-démarrer apache.
Essayez-le maintenant.
Si vous utilisez RHEL/CentOS 7 (l'OP n'a pas été, mais j'ai pensé que je devais partager la solution pour mon cas), alors vous aurez besoin d'utiliser firewalld au lieu de le service iptables mentionné dans d'autres réponses.
Puis vérifiez qu'il est en cours d'exécution avec:
Elle devrait liste de
80/tcp
sousports
De recherche pour ÉCOUTER la directive dans les fichiers de configuration d'apache (httpd.conf, apache2.conf, écouter.conf,...) et si vous voyez localhost ou 127.0.0.1, alors vous avez besoin de remplacer votre adresse ip publique.
Essayez de désactiver iptables: service iptables stop
Si cela fonctionne, activer le port TCP 80 à vos règles de pare-feu:
exécuter system-config-selinux de la racine, et activer le protocole TCP sur le port 80 (HTTP) sur votre pare-feu.
ce serait le travail:
- pour REDHAT
utilisation : cat/etc/sysconfig/iptables"
suivie par
c'est ce qui a fonctionné pour nous pour obtenir de l'apache, accessible de l'extérieur:
Jeu de apache liste à une interface spécifique et port quelque chose comme ci-dessous:
Également vérifier pour Iptables et les Enveloppeurs TCP entrées qui peuvent interférer sur l'hôte avec l'extérieur hôtes l'accès à celle-port
La Liaison Docs Pour Apache
Désactiver SELinux