web-dev-qa-db-fra.com

Connexion au port 80 refusée

je ne peux pas me connecter au port 80 sur mon serveur web. mes iptables sont dans l'état par défaut:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

quand je démarre différents serveurs (nginx, nodejs ...), je peux leur faire écouter le port 80, mais en essayant d'accéder, je reçois toujours "connexion refusée". L'écoute de n'importe quel autre port (81 8080, quel que soit) fonctionne parfaitement. Seul le port 80 est en quelque sorte bloqué. Accéder au port 80 via localhost fonctionne, donc à des fins de test, j’ai même basculé du pare-feu externe, toujours pas de chance. Que puis-je faire pour savoir qui bloque ce port 80?

comme demandé la sortie de netstat -tlpn (lors de l'exécution de nginx sur le port 80):

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      710/vsftpd      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1179/sshd       
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1661/master     
tcp        0      0 0.0.0.0:5984            0.0.0.0:*               LISTEN      980/beam.smp    
tcp        0      0 87.106.64.11:3306       0.0.0.0:*               LISTEN      1346/mysqld     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3274/nginx: master 
tcp6       0      0 :::22                   :::*                    LISTEN      1179/sshd       
tcp6       0      0 :::25                   :::*                    LISTEN      1661/master  
4
Holger Will

j'ai fait un tcptraceroute 87.106.64.11 80 et son définitivement mon serveur qui bloque le port. À un moment donné, j'ai eu ceci:

s18132051.onlinehome-server.info (87.106.64.11) [closed]

Donc i réinitialiser mes tables d'IP , et c'est ce qui s'est passé.

Donc soit là où une règle cachée dans la table, ou iptable -L ne m'a pas donné toutes les règles. Je vais marquer ceci comme la réponse car cela résout le problème.
J'aimerais toujours savoir pourquoi je n'ai pas de règles de blocage lorsque je fais iptables -L

6
Holger Will

J'ai rencontré le même problème, mais sous Debian 8.4 (Jessie). Comme ci-dessus, la solution consistait en un script de vidage IPTables, comme indiqué à la section http://insanelabs.net/linux/linux-reset-iptables-firewall-rules/ . Bien qu'iptables n'ait signalé aucune règle, il devait y avoir des règles "cachées", ou sinon un bogue dans iptables lui-même. Je rapporte ce bogue aux responsables de Debian.

Au cas où le site lié disparaîtrait, voici le texte intégral du script en question, reproduit ici par souci de commodité.

#!/bin/sh
echo "Flushing iptables rules..."
sleep 1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
2
Jessica

Vous n'avez pas énuméré toutes vos règles. J'ai trouvé un bon moyen d'obtenir des tables de netfilter actives:

pour bla dans Sudo /bin/cat /proc/net/ip_tables_names; faire Sudo/sbin/iptables -t $ blah -L -vn --line-numbers | sed "s/^/$ blah: /"; fait | moins -RXF

Une autre option consiste à exécuter:

/ sbin/iptables-save

Si vous avez la patience, vous pouvez parcourir chaque règle une à la fois et modifier les cibles DENY en ACCEPTER pour voir laquelle corrige le problème.

1
Lee