Bonjour,
L’un de mes services est inaccessible depuis ce matin, la faute à un port non redirigé habituellement par YunoHost via UPnP. En fait, plus aucun des ports utilisés YunoHost n’était ouvert par UPnP. En fait, sauf à être dans le réseau local privé (chez moi), YunoHost ne m’était plus du tout accessible.
J’ai fini par trouver l’origine du problème : le pare-feu iptables empêchait le fonctionnement normal d’UPnP. Mais ce qui est super curieux … c’est la façon de contourner le problème. Voici le scénario :
Vérifier qu’UPnP est bien bloqué
upnpc -l
Si UPnP est bloqué, j’ai :
No IGD UPnP Device found on the network !
Si je désactive le firewall :
yunohost firewall stop
upnp -l
[...]
List of UPNP devices found on the network :
desc: http://192.168.1.254:5678/desc/root
st: urn:schemas-upnp-org:device:InternetGatewayDevice:1
[...]
Bref, l’UPnP fonctionne bien sans le firewall.
Quelle règle gêne dans le firewall ?
Attention, c’est du lourd ! Voici les règles INPUT :
yunohost firewall reload
iptables -L INPUT --line-numbers
Me renvoie :
Chain INPUT (policy DROP)
num target prot opt source destination
1 fail2ban-yunohost tcp -- anywhere anywhere multiport dports http,https
2 fail2ban-nginx tcp -- anywhere anywhere multiport dports http,https
3 fail2ban-dovecot tcp -- anywhere anywhere multiport dports smtp,urd,submission,imap2,imap3,imaps,pop3,pop3s
4 fail2ban-sasl tcp -- anywhere anywhere multiport dports smtp,urd,submission,imap2,imap3,imaps,pop3,pop3s
5 fail2ban-postfix tcp -- anywhere anywhere multiport dports smtp,urd,submission
6 fail2ban-pam-generic tcp -- anywhere anywhere
7 fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
8 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
9 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
10 ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
11 ACCEPT tcp -- anywhere anywhere tcp dpt:domain
12 ACCEPT tcp -- anywhere anywhere tcp dpt:http
13 ACCEPT tcp -- anywhere anywhere tcp dpt:https
14 ACCEPT tcp -- anywhere anywhere tcp dpt:urd
15 ACCEPT tcp -- anywhere anywhere tcp dpt:submission
16 ACCEPT tcp -- anywhere anywhere tcp dpt:imaps
17 ACCEPT tcp -- anywhere anywhere tcp dpt:xmpp-client
18 ACCEPT tcp -- anywhere anywhere tcp dpt:xmpp-server
19 ACCEPT tcp -- anywhere anywhere tcp dpt:63700
20 ACCEPT tcp -- anywhere anywhere tcp dpt:51413
21 ACCEPT udp -- anywhere anywhere udp dpt:domain
22 ACCEPT udp -- anywhere anywhere udp dpt:mdns
23 ACCEPT all -- anywhere anywhere
24 ACCEPT icmp -- anywhere anywhere
Or si je fais :
iptables -D INPUT 23
iptables -I INPUT 23 -p all -j ACCEPT
Ce qui revient à réécrire la même règle, me semble-t-il, hé bien dans ce cas l’UPnP fonctionne parfaitement.
Si jamais je recharge le firewall via yunohost firewall reload
, alors l’UPnP ne fonctionne plus à nouveau.
Il semble donc que la règle ligne 23 soit, par défaut, incorrecte d’une façon ou d’une autre. Mais je ne vois pas bien pourquoi
Une idée ?