Псевдонім IP-адреси, призначений DHCP


17

Я хотів би створити кілька псевдонімів до eth0, але мати адреси, призначені DHCP, а не встановлювати статичні IP-адреси. Це навіть можливо?

Усі приклади, які я бачив, призначають статичний IP за допомогою команди:

ifconfig eth0:0 192.168.1.11 up

Відповіді:


17

Це можливо лише в тому випадку, якщо два клієнти DHCP використовують різні MAC-адреси. Це означає, що вони не можуть працювати як на одному фізичному мережевому інтерфейсі, який має одну MAC-адресу.

Рішенням є віртуальний мережевий інтерфейс MAC-VLAN Linux. Інтерфейси MAC-VLAN - це інтерфейси віртуальної мережі, підкріплені фізичним інтерфейсом, але використовуються з іншою MAC-адресою, яка генерується випадковим чином під час створення пристрою MAC-VLAN.

Після створення інтерфейсу MAC-VLAN за допомогою фізичного інтерфейсу ви використовуєте його так само, як і фізичний. У вашому конкретному випадку ви можете запустити один клієнт DHCP на фізичному інтерфейсі, а інший - на пристрої MAC-VLAN. Кожен пристрій (фізичний та MAC-VLAN) може мати свою власну IP-адресу.

Новий MAC-VLAN пристрій macvlan0можна створити eth0за допомогою запуску

ip link add dev macvlan0 link eth0 type macvlan

Його можна видалити запуском

ip link delete dev macvlan0

Використовуючи NCD, моє програмне забезпечення для налаштування мережі ( http://code.google.com/p/badvpn/wiki/NCD ), наступна програма NCD створить два пристрої MAC-VLAN з eth0( macvlan0і macvlan1), запустить DHCP на кожному з них, і призначити їм отримані IP-адреси. Ви легко виконуєте інші речі, такі як додавання маршрутів та DNS-серверів; читайте сторінку NCD, якщо вас цікавить.

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

Ви отримаєте власну IP-адресу, отриману DHCP, macvlan0і macvlan1кожен із eth0них, але не має IP-адреси. Крім того, ви можете створити лише один інтерфейс MAC-VLAN та запустити один екземпляр DHCP на eth0собі.


1
Вибачення за те, що підняти це з мертвих, але твердження "Це можливо лише в тому випадку, якщо два клієнти DHCP використовують різні MAC адреси" невірно з точки зору протоколу DHCP. Навіть у 2011 році DHCP все ще базувався на ідентифікаторі клієнта, який не повинен відповідати MAC-адресу пристрою. (RFC 2131, опублікований у 97 році)
Андре Костур

0

Використання статичних або призначених DHCP IP-адрес - це вибір, який ви робите для свого комп'ютера.

Тут є хороший підручник .

Він містить багато деталей і допомагає уникнути проблем, які можуть виникнути, якщо ви використовуєте статичну замість призначеної DHCP адреси, наприклад, як підключитися до DNS-серверів і шлюзів.


0

Я ніколи не бачив конфігурації DHCP, яка дозволила б серверу DHCP надсилати декілька адрес в інтерфейс. Я не вірю, що протокол це підтримує. Щойно ви потрапляєте на кілька IP-адрес в інтерфейсі, ви дійсно повинні налаштувати їх як статичні адреси.

Деякі клієнти DHCP дозволяють призначати статичну адресу при наданні адреси. Я не вірю, що Windows дозволить вам додати більше одного.

Переконайтеся, що всі ваші статичні адреси знаходяться поза діапазоном адрес DCHP.


-1

Я точно не знаю, але я вірю, якщо у вас немає маршрутизатора з відкритим кодом, тоді вам доведеться використовувати статичний IP, щоб робити те, що ви хочете. ІМО, якщо у вас дійсно не є вагомою причиною, чому ви хочете робити те, що ви хочете, я б просто дотримувався DHCP. з вашого запитання я бачу ось що ви хочете, якщо тільки хтось не знає, як це зробити, я б зачекав і залишився з DHCP, поки хтось не дасть кращої відповіді. Хоча якщо у вас більше 1-2 ПК та нічого іншого в мережі (принтери-розширювачі носіїв тощо), я б не використовував статичні IP-адреси в якості IDK, як і якщо можливо встановити ці елементи статичним IP-адресою. Можливо, ви можете робити все, що завгодно, якщо ви отримаєте маршрутизатор з відкритим кодом і, можливо, зможете змусити його робити те, що ви хочете, просто використовувати статичний IP для своєї машини, використовуючи mac-адресу як спосіб ідентифікувати його та встановити його IP та решта мережі може забрати DHCP. IDK, як я ніколи не робив тонких, я просто викидаю ідеї, тому вибачте за те, що не маю відповіді за вас. Хоча посилання, створене Брайаном, виглядає як непоганий ресурс щодо питань DHCP та Static IP. Також для маршрутизатора з відкритим кодом я вважаю, що Netgear і D-Link впевнені, що більше, але IMO ці два бренди - це те, кого я обрав би. Мені особисто не подобається Linksys, оскільки вони були куплені романом (ви б подумали, що вони будуть кращими, але НЕ ІМО. Особисто я віддаю перевагу D-link, оскільки вони є найбільш налаштованими маршрутизаторами, які я знайшов.) Також для маршрутизатора з відкритим кодом я вважаю, що Netgear і D-Link впевнені, що більше, але IMO ці два бренди - це те, кого я обрав би. Мені особисто не подобається Linksys, оскільки вони були куплені романом (ви б подумали, що вони будуть кращими, але НЕ ІМО. Особисто я віддаю перевагу D-link, оскільки вони є найбільш налаштованими маршрутизаторами, які я знайшов.) Також для маршрутизатора з відкритим кодом я вважаю, що Netgear і D-Link впевнені, що більше, але IMO ці два бренди - це те, кого я обрав би. Мені особисто не подобається Linksys, оскільки вони були куплені романом (ви б подумали, що вони будуть кращими, але НЕ ІМО. Особисто я віддаю перевагу D-link, оскільки вони є найбільш налаштованими маршрутизаторами, які я знайшов.)

Також перегляньте це посилання, і, можливо, ви зможете зробити більше з маршрутизатором, якщо він підтримується

На цьому сайті є прошивка маршрутизатора


-1

Ні, ви не можете цього зробити. DHCP призначає IP на основі вашої апаратної адреси. Кожен фізичний інтерфейс має лише один із них, тому DHCP призначить лише один IP-адресу фізичному інтерфейсу.

Я б радив вам просто встановити IP-адреси інтерфейсу статично.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.