制作一些虚拟MAC地址

制作一些虚拟MAC地址

我想为我的网络适配器或无线适配器创建一些虚拟 MAC 地址,这样我就可以从一台计算机或笔记本电脑连接到具有多个 IP 地址的网络。

我该怎么做? (我知道这是可能的,因为我的一位朋友在大学里做过这件事,并且在网络上拥有多个 - 有时多达 255 个 - IP 地址)。

答案1

您需要做的就是

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

然后打开虚拟网络接口

ifconfig eth0.1 up

然后可以选择通过 dhcp 获取 IP

dhclient -v eth0.1

答案2

您不需要多个 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

答案3

编辑:添加设置虚拟设备的提示:

首先设置一个附加设备,例如:

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 地址,无需正式注册)。

答案4

这对我在 Linux (Kali) 上有用。您可能需要根据您的个人情况更改地址、网关或网络掩码。抱歉,如果您不需要这个,那么下一个人就会在这里绊倒,就像我刚才所做的那样。

<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但我需要对此进行更多研究,我真的无法弄清楚。我所做的虽然在 GNS3 中设置了一个“EtherSwitch 路由器”,然后macN在一个“端”分配了 10 个设备的“云”,然后将另一个“云”分配给了 vmware 仅主机适配器,virtualbox 可能会工作相同,在另一“端”,我将对此进行一些处理,看看是否可以限制设备的速度macN来模拟“聚合”,或者是否可以将负载分布在十个连接上以“增加”带宽。也许如果我在 Linux 上将它们全部设置为 txqueuelen:10 。我的另一“端”有 DragonflyBSD,我将尝试通过 GNS3 将它连接到我的真实路由器。

Edit2:这是一个快速脚本,可以使用 dhclient 获取所需的数量。它需要以 root 身份运行。因此,创建该文件,然后chmod 750 <script>运行它(sudo如果可以/必须的话)。我这样使用它:./crazy-mac.sh 20它采用第一个参数并创建许多新接口,每个接口都有自己的 mac 和 ip 地址。没有健全性检查,因此请明智地使用它,或者自己添加一些;)

注意:请确保先连接到正常的 wlan0,否则将无法工作。 如何手动连接到无线 AP 另外,如果它们是路由器上的 mac 访问控制列表,您可能需要进行一些嗅探以获得路由器接受的 mac 地址列表。然后,您需要编辑脚本来解析包含该列表的文件,并为$i序列中的每个文件使用一行,而不是允许它创建随机 MAC 地址。

注意2:您可能想sleep <N>在循环中的某个地方放置一些a,这将依次调出许多“设备”,并且如果有人关注网络,可能会引发一些危险信号。我认为正常情况下不会有 20 台设备以这种方式出现。

#!/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 地址列表,则当文件是文件中每行一个 mac 地址的列表时,这可以与 bash 一起使用。

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

编辑:我刚刚读到有关“lagg”设备(至少对于unix)的信息,该设备可用于将多个接口聚合到一个“lagg”接口中,以提高性能或在某个接口因某种原因出现故障时提供后备。

我只是在想这在每个 mac 地址的带宽受到限制的情况下会有什么用处,它可能可以在这种情况下使用,这样您就可以采用所有许多虚拟 macN 接口并将带宽聚合到一个单个接口,然后可能将其调整/点击到虚拟主机或其他东西。这对我来说很有趣,我将尝试为每个 mac 地址的个人 wifi 设置带宽限制,以重新创建场景并尝试此操作,我会回来的。

相关内容