Псевдоним 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);
}

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

Амброз Бижак
источник
1
Извините за то, что поднял это из мертвых, но утверждение «Это возможно, только если два DHCP-клиента используют разные MAC-адреса» неверно с точки зрения протокола DHCP. Даже в 2011 году DHCP все еще основывался на идентификаторе клиента, который не должен совпадать с MAC-адресом устройства. (RFC 2131, опубликовано в '97)
Андре Костур
0

Использование статических или назначенных DHCP IP-адресов - выбор, который вы делаете для своего компьютера.

Здесь есть хорошее руководство .

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

Bryan
источник
0

Я никогда не видел конфигурацию DHCP, которая позволила бы серверу DHCP отправлять несколько адресов интерфейсу. Я не верю, что протокол поддерживает это. Как только вы получаете несколько IP-адресов на интерфейсе, вы действительно должны настроить их как статические адреса.

Некоторые клиенты DHCP позволяют назначать статический адрес, когда адрес указан. Я не верю, что Windows позволит вам добавить более одного.

Убедитесь, что все ваши статические адреса находятся за пределами диапазона адресов DCHP.

BillThor
источник
-1

Я не знаю точно, но я верю, что если у вас нет маршрутизатора с открытым исходным кодом, вам придется использовать статический IP-адрес, чтобы делать то, что вы хотите. IMO, если у вас нет ДЕЙСТВИТЕЛЬНО веской причины, почему вы хотите делать то, что вы хотите, я бы просто придерживался DHCP. из твоего вопроса я вижу, что ты этого хочешь, так что если кто-то не знает, как это сделать, я подожду и останусь с DHCP, пока кто-нибудь не даст лучший ответ. Хотя, если у вас нет более 1-2 штук и ничего больше в сети (носители для принтеров и т. Д.), Я бы не использовал статические IP-адреса в качестве IDK, как или если можно установить эти элементы со статическим IP-адресом. Может быть, вы можете делать то, что вы хотите, если вы получаете маршрутизатор с открытым исходным кодом, и вы можете заставить его делать то, что вы хотите, просто использовать статический IP-адрес для вашей машины, используя MAC-адрес как способ его идентификации и установить его IP и остальная часть сети может быть DHCP-сервером. IDK, так как я никогда не делал ничего, я просто выбрасываю идеи, так что извините за отсутствие ответа для вас. Хотя ссылка, представленная Брайаном, выглядит как хороший ресурс по вопросам DHCP и статического IP. Также я уверен, что для маршрутизатора с открытым исходным кодом Netgear и D-Link делают их, но я бы выбрал именно эти два бренда. Я лично не люблю Linksys, так как они были куплены романом (можно подумать, что они будут лучше, но НЕ ИМО. Лично я предпочитаю D-link, так как они являются наиболее настраиваемыми маршрутизаторами, которые я когда-либо обнаруживал). Также я уверен, что для маршрутизатора с открытым исходным кодом Netgear и D-Link делают их, но я бы выбрал именно эти два бренда. Я лично не люблю Linksys, так как они были куплены романом (можно подумать, что они будут лучше, но НЕ ИМО. Лично я предпочитаю D-link, так как они являются наиболее настраиваемыми маршрутизаторами, которые я когда-либо обнаруживал). Также я уверен, что для маршрутизатора с открытым исходным кодом Netgear и D-Link делают их, но я бы выбрал именно эти два бренда. Я лично не люблю Linksys, так как они были куплены романом (можно подумать, что они будут лучше, но НЕ ИМО. Лично я предпочитаю D-link, так как они являются наиболее настраиваемыми маршрутизаторами, которые я когда-либо обнаруживал).

Также проверьте эту ссылку, и вы можете сделать больше с вашим маршрутизатором, если он поддерживается

Этот сайт имеет прошивку маршрутизатора

битник
источник
-1

Нет, ты не можешь этого сделать. DHCP назначает IP на основе вашего аппаратного адреса. Каждый физический интерфейс имеет только один из них, поэтому DHCP назначит только один IP-адрес физическому интерфейсу.

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

Belrog
источник