Problème et objectif
Nous n'obtenons pas IPv6 de notre FAI, j'ai donc un tunnel IPv6 qui fonctionne bien mais qui, bien sûr, n'est pas très rapide. Et pas vraiment fiable. J'aime avoir IPv6 disponible "juste au cas où" mais je veux que certains hôtes (domaines) soient connectés avec IPv4 uniquement.
Protocole par défaut
Il me semble que toutes les applications essaient d'abord IPv6; il s'agit probablement d'un paramètre glibc. Je serais bien si ce défaut était inversé (pour toutes les applications).
Netfilter
Il serait possible de bloquer les adresses / réseaux IPv6 avec Netfilter mais il y a deux problèmes:
- Cela entraînerait-il un retard lorsque l'application attend un délai IPv6 avant d'essayer IPv4?
- Certains domaines semblent être mixtes, cela ressemble à du chaos. Séparer google.com et youtube.com semble être quelque chose que vous ne voulez pas faire si vous pouvez l'éviter.
Je note simplement que la page de manuel de ip route
indique le type de routage unreachable
:
Les expéditeurs locaux obtiennent une erreur EHOSTUNREACH.
Est-ce la même chose avec les DROP ou REJETS de Netfilter? Une telle erreur ne devrait pas entraîner de retard significatif.
Filtrage DNS
Une autre solution (plutôt facile si possible) serait de filtrer les enregistrements AAAA pour certains domaines. Si ce n'est pas (facilement) possible: est-il possible de connecter le serveur DNS et Netfilter pour que je sache que "l'adresse IP X appartient au domaine Y" afin de pouvoir l'ajouter à Netfilter? Quelque chose de plus élégant que de tout enregistrer et de saluer le journal?
Le chemin à parcourir?
Quelles (autres) possibilités existent et quelle est la plus simple?
Réponses:
Vous pouvez contrôler la sélection d'adresse avec
/etc/gai.conf
. Le fichier de configuration est bien documenté et contient déjà les valeurs par défaut, vous pouvez donc simplement commencer à peaufiner.Les valeurs par défaut intéressantes sont les suivantes:
La dernière ligne donne la préférence la plus basse à toutes les adresses IPv4.
Si vous souhaitez donner une préférence plus élevée à tous les IPv4, vous pouvez le changer en:
Si vous souhaitez uniquement donner une préférence plus élevée à des adresses ou blocs IPv4 spécifiques, vous pouvez également les spécifier. N'oubliez pas que vous devez utiliser un IPv6 mappé IPv4 en hexadécimal.
Donc, pour donner la préférence à 203.0.113.0/24 sur tout IPv6, vous ajouteriez:
Redémarrez les applications en cours d'exécution pour qu'elles reprennent les modifications que vous apportez.
Sur les systèmes dérivés de Debian,
/etc/gai.conf
est déjà présent. Sur les systèmes dérivés de Red Hat, il est absent, mais un exemple de fichier se trouve à/usr/share/doc/glibc-common-*/gai.conf
; il suffit de le copier/etc
.la source
OK, voici une réponse complètement différente.
Placez les hôtes incriminés avec une connectivité IPv6 pourrie
/etc/hosts
avec leur adresse IPv4 correspondante.Par exemple:
N'oubliez pas de les supprimer lorsque leur (dans ce cas) ou votre connectivité IPv6 s'améliore.
la source
/etc/hosts
. Si personne ne propose "le logiciel de serveur DNS XY peut filtrer de cette façon !!" Je vais probablement finir avec ça.