[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: HOSTALIASES ne fonctionne pas sur debian?



Le 13/09/19 à 15h46, Marc Chantreux <mc@unistra.fr> a écrit :
> > Pour ssh ou mosh, je configurerais plutôt des fichiers spécifiques (par
> > exemple sous ~/.ssh)  
> 
> précisément: je me plante régulièrement parceque ssh, scp, rsync, git et
> toutes ces commandes qui sous-traitent à ssh marchent bien mais qu'à
> l'inverse, curl, firefox, tcptraceroute et autres ne fonctionnent pas.

Pour ce besoin, j'utilise mon résolveur local (unbound), avec 
- la liste `host ip` dans un /etc/unbound/hosts.list
- un /root/bin/refresh_unbound_local_zone.sh qui génère
  un /etc/unbound/unbound.conf.d/local.conf et recharge unbound si la 
  nouvelle conf n'a pas de pb de syntaxe (sinon il remet l'ancienne)

Dans mon cas c'est pour gérer du *.lan.domain.tld (qui n'existe 
pas dans les dns publics), avec dans le resolv.conf un 

  search lan.domain.tld

=> L'utilisateur n'a pas besoin de connaître le suffixe lan.domain.tld, 
s'il veut joindre le host toto ça ira chercher dans unbound toto.lan.domain.tld

Ça donne dans ce local.conf

server:
  # pour qu'il accepte de donner des ip privées dans les réponses
  private-domain: "lan.domain.tld"
  # notre domaine fictif statique
  local-zone: "lan.domain.tld." static

  # la liste d'après /etc/unbound/hosts.list
  local-data: "xx.lan.domain.tld. IN A 192.168.x.y"
  local-data-ptr: "192.168.x.y xx.lan.domain.tld"


Je suis sûr que tu n'a pas besoin de moi pour écrire la transformation
liste => conf, mais si ça peut servir à d'autres voici mon script.
Dsl c'est du bash, mais zsh doit digérer ça sans pb ;-)


#!/bin/bash

# pour générer la liste d'après la conf c'est
# sed -nre 's/.*local-data:.*"([^\.]+)\.[^0-9]*([0-9\.]+)".*/\1 \2/p' /etc/unbound/unbound.conf.d/local.conf

set -u

SRC=/etc/unbound/hosts.list
DST=/etc/unbound/unbound.conf.d/local.conf
BAK=/etc/unbound/local.bak
BAKO=/etc/unbound/local.ko

DOM=lan.domain.tld

OK=0
KO=1

confirm=yes
[ "${1-}" == "-y" ] && confirm=no

[ ! -f $SRC ] && echo "$SRC n'existe pas, abandon">&2 && exit $KO

if [ "$confirm" == "yes" ]; then
  echo "Ce script va écraser la conf locale (statique) d'unbound pour $DOM (avec les $(egrep -c '^[a-z]' $SRC) hosts de $SRC)"
  echo "Continuer [o/N] ?"
  read rep
  [ "$rep" != "o" ] && echo "Abandon" && exit $OK
fi

# backup conf actuelle
cp -af $DST $BAK

cat <<EOF > $DST
# fichier généré automatiquement d'après $0
server:
  # pour qu'il accepte de donner des ip privées dans les réponses
  private-domain: "lan.domain.tld"
  # notre domaine fictif statique
  local-zone: "lan.domain.tld." static

  # la liste d'après $SRC
EOF

awk '/^[a-z]/ {
  printf("  local-data: \"%s.'$DOM'. IN A %s\"\n", $1, $2)
  printf("  local-data-ptr: \"%s %s.'$DOM'\"\n", $2, $1)
}' < $SRC >> $DST

if unbound-checkconf
then
  if [ "$confirm" == "yes" ]; then
    echo "Conf OK, recharger unbound [o/N] ?"
    read rep
    [ "$rep" != "o" ] && echo "Sortie sans rechargement, unbound UTILISE TOUJOURS l'ancienne configuration" && exit $OK
  fi
  unbound-control reload
else
  echo "Conf KO (cf le résultat généré dans $BAKO), on remet l'ancienne"
  cp -af $DST $BAKO
  cp -af $BAK $DST
fi



-- 
Daniel

À une table, le nombre 13 n'est à craindre
que si il n'y a à manger pour 12.
Grimod de la Reynière


Reply to: