Impossible de contacter un autre domaine sur le même réseau

Le problème exposé dans ce sujet a été résolu.

Bonjour J'ai posté ma question ici, j'avoue que Nginx touche au web et je savais pas trop où placer cette demande…

J'ai un soucis, je tourne sur docker, j'ai un container gitlab et un container redmine. Je peux accéder aux deux sites en dehors du réseau (via leurs domaines), mais lorsque j'essaye de faire une requête à un des domaines à l'intérieur du réseau, je reçois l'erreur : curl: (7) Failed to connect to redmine.dryusdan.fr port 443: No route to host
Pourtant je peux faire une requête curl à Google où même sur le serveur lui même, mais pas à partir d'un des container. Cependant, le ping fonctionne.
Avez vous déjà eu une erreur dans le genre ? Et avez vous trouvé un moyen autre que charger le fichier hosts ?

Merci d'avance
Dryusdan :)

Les ports sont ouverts. Enfin, la requête qui vise un https sort par le port 80 du container (normalement ça fonctionne non ? ^^ ), sort par Nginx (normalement, le tcpdump m'affiche bien une sortie) et doit rentrer par le port 443 de Nginx qui redirige vers le port 3000 de redmine en interne (sur une ip interne aussi) Et sur Nginx en reverse proxy le 80 et 443 sont ouvert Les Dockerfiles :
- Pour gitlab : https://hub.docker.com/r/gitlab/gitlab-ce/~/dockerfile/
- Pour Nginx : https://github.com/Wonderfall/dockerfiles/blob/master/nginx/Dockerfile
- Pour Redmine : https://github.com/docker-library/redmine/blob/e75fd00870dcd47a848532abf999f7ec13bb0262/3.3/Dockerfile

Le résultat du TCPdump :

1
2
3
4
5
[root@sd-103781 gitlab]# tcpdump -i br-c58735571d27 port https
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-c58735571d27, link-type EN10MB (Ethernet), capture size 65535 bytes
11:10:36.807256 IP 172.20.200.2.58140 > 163-172-58-7.rev.poneytelecom.eu.https: Flags [S], seq 2269637847, win 29200, options [mss 1460,sackOK,TS val 1030938698 ecr 0,nop,wscale 7], length 0
11:10:37.809016 IP 172.20.200.2.58140 > 163-172-58-7.rev.poneytelecom.eu.https: Flags [S], seq 2269637847, win 29200, options [mss 1460,sackOK,TS val 1030939700 ecr 0,nop,wscale 7], length 0

Merci :)

Hormis des IPtables, non je check les règles

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
INPUT_direct  all  --  anywhere             anywhere
INPUT_ZONES_SOURCE  all  --  anywhere             anywhere
INPUT_ZONES  all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DOCKER-ISOLATION  all  --  anywhere             anywhere
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere
FORWARD_direct  all  --  anywhere             anywhere
FORWARD_IN_ZONES_SOURCE  all  --  anywhere             anywhere
FORWARD_IN_ZONES  all  --  anywhere             anywhere
FORWARD_OUT_ZONES_SOURCE  all  --  anywhere             anywhere
FORWARD_OUT_ZONES  all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
OUTPUT_direct  all  --  anywhere             anywhere

Chain DOCKER (4 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             172.20.200.1         tcp dpt:sqlserver
ACCEPT     tcp  --  anywhere             172.20.200.1         tcp dpt:irdmi
ACCEPT     tcp  --  anywhere             172.17.0.3           tcp dpt:ssh
ACCEPT     tcp  --  anywhere             172.20.200.17        tcp dpt:etlservicemgr
ACCEPT     tcp  --  anywhere             172.20.200.2         tcp dpt:ssh
ACCEPT     tcp  --  anywhere             172.20.200.8         tcp dpt:49184
ACCEPT     udp  --  anywhere             172.20.200.8         udp dpt:49184

Chain DOCKER-ISOLATION (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain FORWARD_IN_ZONES (1 references)
target     prot opt source               destination
FWDI_public  all  --  anywhere             anywhere            [goto]
FWDI_public  all  --  anywhere             anywhere            [goto]

Chain FORWARD_IN_ZONES_SOURCE (1 references)
target     prot opt source               destination

Chain FORWARD_OUT_ZONES (1 references)
target     prot opt source               destination
FWDO_public  all  --  anywhere             anywhere            [goto]
FWDO_public  all  --  anywhere             anywhere            [goto]

Chain FORWARD_OUT_ZONES_SOURCE (1 references)
target     prot opt source               destination

Chain FORWARD_direct (1 references)
target     prot opt source               destination

Chain FWDI_public (2 references)
target     prot opt source               destination
FWDI_public_log  all  --  anywhere             anywhere
FWDI_public_deny  all  --  anywhere             anywhere
FWDI_public_allow  all  --  anywhere             anywhere

Chain FWDI_public_allow (1 references)
target     prot opt source               destination

Chain FWDI_public_deny (1 references)
target     prot opt source               destination

Chain FWDI_public_log (1 references)
target     prot opt source               destination

Chain FWDO_public (2 references)
target     prot opt source               destination
FWDO_public_log  all  --  anywhere             anywhere
FWDO_public_deny  all  --  anywhere             anywhere
FWDO_public_allow  all  --  anywhere             anywhere

Chain FWDO_public_allow (1 references)
target     prot opt source               destination

Chain FWDO_public_deny (1 references)
target     prot opt source               destination

Chain FWDO_public_log (1 references)
target     prot opt source               destination

Chain INPUT_ZONES (1 references)
target     prot opt source               destination
IN_public  all  --  anywhere             anywhere            [goto]
IN_public  all  --  anywhere             anywhere            [goto]

Chain INPUT_ZONES_SOURCE (1 references)
target     prot opt source               destination

Chain INPUT_direct (1 references)
target     prot opt source               destination

Chain IN_public (2 references)
target     prot opt source               destination
IN_public_log  all  --  anywhere             anywhere
IN_public_deny  all  --  anywhere             anywhere
IN_public_allow  all  --  anywhere             anywhere

Chain IN_public_allow (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW

Chain IN_public_deny (1 references)
target     prot opt source               destination

Chain IN_public_log (1 references)
target     prot opt source               destination

Chain OUTPUT_direct (1 references)
target     prot opt source               destination

(je me souviens pas du tout avoir écrit ces règles… J'ai l'impression que docker a mis sa propre sauce ^^

+0 -0

J’ai trouvé la réponse et cela ne vennait pas de Docker mais de CentOS (j’avoue que je n’y pensais pas et que je ne connaissait pas la commande firewall-cmd

Voici le petit script qui m’a permis de faire en sorte que les containers puissent appeller un domaine présent sur le serveur en songeant à sortir avant (enfin a beau broll si je m’explique mal x) )

Voici les quelques commandes à taper :

1
2
3
4
5
firewall-cmd --permanent --zone=trusted --change-interface=docker0 #carte réseau par défaut de docker
firewall-cmd --permanent --zone=trusted --change-interface=br-0a19182277f4 #carte réseau créer par docker pour mon réseau 172.20.2xx.x
firewall-cmd --permanent --zone=trusted --add-port=80/tcp #port ouvert à l'extérieur
firewall-cmd --permanent --zone=trusted --add-port=443/tcp #port ouvert à l'extérieur
firewall-cmd --reload

J’ai une nouvelle commande à analyser moi ^^
Merci à tous pour votre aide :)

EDIT : un auteur peut signaler que sa réponse l’a aidé, normal ça ? ^^’

+1 -0

Je déterre un peu ce topic suite a un approfondissement de la commande firewall-cmd: déjà j’ai tout fait planter sur mon serveur, obliger de redémarrer, faut que j’arrête les tests en prod moi…

Mon erreur est que je n’avais pas compris grand chose à cette commande :

1
2
firewall-cmd --permanent --zone=trusted --add-port=80/tcp 
firewall-cmd --permanent --zone=trusted --add-port=443/tcp 

Ne signifie pas que l’on fait confiance au port ouvert en extérieur, mais plutôt que les machines entre elles font confiances aux ports 80 et 443 (enfin c’est ce que j’ai compris)
De plus, elles font confiance à la carte docker0 (qui est une connexion par pont, rappelons le) et comme la carte br- chance à chaque fois, on peut pas la définir SAUF qu’il s’agit aussi d’un réseau virtuel connecté à docker0 (ça fait beaucoup de pont ^^ )

Cependant, je ne comprend pas pourquoi en appelant une IP avec le port cela fonctionne, mais pas le domaine (qui repasse donc par le reverse proxy pour revenir)… Mystère, Mystère, je vais encore creuser

(cette remonté était pour éviter de véhiculer des bêtises ;)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte