Если я хочу иметь 2 статических IP-адреса, я могу сделать что-то вроде этого:
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
broadcast 192.168.1.255
auto eth0:0
iface eth0:0 inet static
address 192.168.1.11
netmask 255.255.255.0
broadcast 192.168.1.255
Однако я хотел бы использовать DHCP для получения адресов. Я попробовал следующее:
auto eth0
iface eth0 inet dhcp
auto eth0:0
iface eth0:0 inet dhcp
... но я получаю только eth0, а не второй IP. Есть ли простой способ сделать это?
После определенного исследования по-видимому, Вы не можете сделать этого.
подынтерфейс не может запросить другой IP-адрес, потому что это использует тот же MAC-адрес в качестве физического интерфейса, и так как запросы DHCP MAC-адресом, Вы не можете получить двух дюйм/с для того же интерфейса.
ответ от SuperUser предлагает следующие два метода:
Метод 1
Создает сценарий, который сделает что-то вроде этого (с подынтерфейсом, определенным на основном устройстве):
- интерфейс Primary выпускает DHCP и получает IP-адрес,
- , macchanger изменяет MAC-адрес интерфейса,
- DHCP проблем интерфейса Sub и получает IP-адрес,
- Возвращаются мак адрес с macchanger.
- Уничтожают клиента DHCP так, чтобы он автоматически не работал позже.
Отрабатывают время владения IP-адреса, который Вам дают и планируете этот сценарий для выполнения снова, прежде чем арендный договор истечет.
Метод 2
Для этого Вам будет нужно
iproute2
установленный. Следующая команда добавляет виртуальный интерфейс, связанный с существующим интерфейсом eth0:ip link add link eth0 address 00:11:22:33:44:55 virtual0 type macvlan
Замена Mac и "virtual0" название интерфейса к тому, что Вы любите. Включите его:
ip link set virtual0 up
Тогда настраивают использование dhcpd или dhclient или ifconfig по мере необходимости. Я протестировал, это на Debian сжимает - Ваш дистрибутив не может иметь всего необходимого, включенного в ядре (macvlan особенно).
Источник: SuperUser: Получение 2 IP-адресов на одной сетевой плате, с помощью DHCP
Другие источники:
Также необходимо удостовериться, что основной интерфейс настроен для неразборчивого режима:
ip link set dev eth0 promisc on
При использовании Виртуальной машины, также удостоверьтесь, что хост VM разрешает гостю использовать неразборчивый режим.
можно принести это все вместе в /etc/network/interfaces
как это:
# Primary interface
auto eth0
iface eth0 inet dhcp
up ip link set dev eth0 promisc on
# Macvlan interfaces
auto vir1
iface vir1 inet dhcp
pre-up ip link add link eth0 address 02:cd:ab:00:10:01 vir1 type macvlan
post-down ip link delete vir1
auto vir2
iface vir2 inet dhcp
pre-up ip link add link eth0 address 02:cd:ab:00:10:02 vir2 type macvlan
post-down ip link delete vir2
... и т.д.
Подробно останавливаясь на ответе David, это работало на меня, не нуждаясь promsic в режиме. Я нашел полезным добавить имя хоста, заставить мой маршрутизатор разрешать DNS для каждого интерфейса.
auto vir1
iface vir1 inet dhcp
hostname vir1-hostname
pre-up ip link add link eth0 address 02:cd:ab:00:10:01 vir1 type macvlan
post-down ip link delete vir1