Alias ​​d'adresse IP attribué par DHCP


17

Je voudrais créer plusieurs alias pour eth0, mais avoir les adresses attribuées par DHCP au lieu d'être définies sur des IP statiques. Est-ce seulement possible?

Tous les exemples que j'ai vus attribuer une IP statique en utilisant la commande:

ifconfig eth0:0 192.168.1.11 up

Réponses:


17

Cela n'est possible que si les deux clients DHCP utilisent des adresses MAC différentes. Ce qui signifie qu'ils ne peuvent pas exécuter les deux sur la même interface réseau physique, qui a une seule adresse MAC.

La solution est les interfaces réseau virtuelles MAC-VLAN de Linux. Les interfaces MAC-VLAN sont des interfaces réseau virtuelles soutenues par une interface physique, mais utilisées avec une adresse MAC différente, qui est générée de manière aléatoire lorsque vous créez un périphérique MAC-VLAN.

Une fois que vous avez créé une interface MAC-VLAN à l'aide d'une interface physique, vous l'utilisez de la même manière que vous le feriez avec une interface physique. Dans votre cas particulier, vous pouvez exécuter un client DHCP sur l'interface physique et un autre sur le périphérique MAC-VLAN. Chaque appareil (physique et MAC-VLAN) peut alors avoir sa propre adresse IP.

Un nouveau périphérique MAC-VLAN macvlan0peut être créé eth0en exécutant

ip link add dev macvlan0 link eth0 type macvlan

Il peut être supprimé en exécutant

ip link delete dev macvlan0

En utilisant NCD, mon logiciel de configuration réseau ( http://code.google.com/p/badvpn/wiki/NCD ), le programme NCD suivant créera deux périphériques MAC-VLAN à partir de eth0( macvlan0et macvlan1), exécutera DHCP sur chacun d'eux, et leur attribuer les adresses IP obtenues. Vous pouvez facilement faire d'autres choses comme ajouter des routes et des serveurs DNS; lisez la page NCD si vous êtes intéressé.

process lan {
    # Set device.
    var("eth0") dev;

    # Wait for device to appear, set it up, and wait for cable to be plugged in.
    net.backend.waitdevice(dev);
    net.up(dev);
    net.backend.waitlink(dev);

    # Start DHCP's.
    provide("lan-link");
}

process lan_dhcp1 {
    # Wait for link.
    depend("lan-link") linkdep;

    # Choose virtual device name.
    var("macvlan0") vdev;

    # Create virtual MAC-VLAN device.
    list("/sbin/ip", "link", "add", "dev", vdev, "link", linkdep.dev, "type", "macvlan") do;
    list("/sbin/ip", "link", "delete", "dev", vdev) undo;
    run(do, undo);

    # Set virtual device up.
    net.up(vdev);

    # DHCP configuration on virtual device.
    net.ipv4.dhcp(vdev) dhcp;
    ip_in_network(dhcp.addr, "127.0.0.0", "8") test_local;
    ifnot(test_local);

    println(vdev, ": got address ", dhcp.addr);

    # Assign address to virtual device.
    net.ipv4.addr(vdev, dhcp.addr, dhcp.prefix);
}

# This differs from above only in interface name (macvlan1).
process lan_dhcp2 {
    # Wait for link.
    depend("lan-link") linkdep;

    # Choose virtual device name.
    var("macvlan1") vdev;

    # Create virtual MAC-VLAN device.
    list("/sbin/ip", "link", "add", "dev", vdev, "link", linkdep.dev, "type", "macvlan") do;
    list("/sbin/ip", "link", "delete", "dev", vdev) undo;
    run(do, undo);

    # Set virtual device up.
    net.up(vdev);

    # DHCP configuration on virtual device.
    net.ipv4.dhcp(vdev) dhcp;
    ip_in_network(dhcp.addr, "127.0.0.0", "8") test_local;
    ifnot(test_local);

    println(vdev, ": got address ", dhcp.addr);

    # Assign address to virtual device.
    net.ipv4.addr(vdev, dhcp.addr, dhcp.prefix);
}

Vous vous retrouverez avec macvlan0et macvlan1chacun avec sa propre adresse IP obtenue par DHCP, et eth0qui est en place mais n'a pas d'adresse IP. Vous pouvez également créer une seule interface MAC-VLAN et exécuter une instance DHCP sur eth0elle-même.


1
Toutes mes excuses pour avoir soulevé cela des morts, mais la déclaration «cela n'est possible que si les deux clients DHCP utilisent des adresses MAC différentes» est incorrecte du point de vue du protocole DHCP. Même en 2011, DHCP était toujours basé sur un ID client, qui ne doit pas nécessairement correspondre à l'adresse MAC de l'appareil. (RFC 2131, publié en '97)
Andre Kostur

0

L'utilisation d'adresses IP statiques ou attribuées par DHCP est un choix que vous faites pour votre ordinateur.

Il y a un bon tutoriel ici .

Il contient de nombreux détails et vous aide à éviter les problèmes que vous pouvez rencontrer si vous utilisez une adresse statique au lieu d'une adresse DHCP, par exemple comment vous connecter à des serveurs et passerelles DNS.


0

Je n'ai jamais vu de configuration DHCP qui permettrait au serveur DHCP d'envoyer plusieurs adresses à une interface. Je ne crois pas que le protocole le supporte. Une fois que vous entrez dans plusieurs adresses IP sur une interface, vous devez vraiment les configurer comme adresses statiques.

Certains clients DHCP autorisent l'attribution d'une adresse statique lorsqu'une adresse est fournie. Je ne pense pas que Windows vous permettra d'en ajouter plus d'un.

Assurez-vous que toutes vos adresses statiques sont en dehors de la plage d'adresses DCHP.


-1

Je ne sais pas avec certitude, mais je crois que si vous n'avez pas de routeur open source, vous devrez utiliser une adresse IP statique pour faire ce que vous voulez. À moins que vous n'ayez vraiment une bonne raison pour laquelle vous voulez faire ce que vous voulez, je m'en tiendrai au DHCP. à partir de votre question, je vois que c'est ce que vous voulez, à moins que quelqu'un sache comment le faire, j'attendrais et resterais avec DHCP jusqu'à ce que quelqu'un donne une meilleure réponse. Bien que si vous n'avez pas plus de 1 à 2 pièces et rien d'autre sur le réseau (imprimantes, supports d'extension, etc.), je n'utiliserais pas les adresses IP statiques comme IDK comment ou s'il est possible de définir ces éléments avec une adresse IP statique. Vous pouvez peut-être faire ce que vous voulez si vous obtenez un routeur open source et vous pouvez le faire faire ce que vous voulez, comme utiliser simplement une adresse IP statique pour votre machine en utilisant l'adresse mac comme moyen de l'identifier et de définir son IP et le reste du réseau pourrait être DHCP. IDK comme je n'ai jamais fait de minces je jette juste des idées alors désolé de ne pas avoir de réponse pour vous. Bien que le lien posé par Bryan ressemble à une bonne ressource sur les problèmes DHCP et IP statique. Aussi pour le routeur Open Source, je crois que Netgear et D-Link les font, je suis sûr que plus, mais IMO ces deux marques sont celles que je choisirais. Personnellement, je n'aime pas Linksys car ils ont été achetés par roman (on pourrait penser qu'ils seraient mieux mais PAS IMO. Personnellement, je préfère D-link car ce sont les routeurs les plus personnalisables que j'ai trouvés.) Aussi pour le routeur Open Source, je crois que Netgear et D-Link les font, je suis sûr que plus, mais IMO ces deux marques sont celles que je choisirais. Personnellement, je n'aime pas Linksys car ils ont été achetés par roman (on pourrait penser qu'ils seraient mieux mais PAS IMO. Personnellement, je préfère D-link car ce sont les routeurs les plus personnalisables que j'ai trouvés.) Aussi pour le routeur Open Source, je crois que Netgear et D-Link les font, je suis sûr que plus, mais IMO ces deux marques sont celles que je choisirais. Personnellement, je n'aime pas Linksys car ils ont été achetés par roman (on pourrait penser qu'ils seraient mieux mais PAS IMO. Personnellement, je préfère D-link car ce sont les routeurs les plus personnalisables que j'ai trouvés.)

Consultez également ce lien et vous pourrez peut-être en faire plus avec votre routeur s'il est pris en charge

Ce site a le firmware du routeur


-1

Non, tu ne peux pas faire ça. DHCP attribue une IP en fonction de votre adresse matérielle. Chaque interface physique n'en a qu'une, donc DHCP n'attribuera qu'une seule IP à une interface physique.

Je vous conseillerais de définir simplement les adresses IP de l'interface de manière statique.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.