Zrób wirtualny adres MAC

10

Chcę utworzyć wirtualne adresy MAC dla mojej karty sieciowej lub karty sieci bezprzewodowej, aby móc połączyć się z siecią za pomocą więcej niż jednego adresu IP z jednego komputera lub laptopa.

Jak mogę to zrobić? (Wiem, że to możliwe, ponieważ jeden z moich przyjaciół zrobił to na uniwersytecie i ma więcej niż jeden - czasem do 255 - adresów IP w sieci).

Moein Hosseini
źródło
musisz określić, którego systemu operacyjnego używasz, a ostatecznie, jakiej dystrybucji.
andcoz
@ Moein7tl pamiętaj, że jeśli sysadmin zmniejszy przepustowość dla każdego użytkownika, prawdopodobnie uniknie to nielegalnego pobierania plików i nada większy priorytet ważniejszemu ruchowi, jak dane wyszukiwania lub obliczenia w chmurze ... Staraj się nie wykorzystywać limitu systemu tylko po to, aby uzyskać przyzwoitą szerokość pasma.
Kiwy

Odpowiedzi:

18

Wszystko, co musisz zrobić, to

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

następnie włącz interfejs sieci wirtualnej

ifconfig eth0.1 up

a następnie opcjonalnie uzyskaj ip za pomocą dhcp z

dhclient -v eth0.1
miopenid
źródło
13

Nie potrzebujesz więcej niż jednego adresu MAC, aby mieć wiele adresów IP w jednym interfejsie sieciowym. Ta technika nosi nazwę ip aliasing .

Każdy system operacyjny ma nieco inną składnię, ale zwykle, aby ustawić różne adresy IP w tym samym interfejsie, wystarczy zrobić coś takiego:

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

Powyższy przykład działa w systemie Linux. Na BSD potrzebujesz czegoś takiego:

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
źródło
W naszej uniwersyteckiej sieci bezprzewodowej system nadaje jeden adres IP każdemu adresowi MAC w godzinach od 8:00 do 21:00, a system ogranicza każdy adres IP do maksymalnej prędkości 32 KB, jeśli mogę utworzyć wirtualny adres MAC, więc nie może wykryć mój laptop jako jeden i da mi więcej niż jeden adres IP.
Moein Hosseini
Proszę @ Moein7tl, edytuj swoje pytanie i określ, że szukasz metody przypisania więcej niż jednego adresu IP przez uniwersytecki serwer dhcp .
andcoz
4

Edycja: Dodaj wskazówkę dotyczącą konfiguracji urządzenia wirtualnego:

Najpierw skonfiguruj dodatkowe urządzenie, np .:

ifconfig eth0:1 up

Możesz dodatkowo dodać do niego adres IP. na przykład:

ifconfig eth0:1 10.0.0.20 broadcast 10.255.255.255 netmask 255.255.255.255

Jeśli naprawdę chcesz, możesz także zmienić adres MAC:

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

Zauważ, że drugi bit pierwszego bajtu musi być ustawiony tak, aby zasygnalizować lokalnie zarządzany adres (LAA) - co oznacza, że ​​ten adres MAC jest poprawny tylko lokalnie (np. W sieci przedsiębiorstwa) i może nie być unikalny na całym świecie (więc możesz przypisać własne adresy MAC bez konieczności oficjalnej rejestracji).

Nils
źródło
ale kiedy połączę się z nią z moją domową siecią bezprzewodową, może ona zmienić tylko adres mac, a mój modem nie daje mi 2 lub więcej adresów ip. Widzę tylko jeden adres mac na moich stronach modemu.
Moein Hosseini
Oczywiście najpierw musisz skonfigurować dodatkowe urządzenie wirtualne. Dlatego powiedziałem „także”. Spójrz na odpowiedź na swoje pytanie, która opisuje aliasing ip. Wolę używać do tego maski sieci 255.255.255.255. Ale nie prosiłeś o wirtualne adresy IP, a czasem wystarczy, aby urządzenie działało z MAC.
Nils
1
O ile mi wiadomo, nie możesz mieć różnych adresów MAC eth0i „et0: 1”. Zakładając, że tworzysz eth0:1zgodnie z opisem. Dla pewności przetestowałem to na swoim systemie. Ostatnie polecenie ( ip link ...) zmieniło adres MAC obu „interfejsów”. Oznacza to, że eth0sam również ma nowy adres MAC. Powodem jest to, że ifconfig eth0:1 upnie utworzy nowego linku. Dodanie tylko adresu IP do istniejącego. macvlanWydaje się, że należy utworzyć link.
JojOatXGME
3

Działa to dla mnie w systemie Linux (Kali). Może być konieczna zmiana adresów, bram lub masek sieciowych w zależności od osobistej sytuacji. Przepraszam, jeśli nie jest to potrzebne, aby następna osoba potknęła się tutaj, tak jak przed chwilą.

Gdzie <your-nicN>jest to, co widzisz z ifconfigtakich jak eth0lubwlan0

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

Tworzy to nowy „wirtualny” interfejs o nazwie mac0 i wprowadza go. Dodałem polecenie up, ponieważ po raz pierwszy pomyślałem, że to nie działa, ale sudo ip link show [tab][tab]plus podwójna karta uzupełniona listą zawierającą mac0, a następnie przystąpiłem do wyświetlania go z ifconfig i przypisania mu adresu.

Pamiętaj tylko, aby przypisać mu adres IP lub powiedzieć, aby używał dhcp

ifconfig mac0 inet 192.168.1.107 netmask 255.255.255.0 #static/manual config

lub

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

jeśli musisz przypisać bramę domyślną:

sudo ip route add default via 192.168.1.1 

Miejsce, z którego mam trochę tego, znajduje się tutaj: http://www.pocketnix.org/posts/Linux%20Networking:%20MAC%20VLANs%20and%20Virtual%20Ethernets

Edycja3: Próbowałem zadzierać z „wiązaniem”, ifenslaveale muszę się trochę więcej przestudiować, tak naprawdę nie mogłem tego pojąć. To, co zrobiłem, chociaż skonfigurowałem „EtherSwitch Router” w GNS3, a następnie przypisałem „chmurę” dziesięciu macNurządzeń na jednym „końcu”, a następnie inną „chmurę” do adaptera tylko hosta vmware, virtualbox prawdopodobnie działałby tak samo , na drugim „końcu” zamierzam trochę z tym popsuć i sprawdzić, czy mogę ograniczyć prędkość na macNurządzeniach, aby zasymulować „agregację” lub czy mogę rozłożyć obciążenie na dziesięć połączeń w celu „zwiększenia” pasmo. Może jeśli ustawię je wszystkie na txqueuelen: 10 w systemie Linux. Mam DragonflyBSD na drugim „końcu” tego, spróbuję podłączyć go do mojego prawdziwego routera przez GNS3.

Edycja2: Oto szybki skrypt, aby uzyskać tyle, ile potrzebujesz w dhclient. Musi być uruchamiany jako root. Utwórz plik, a następnie chmod 750 <script>uruchom go, sudojeśli możesz / musisz. Używam tego w ten sposób: ./crazy-mac.sh 20bierze pierwszy argument i tworzy tyle nowych interfejsów, każdy z własnym adresem mac i ip. Nie ma kontroli poczytalności, więc używaj jej mądrze lub dodaj trochę;)

Uwaga: Pamiętaj, aby najpierw połączyć się ze swoim normalnym wlan0, w przeciwnym razie to nie zadziała. how-to-connect-manual-to-a-wireless-ap Również jeśli jest to lista kontroli dostępu do systemu Mac na routerze, może być konieczne trochę wąchania, aby uzyskać listę adresów MAC akceptowanych przez router. Następnie musisz zmodyfikować skrypt, aby przeanalizować plik z tą listą i użyć wiersza dla każdego $iw sekwencji zamiast zezwalając na tworzenie losowych adresów mac.

Uwaga 2: Możesz sleep <N>gdzieś umieścić pętlę, spowoduje to sekwencyjne wywoływanie wielu „urządzeń” i prawdopodobnie podniesie czerwone flagi, jeśli ktoś zwraca uwagę na sieć. Nie sądzę, że 20 normalnych urządzeń wyskakuje w ten sposób.

#!/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

I sprowadzić je na dół: ponownie krótki skrypt ...

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

A jeśli potrzebujesz listy adresów mac, działa to z bash, gdy plik jest listą jednego adresu mac na linię w pliku.

#!/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

Edycja: Właśnie czytałem o urządzeniach „lagg” (przynajmniej dla unixa), których można użyć do agregacji wielu interfejsów w jednym interfejsie „lagg”, aby zwiększyć wydajność lub zapewnić awarie w przypadku awarii z jakiegokolwiek powodu.

Właśnie myślałem o tym, jak byłoby to użyteczne w sytuacji, w której przepustowość była ograniczona na adres mac, może być w takiej sytuacji użyta, abyś mógł wziąć wszystkie wirtualne interfejsy macN i agregować przepustowość w pojedynczy interfejs, a następnie może tun / tap to do wirtualnego hosta lub czegoś takiego. Jest to dla mnie interesujące, spróbuję ustawić limit przepustowości na moim osobistym adresie Wi-Fi na adres Mac, aby odtworzyć scenariusz i spróbować tego, wrócę.

Overloaded_Operator
źródło