我想为我的网络适配器或无线适配器创建一些虚拟MAC地址,以便可以从一台计算机或便携式计算机使用多个IP地址连接到网络。
我该怎么做?(我知道这是有可能的,因为我的一位朋友在大学里就做到了,并且在网络上拥有多个IP地址(有时多达255个))。
我想为我的网络适配器或无线适配器创建一些虚拟MAC地址,以便可以从一台计算机或便携式计算机使用多个IP地址连接到网络。
我该怎么做?(我知道这是有可能的,因为我的一位朋友在大学里就做到了,并且在网络上拥有多个IP地址(有时多达255个))。
Answers:
您不需要一个以上的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
编辑:添加提示以设置虚拟设备:
首先设置其他设备,例如:
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地址,而无需进行正式注册)。
eth0
eth0:1” 使用不同的MAC地址。假设您按照说明进行创建eth0:1
。可以肯定的是,我在系统上进行了测试。最后一个命令(ip link ...
)更改了两个“接口”的MAC地址。这意味着eth0
自身也已经获得了新的MAC地址。原因是,这ifconfig eth0:1 up
将不会创建新的链接。它只会将IP地址添加到现有IP地址。创建macvlan
链接似乎是要走的路。
这在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:我尝试弄乱“ bond”,ifenslave
但是我需要对此做更多的研究,我无法真正弄清楚。尽管我做了什么,但是在GNS3中设置了“ EtherSwitch Router”,然后macN
在一个“端”上将十个设备分配给一个“云”,然后将另一个“云”分配给了仅适用于vmware主机的适配器,因此,virtualbox的工作原理可能相同,在另一“端”,我将对此稍作讨论,看看是否可以限制macN
设备的速度以模拟“聚合”,或者是否可以将负载分布在十个连接上以实现“增加”带宽。也许如果我在Linux上将它们全部设置为txqueuelen:10。我的另一端有DragonflyBSD,我将尝试通过GNS3将其连接到我的真实路由器。
Edit2:这是一个快速脚本,可以通过dhclient获取所需的内容。它需要以根用户身份运行。因此,创建文件,然后如果可以/可以chmod 750 <script>
运行它sudo
。我这样使用它:./crazy-mac.sh 20
它接受第一个参数,并创建许多新接口,每个接口都有自己的mac和ip地址。没有健全性检查,因此请明智地使用它,或者自己添加一些;)
注意:请确保先连接普通的wlan0,否则将无法正常工作。
如何手动连接到无线ap
如果路由器上是Mac访问控制列表,则可能需要做一些嗅探才能获得路由器接受的mac地址列表。然后,您将需要编辑脚本以解析具有该列表的文件,$i
并对序列中的每个文件使用一行,而不是允许它创建随机的mac地址。
注意2:您可能希望将a sleep <N>
放入循环中的某个位置,这将顺序地启动许多“设备”,并且如果有人关注网络,则可能会引发一些危险信号。我认为在正常情况下不会弹出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上设置带宽限制,以重新创建场景并尝试再次返回。