17

Я хотел бы создать несколько псевдонимов к eth0, но иметь адреса, назначенные DHCP, вместо того, чтобы быть установленным на статические IP. Это вообще возможно?

Все примеры, которые я видел, назначают статический IP с помощью команды:

ifconfig eth0:0 192.168.1.11 up

5 ответов5

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 каждый из которых имеет собственный IP-адрес, полученный DHCP, и eth0 который работает, но не имеет IP-адреса. Кроме того, вы можете создать только один интерфейс MAC-VLAN и запустить один экземпляр DHCP на самом eth0 .

0

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

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

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

0

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

Здесь есть хороший учебник.

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

-1

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

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

-1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .