Сделайте виртуальный MAC-адрес

10

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

Как мне это сделать? (Я знаю, что это возможно, потому что один из моих друзей сделал это в университете и имеет более одного - иногда до 255 - IP-адресов в сети).

Моин Хоссейни
источник
Вы должны указать, какую операционную систему вы используете и, в конце концов, какой дистрибутив.
andcoz
@ Moein7tl помните, что если sysadmin уменьшит пропускную способность для каждого пользователя, вероятно, следует избегать нелегальной загрузки людей и уделять больше внимания более важному трафику, такому как данные поиска или облачные вычисления ... Постарайтесь не использовать ограничения системы только для того, чтобы получить приличную ширину полосы.
Kiwy

Ответы:

18

Все, что вам нужно сделать, это

ip link add link eth0 address 00:11:11:11:11:11 eth0.1 type macvlan

затем включите интерфейс виртуальной сети

ifconfig eth0.1 up

а затем при желании получить IP через DHCP с

dhclient -v eth0.1
myopenid
источник
13

Вам не нужно больше одного MAC-адреса, чтобы иметь несколько IP-адресов на одном сетевом интерфейсе. Эта техника называется IP-псевдонимами .

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

ifconfig eth0 192.168.100.200 netmask 255.255.255.0
ifconfig eth0:1 192.168.120.200 netmask 255.255.255.0
ifconfig eth0:2 192.168.130.200 netmask 255.255.255.0

Пример выше работает на Linux. На BSD вам нужно что-то вроде:

ifconfig lnc0 192.168.100.200 netmask 255.255.255.0
ifconfig lnc0 192.168.120.200 netmask 255.255.255.0 alias
ifconfig lnc0 192.168.130.200 netmask 255.255.255.0 alias
andcoz
источник
В нашей университетской беспроводной сети система выдает один ip-адрес каждому mac-адресу с 8:00 до 21:00, и система ограничивает каждый IP-адрес максимальной скоростью до 32 КБ, если я могу создать виртуальный mac-адрес, поэтому она не может обнаружить мой ноутбук как один, и он даст мне более одного IP-адреса.
Моин Хоссейни
Пожалуйста, @ Moein7tl, отредактируйте свой вопрос и укажите, что вы ищете метод для назначения более одного ip-адреса вашим dhcp- сервером университета .
andcoz
4

Редактировать: Добавить подсказку для настройки виртуального устройства:

Сначала настройте дополнительное устройство, например:

ifconfig eth0:1 up

Вы можете дополнительно добавить IP к нему. например:

ifconfig eth0:1 10.0.0.20 broadcast 10.255.255.255 netmask 255.255.255.255

Если вы действительно хотите, вы также можете изменить MAC-адрес:

ip link set eth0:1 address 02:73:53:00:ca:fe

Обратите внимание, что второй бит первого байта должен быть установлен, чтобы сигнализировать о локально управляемом адресе (LAA), который говорит, что этот MAC-адрес действителен только локально (например, в вашей корпоративной сети) и может не быть уникальным во всем мире (поэтому Вы можете назначать свои собственные MAC-адреса без необходимости их официальной регистрации).

Nils
источник
но когда я подключаюсь к своей домашней беспроводной сети, он может изменить только MAC-адрес, и мой модем не дает мне 2 или более IP-адреса. Я вижу только один MAC-адрес на страницах моего модема.
Моин Хоссейни
Конечно, сначала нужно настроить дополнительное виртуальное устройство. Вот почему я сказал «также». Посмотрите на ответ на ваш вопрос, который описывает IP-алиасинг. Я предпочитаю использовать маску 255.255.255.255 для них. Но вы не запрашивали виртуальные IP-адреса, и иногда этого достаточно, чтобы устройство работало с MAC.
Нильс
1
Насколько я знаю, у вас не может быть разных MAC-адресов для eth0и «0: 1». Предполагая, что вы создаете, eth0:1как описано. Чтобы быть уверенным, я проверил это на моей системе. Последняя команда ( ip link ...) изменила MAC-адрес обоих «интерфейсов». Это означает, что eth0сам по себе получил новый MAC-адрес. Причина в том, что ifconfig eth0:1 upне создаст новую ссылку. Это только добавит IP-адрес к существующему. Создание macvlanссылки, кажется, путь.
JojOatXGME
3

Это работает для меня на Linux (Кали). Вам может потребоваться изменить адреса, шлюзы или сетевые маски в зависимости от вашей личной ситуации. Извините, если вам это не нужно, потому что следующий человек споткнется здесь, как я сделал несколько минут назад.

Где <your-nicN>то, что вы видите, ifconfigнапример, eth0илиwlan0

sudo ip link add link <your-nicN> mac0 type macvlan && sudo ifconfig mac0 up

Это создает новый «виртуальный» интерфейс с именем mac0 и вызывает его. Я добавил команду up, потому что сначала мне показалось, что это не сработало, но sudo ip link show [tab][tab]плюс двойная вкладка со списком, включающим mac0, затем я перешел к ifconfig и назначил ему адрес.

Просто не забудьте назначить ему IP-адрес или сказать ему использовать DHCP

ifconfig mac0 inet 192.168.1.107 netmask 255.255.255.0 #static/manual config

или

dhclient mac0 # For a dhcp-client, to get ip from router.

если вам нужно назначить шлюз по умолчанию:

sudo ip route add default via 192.168.1.1 

Место, откуда я получил это, находится здесь: http://www.pocketnix.org/posts/Linux%20Networking:%20MAC%20VLANs%20and%20Virtual%20Ethernets

Edit3: я пытался возиться с "связью", ifenslaveно мне нужно немного больше изучить это, я не мог понять это. Что я сделал, хотя установил «EtherSwitch Router» в GNS3, а затем назначил «облачное» десять macNустройств на одном «конце», а затем другое «облако» адаптеру только для хоста vmware, virtualbox, вероятно, будет работать так же с другой стороны, я собираюсь немного поиграться с этим и посмотреть, смогу ли я ограничить скорость на macNустройствах для имитации «агрегации» или могу ли я распределить нагрузку по десяти соединениям для «увеличенного» пропускная способность. Может быть, если я установлю их все на txqueuelen: 10 в Linux. У меня есть DragonflyBSD на другом «конце» этого, я попытаюсь подключить его к моему реальному маршрутизатору через GNS3.

Edit2: вот быстрый скрипт, чтобы получить столько, сколько вам нужно с dhclient. Это должно быть запущено от имени пользователя root. Итак, создайте файл, затем chmod 750 <script>запустите его, sudoесли можете / должны. Я использую его следующим образом: ./crazy-mac.sh 20он принимает первый аргумент и создает столько новых интерфейсов, каждый из которых имеет свой собственный mac и ip-адрес. Нет никаких проверок здравомыслия, так что используйте это с умом, или добавьте немного самостоятельно;)

Примечание. Убедитесь, что вы сначала подключились к обычному wlan0, иначе это не сработает. how-to-connect-manual-to-a-wireless-ap Также, если это список контроля доступа Mac на маршрутизаторе, вам, возможно, понадобится сделать некоторый анализ, чтобы получить список MAC-адресов, принятых маршрутизатором. Затем вам нужно будет отредактировать скрипт, чтобы проанализировать файл с этим списком и использовать строку для каждого $iв последовательности, вместо того, чтобы позволять создавать случайные mac-адреса.

Примечание 2. Возможно, вы захотите поместить sleep <N>где-нибудь цикл в цикл, это вызовет много «устройств» последовательно и, вероятно, поднимет некоторые красные флажки, если кто-то обратит внимание на сеть. Я не думаю, что некоторые устройства будут появляться таким образом при нормальных обстоятельствах.

#!/bin/sh
## crazy-mac.sh
for i in $(seq ${1}); do
    ip link add link wlan0 mac${i} type macvlan && \
    ifconfig mac${i} up && \
    dhclient mac${i};
done

И чтобы сбить их с ног: опять быстрый сценарий ...

#!/bin/sh
## crazy-down.sh
for i in $(seq ${1}); do
    ifconfig mac${i} down && \
    ip link delete mac${i};
done

И если вам нужен список MAC-адресов, это работает с bash, когда файл представляет собой список из одного MAC-адреса на строку в файле.

#!/bin/bash
## crazy-mac2.sh
## Usage : crazy-mac2.sh <N> </path/to/mac-list.txt>
MACLIST=($(cat ${2}))

# This is for testing, comment this and uncomment out the other for loop
# if this one works the other should also.
for i in $(seq ${1}); do
    echo "mac${i} :  ${MACLIST[${i}-1]}"; done

#for i in $(seq ${1}); do
#    ip link add link wlan0 mac${i} address ${MACLIST[${i}-1]} type macvlan && \
#    ifconfig mac${i} up && \
#    dhclient mac${i};
#done

unset MACLIST

Редактировать: я только что читал об устройствах с задержкой (по крайней мере, для Unix), которые можно использовать для объединения нескольких интерфейсов в единый интерфейс с задержкой, чтобы повысить производительность или обеспечить запасные варианты на случай, если по какой-либо причине отключиться.

Я просто думал о том, как это было бы полезно в ситуации, когда пропускная способность была ограничена для каждого MAC-адреса, и его можно было бы использовать в такой ситуации, чтобы вы могли использовать все многочисленные виртуальные интерфейсы MacN и объединить пропускную способность в один интерфейс, а затем, возможно, настроить / подключить это к виртуальному хосту или что-то. Это интересно для меня, я попытаюсь установить ограничение пропускной способности для моего личного Wi-Fi на Mac-адрес, чтобы воссоздать сценарий и попытаться это, я вернусь.

Overloaded_Operator
источник