Von DHCP zugewiesener IP-Adressalias


17

Ich möchte mehrere Aliase für eth0 erstellen, aber die Adressen werden von DHCP zugewiesen, anstatt auf statische IPs gesetzt zu werden. Ist das überhaupt möglich?

Alle Beispiele, die ich gesehen habe, weisen mit dem folgenden Befehl eine statische IP-Adresse zu:

ifconfig eth0:0 192.168.1.11 up

Antworten:


17

Dies ist nur möglich, wenn die beiden DHCP-Clients unterschiedliche MAC-Adressen verwenden. Das heißt, sie können nicht beide auf derselben physischen Netzwerkschnittstelle mit einer einzigen MAC-Adresse ausführen.

Die Lösung sind die virtuellen MAC-VLAN-Netzwerkschnittstellen von Linux. MAC-VLAN-Schnittstellen sind virtuelle Netzwerkschnittstellen, die von einer physischen Schnittstelle unterstützt werden, jedoch eine andere MAC-Adresse verwenden, die beim Erstellen eines MAC-VLAN-Geräts zufällig generiert wird.

Wenn Sie eine MAC-VLAN-Schnittstelle mit einer physischen Schnittstelle erstellt haben, verwenden Sie diese auf dieselbe Weise wie die physische. In Ihrem speziellen Fall können Sie einen DHCP-Client auf der physischen Schnittstelle und einen anderen auf dem MAC-VLAN-Gerät ausführen. Jedes Gerät (physisches und MAC-VLAN) kann dann eine eigene IP-Adresse haben.

Ein neues MAC-VLAN-Gerät macvlan0kann eth0durch Ausführen von erstellt werden

ip link add dev macvlan0 link eth0 type macvlan

Es kann durch Ausführen gelöscht werden

ip link delete dev macvlan0

Unter Verwendung von NCD, meiner Netzwerkkonfigurationssoftware ( http://code.google.com/p/badvpn/wiki/NCD ), erstellt das folgende NCD-Programm zwei MAC-VLAN-Geräte von eth0( macvlan0und macvlan1), auf denen jeweils DHCP ausgeführt wird. und weisen ihnen die erhaltenen IP-Adressen zu. Sie erledigen problemlos andere Aufgaben wie das Hinzufügen von Routen und DNS-Servern. Lesen Sie die NCD-Seite, wenn Sie interessiert sind.

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);
}

Am Ende haben Sie macvlan0und macvlan1jede eine eigene DHCP-bezogene IP-Adresse, eth0die zwar aktiv ist, aber keine IP-Adresse hat. Alternativ können Sie nur eine MAC-VLAN-Schnittstelle erstellen und eine DHCP-Instanz auf sich eth0selbst ausführen .


1
Entschuldigung für die Auferweckung von den Toten, aber die Aussage "Dies ist nur möglich, wenn die beiden DHCP-Clients unterschiedliche MAC-Adressen verwenden" ist aus der Sicht des DHCP-Protokolls falsch. Auch im Jahr 2011 basierte DHCP noch auf einer Client-ID, die nicht mit der MAC-Adresse des Geräts übereinstimmen muss. (RFC 2131, veröffentlicht in '97)
Andre Kostur

0

Die Verwendung von statischen oder DHCP-zugewiesenen IP-Adressen ist eine Wahl, die Sie für Ihren Computer treffen.

Hier gibt es ein gutes Tutorial .

Es enthält viele Details und hilft Ihnen, Probleme zu vermeiden, die auftreten können, wenn Sie eine statische anstelle einer DHCP-zugewiesenen Adresse verwenden, z. B. wie Sie eine Verbindung zu DNS-Servern und Gateways herstellen.


0

Ich habe noch nie eine DHCP-Konfiguration gesehen, die es dem DHCP-Server ermöglichen würde, mehrere Adressen an eine Schnittstelle zu senden. Ich glaube nicht, dass das Protokoll es unterstützt. Sobald Sie auf einer Schnittstelle mehrere IP-Adressen eingegeben haben, sollten Sie diese wirklich als statische Adressen konfigurieren.

Einige DHCP-Clients ermöglichen die Zuweisung einer statischen Adresse, wenn eine Adresse angegeben wird. Ich glaube nicht, dass Sie mit Windows mehr als eine hinzufügen können.

Stellen Sie sicher, dass alle Ihre statischen Adressen außerhalb des DCHP-Adressbereichs liegen.


-1

Ich weiß es nicht genau. Aber ich glaube, wenn Sie keinen Open-Source-Router haben, müssen Sie statische IP-Adressen verwenden, um das zu tun, was Sie wollen. IMO, es sei denn, Sie haben einen WIRKLICH guten Grund, warum Sie tun möchten, was Sie wollen. Ich würde mich nur mit DHCP aufhalten. Aus Ihrer Frage sehe ich, dass es das ist, was Sie wollen. Wenn jemand nicht weiß, wie es geht, würde ich warten und bei DHCP bleiben, bis jemand eine bessere Antwort gibt. Obwohl, wenn Sie nicht mehr als 1-2 Stück und nichts anderes im Netzwerk haben (Drucker, Medien-Extender usw.), würde ich keine statischen IPs als IDK verwenden, wie oder ob es möglich ist, diese Elemente mit einer statischen IP einzustellen. Vielleicht können Sie tun, was Sie wollen, wenn Sie einen Open Source Router haben, und Sie können ihn möglicherweise dazu bringen, das zu tun, was Sie wollen, indem Sie einfach eine statische IP für Ihr Gerät verwenden und die MAC-Adresse verwenden, um es zu identifizieren und seine IP und einzustellen Der Rest des Netzwerks könnte DHCP sein. IDK, da ich nie etwas getan habe, schmeiße ich nur Ideen aus. Tut mir leid, dass ich keine Antwort für dich habe. Obwohl der von Bryan gestellte Link wie eine nette Ressource für DHCP- und statische IP-Probleme aussieht. Auch für den Open Source Router glaube ich, dass Netgear und D-Link sie sicher mehr machen, aber IMO diese beiden Marken sind die, die ich wählen würde. Ich persönlich mag Linksys nicht, da sie von Roman gekauft wurden (Sie würden denken, sie wären besser, aber NICHT IMO. Ich persönlich bevorzuge D-Link, da sie die am besten anpassbaren Router sind, die ich gefunden habe.) Auch für den Open Source Router glaube ich, dass Netgear und D-Link sie sicher mehr machen, aber IMO diese beiden Marken sind die, die ich wählen würde. Ich persönlich mag Linksys nicht, da sie von Roman gekauft wurden (Sie würden denken, sie wären besser, aber NICHT IMO. Ich persönlich bevorzuge D-Link, da sie die am besten anpassbaren Router sind, die ich gefunden habe.) Auch für den Open Source Router glaube ich, dass Netgear und D-Link sie sicher mehr machen, aber IMO diese beiden Marken sind die, die ich wählen würde. Ich persönlich mag Linksys nicht, da sie von Roman gekauft wurden (Sie würden denken, sie wären besser, aber NICHT IMO. Ich persönlich bevorzuge D-Link, da sie die am besten anpassbaren Router sind, die ich gefunden habe.)

Überprüfen Sie auch diesen Link und Sie können möglicherweise mehr mit Ihrem Router tun, wenn er unterstützt wird

Diese Seite hat Router Firmware


-1

Nein, das kannst du nicht. DHCP weist eine IP zu, die auf Ihrer Hardwareadresse basiert. Jede physische Schnittstelle verfügt nur über eine dieser Schnittstellen. Daher weist DHCP einer physischen Schnittstelle nur eine IP-Adresse zu.

Ich würde dir raten, nur die Schnittstellen-IPs statisch zu setzen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.