Физические и виртуальные сетевые интерфейсы с таким же MAC. Это возможно?

прежде всего, я новичок в сетях, так что, может быть, где-то есть ответ на мой вопрос, но я не нашел ответа.

Ну, у меня много устройств, что имеет подключение к интернету. Я хочу объединить их всех в одну сеть, используя технологии VPN. Я использую tinc-vpn для решения моих потребностей, и я хочу использовать DHCP для настройки моей сети.

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

Как я понимаю, когда устройство становится онлайн, оно отправляет специальный запрос на трансляцию в сеть, которая содержит MAC устройства. DHCP обрабатывает запрос и отправляет ответ с конфигурациями сети обратно на устройство. Ну,ifconfig up виртуальный интерфейс для VPN на устройстве и назначить случайный MAC к нему. Почему я всегда получаю случайный IP. Думаю, если я спрошу ifconfig чтобы назначить MAC-адрес физической сети виртуальному интерфейсу, я разрешу проблема. Это возможно? Если нет, то как я могу решить свою проблему? Я бы не беспокоился об этом, если бы пул IP DHCP был очень большим, но он обслуживает только 250 устройств, и устройство очень часто отключалось.

спасибо заранее.

8
задан ArhiChief
04.04.2023 2:51 Количество просмотров материала 2584
Распечатать страницу

3 ответа

спасибо всем за ответ.

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

в моем решении я буду использовать подсеть /16 (например, 10.1.0.0). Итак, для всех устройств я должен рассчитать последние 2 октета IP. Для своих расчетов я использую CRC-16 хэш-функция на реальном MAC-адресе устройства. В результате я получу 2-байтовое целое число, содержащее IP адресные октеты.

пример. MAC-адрес устройства 22-23-B2-72-99-3A. CRC-16 компьютера MAC будет 0x2e49. 0x2e == 46 и 0x49 = 73, значит, IP-устройства будут 10.1.46.73.

плюсы:

  • нет DHCP;
  • уже известный, постоянный и уникальный IP устройства для всех сетей.

плюсы:

  • коллизии CRC-16 для MAC (два устройства в одной подсети с тот же IP, но с другим MAC). Но вероятность ситуации ничтожна, я думаю.

любые предложения и критика приветствуются.

2
отвечен ArhiChief 2023-04-05 10:39

чтобы ответить на заголовок: можно установить один и тот же MAC на двух интерфейсах, но это может привести к некоторым сетевым проблемам или просто неожиданному поведению.

существуют четыре способа (я знаю), чтобы решить вашу проблему:

  1. как grawity предложил: зарезервировать ip-адрес на DHCP-сервере для конкретного имени хоста.
  2. после создания виртуального сетевого устройства назначьте ему определенный MAC-адрес. В Linux это можно автоматизировать с помощью скрипта.
  3. запрос определенный IP-адрес с помощью DHCP-клиента. Чтобы сделать это надежным, вы должны сделать продолжительность аренды DHCP довольно короткой (например, 5 минут или 1 час, в зависимости от частоты входа в vpn), поэтому запрошенный IP все еще не занят активной арендой.
  4. поскольку ваш VPN-шлюз вряд ли будет часто меняться, вы можете использовать статическую настройку IP. Вы хотите, чтобы этот ip во все времена-зачем беспокоиться о DHCP тогда? Сделайте диапазон IP-адресов DHCP меньше и используйте часть освобожденного пространства для статического ИПС...

изменить:

так скрипт запускается несколько раз для автоматизации создания новых устройств. В этом случае вы можете вычислить IP (или MAC) по имени устройства. Пример:

PREFIX='tap'
DEV_NUM=${INTERFACE#$PREFIX}
# it's good idea to increment, because devices usually number from 0
# and ip ending with .0 and .1 generally shouldn't be used by a client
DEV_NUM=$(($DEV_NUM+2))
ifconfig ${INTERFACE} 10.0.1.${DEV_NUM} netmask 255.255.0.0
MAC_NUM=`printf "%02d\n" ${DEV_NUM}`
ip link set dev ${INTERFACE} address ba:df:ace:00:00:${MAC_NUM}

или файл mantain назначая IP к имени прибора. Пример:

ADDRESS_MAP='/etc/vpn-ip-mapping.conf'
while IFS='='; read -ra line; do
  if [ "${line[0]}" == "${INTERFACE}" ]; then
    IP_ADDRESS=${line[1]}
    ifconfig ${INTERFACE} ${IP_ADDRESS} netmask 255.255.0.0
    break
  fi
done < ${ADDRESS_MAP}
1
отвечен Marek Rost 2023-04-05 12:56

еще один.

Я нашел проблему, почему я не могу получить конфигурации от моего DHCP на устройстве, когда соединение установлено. Причина в том, что tinc-up или другие скрипты, которые tinc выполняется после создания туннеля синхронно со службами tinc, и мой dhcp-клиент выходит по таймауту перед tinc сделать рукопожатие.

чтобы решить эту проблему, я запускаю dhcp-клиент в фоновом режиме внутри tinc-up сценарий.

tinc-up скрипт теперь выглядит так это:

#!/bin/sh

ifconfig $INTERFACE hw ether fe:fd:00:00:00:00 # set interface hw address to get same IP from leases every time, connection established

dhcpcd -w $INTERFACE & # start dhcp client parralel with handshake proccess of tinc
0
отвечен ArhiChief 2023-04-05 15:13

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх