Я хотел бы создать несколько псевдонимов для eth0, но иметь адреса, назначенные DHCP, а не статические IP-адреса. Это вообще возможно?
Все примеры, которые я видел, назначают статический IP-адрес с помощью команды:
ifconfig eth0:0 192.168.1.11 up
Спасибо
В iproute2 есть не очень хорошо документированная функция, которая позволяет создавать дополнительные виртуальные сетевые интерфейсы и назначать им разные MAC-адреса; тогда вы сможете запустить два отдельных экземпляра DHCP-клиента на каждом.
Чтобы создать виртуальный интерфейс, выполните
ip link add link eth0 name eth1 address 00:11:22:33:44:55 type macvlan
Затем попробуйте запустить DHCP-клиент.
Законно спросить Зачем вы хотите это сделать. Если машина использует множество адресов с разными ролями, как машина определит, какой адрес использовать для какой роли, если они динамические?
Также обратите внимание, что синтаксис ifconfig с :0
суффиксы устарели; с iproute2 вы можете просто использовать
ip addr add 10.0.0.1/24 dev eth0
ip addr add 10.0.0.2/24 dev eth0
и так далее, чтобы назначить несколько адресов одному интерфейсу.
Я не знаю, для чего именно вы хотите использовать псевдонимы, но вы можете получить несколько интерфейсов, работающих с DHCP на одном физическом интерфейсе, создав мост-интерфейс с серверами виртуальных интерфейсов (каждый из них будет иметь уникальный MAC-адрес).
Есть одна причина, по которой это может быть желательно: динамическое преобразование сетевых адресов. Это не обычный Linux Masquerading тип преобразования адресов порта, о котором вы обычно думаете, а скорее динамическое сопоставление диапазона реальных адресов по запросу внутренним хостам, которые должны их использовать.
Если вы используете динамический NAT, вам не нужно статически отображать порты для определенных вещей на один хост. Например, если у меня есть программа обновления World of Warcraft, работающая не только на компьютере в моей частной сети, с повсеместной трансляцией адресов порта (маскарадингом), только один сможет участвовать в обмене, подобном bittorrent, который он делает, потому что вы можете отображать только открытые порты на одном внешнем IP-адресе на один внутренний адрес. Если бы у вас был список адресов, которые вы могли бы динамически назначать для полной трансляции адресов, вам не нужно было бы выполнять какое-либо сопоставление портов. Поскольку многие поставщики кабельного телевидения не позволяют вам получить статическое распределение диапазона IP-адресов, вы вынуждены запрашивать каждый из них с помощью DHCP, а затем динамически преобразовывать эти адреса во внутренние адреса. Использование отдельных физических интерфейсов для динамического NAT было бы расточительным, поскольку все, что вам действительно нужно, это больше MAC-адресов на одном интерфейсе.
Одно то, что эта ссылка указывает на то, что вы не можете использовать dhcp на родительском физическом интерфейсе для виртуальных интерфейсов macvlan, потому что это сбивает dhcp с толку. Я не пробовал ничего из этого, я на самом деле очень рад попытаться заставить dhcp работать на моем кабельном модеме с использованием интерфейсов macvlan, как предлагали @ b0fh и @ lars-bailey.
Я читал, где пользователи настраивают MACVLANS, чтобы получать адреса DHCP от своего интернет-провайдера. При этом интерфейс MACVLAN получает от интернет-провайдера новый публичный IP-адрес. Почему кому-то это нужно, мне кажется немного хитроумным, если только это не для какой-то балансировки нагрузки или виртуализации на ПК. (Как насчет NAT) Я могу получить до восьми динамических IP-адресов с моего модема DSL. (Один для меня и один для моего SAT-бокса) Я попробовал, и он работает. Вы можете выключить одну MACVLAN, перейти к отчетам DSL и найти свой «общедоступный» IP-адрес. Перейдите к другой MACVLAN, сделайте то же самое, и отобразится другой «общедоступный» IP. Имеете один сетевой интерфейс и хотите несколько адресов DHCP? Что-то, что заставляет вас сказать «Хммм».
Насколько я знаю, это невозможно. DHCP назначает адреса на основе MAC-адресов (и некоторых правил), и все ваши псевдонимы основаны на одном и том же MAC, поэтому DHCP-сервер не сможет различать какие-либо запросы, поскольку все они поступают с одного и того же MAC. Вдобавок к этому, как только основной IP-адрес установлен, вам будет сложно убедить вашего DHCP-клиента в том, что ему нужен другой адрес.
Я использую это, и это работает:
ip link add link eth0 name eth1 address 00:11:22:33:44:55 type macvlan
У меня Fedora 15.