web-dev-qa-db-fra.com

Comment configurer une adresse IP statique, mais DNS via DHCP

J'ai configuré une adresse IP statique dans le fichier / etc/network/interfaces :

auto eth0
iface eth0 inet static
    address 10.152.187.122
    gateway 10.152.187.1
    netmask 255.255.255.0

Mais j'aimerais que DNS soit configuré automatiquement avec DHCP . Par exemple, si je lance dhclient, il remplit correctement / etc/resolv.conf . Mais je voudrais que cela fonctionne au démarrage, et je ne suis pas sûr de la bonne façon de le configurer.

Ceci est sur le Image du nuage Ubuntu 12.04 (Precise Pangolin) .

3
Ian Kelling

Avec DHCP, vous obtenez les adresses de serveur de noms DNS que le routeur obtient lorsqu'il reçoit une adresse IP de votre fournisseur de services Internet (ISP). Vous pouvez utiliser les adresses de serveur de noms DNS du routeur comme ceci:

auto eth0
iface eth0 inet static
  address 10.152.187.122   
  netmask 255.255.255.0
  gateway 10.152.187.1
  dns-nameservers 10.152.187.1
2
chili555

Ce que vous demandez, c’est essentiellement une configuration hybride IP statique mais DHCP DNS. Ce type de configuration réseau n'existe pas - vous avez soit statique, soit DHCP.

Cependant, vous pouvez définir explicitement les serveurs de noms DNS dans votre configuration, comme ceci. Cela conserve les adresses statiques, mais malheureusement, le DNS n'est pas défini de manière dynamique (ce qui n'est pas vraiment possible dans une configuration hybride comme celle-ci).

auto eth0
iface eth0 inet static
  address 10.152.187.122
  netmask 255.255.255.0
  gateway 10.152.187.1
  dns-nameservers 10.152.187.1
  dns-nameservers 8.8.8.8
  dns-nameservers 8.8.4.4
  ...

TL; DR: Il n’est pas possible d’obtenir un DNS DNS, une adresse IP statique, à moins d’avoir une entrée statique définie dans la table des affectations DHCP du routeur - ce qui garantit que vous obtiendrez toujours cette adresse IP, car elle est spécifiquement réservée à ce système spécifique. /Adresse Mac

2
Thomas Ward

Je souhaite également interroger des serveurs DNS auprès de DHCP sans utiliser d'autres informations.

Dhcpcd pourrait permettre de l'interroger (dhcpcd -o domain_name_servers -T), mais je n'ai rien trouvé pour dhclient.

En plus d’utiliser un dhclient modifié (voir ici sur GitHub et ici sur Stack Overflow ) ou un client test ( comme dans ce blog ) ou différent scripts ( voir ceci sur Stack Overflow ) J'ai trouvé une solution powershell ici sur indented.co.uk .

Cela m'a fait penser à utiliser "les bases" sur Linux et je me suis retrouvé avec une requête dhcp spécialement construite utilisant printf.

Certains champs peuvent être faux (comme mac aa: bb: cc: dd: ee: ff), mais ils contiennent les options 53 = 0x35 (len 1/valeur 1 = demande) et 55 = 0x37 (len 1/valeur 6 pour DNS).

Pour la diffusion, socat est utilisé:

printf "\x1\x1\x6\x0\xd3\x44\x33\xeb\x0\x0\x80\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\xaa\xbb\xcc\xdd\xee\xff\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x63\x82\x53\x63\x35\x01\x01\x37\x01\x06\xff" |  socat - UDP4-DATAGRAM:255.255.255.255:67,broadcast

Simliar socat est utilisé pour recevoir une réponse

socat -u udp-recv:68,reuseaddr -

ou

socat -u udp-recv:68 - | dd bs=1 skip=$( printf "%d" 0xec )

En utilisant xxd j'ai trouvé ce que je cherchais ...

0
HopefullyHelpful