web-dev-qa-db-ja.com

仮想MACアドレスを作成する

ネットワークアダプターまたはワイヤレスアダプターにいくつかの仮想MACアドレスを作成したいので、1台のコンピューターまたはラップトップから複数のIPアドレスでネットワークに接続できます。

どうすればできますか? (私の友人の1人が大学でそれを行っており、ネットワークに複数のIPアドレス(場合によっては最大255)を持っているため、それが可能であることを知っています)。

10
Moein Hosseini

あなたがする必要があるのは

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
18
myopenid

1つのネットワークインターフェイスで複数のIPアドレスを使用するために、複数のMACアドレスは必要ありません。この手法はip aliasingと呼ばれます。

各オペレーティングシステムの構文は少し異なりますが、通常、同じインターフェイスに異なる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
13
andcoz

編集:仮想デバイスを設定するためのヒントを追加します。

最初に追加のデバイスをセットアップします。例:

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)を通知するために、最初のバイトの2番目のビットを設定する必要があることに注意してください。これは、このMACアドレスはローカルでのみ有効で(たとえば、エンタープライズネットワーク内)、世界中で一意ではない可能性があることを示します(したがって自分でMACアドレスを割り当てることができます。正式に登録する必要はありません)。

4
Nils

これはLinux(Kali)で私のために働いています。個人的な状況に基づいて、アドレス、ゲートウェイ、またはネットマスクを変更する必要がある場合があります。これが必要ない場合は、申し訳ありませんが、少し前に行ったように、次の人がここでつまずきます。

ここで、<your-nicN>は、eth0wlan0などのifconfigから表示されるものです

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ルーター」をセットアップし、「クラウド」の10個のmacNデバイスを1つの「エンド」に割り当て、次に別の「クラウド」をVMwareホストのみのアダプターに割り当てました。 virtualboxはおそらく同じように機能しますが、もう一方の「エンド」では、少しいじって、macNデバイスの速度を制限して「集約」をシミュレートできるかどうか、または「増加した」帯域幅のために、10個の接続に負荷を分散できます。 Linuxでそれらすべてをtxqueuelen:10に設定するとします。私はこれのもう一方の「終わり」にDragonflyBSDを持っています。GNS3を介して実際のルーターに接続しようとします。

Edit2:dhclientで必要な数だけ起動する簡単なスクリプトを次に示します。ルートとして実行する必要があります。したがって、ファイルを作成し、chmod 750 <script>を実行し、可能であれば、Sudoを指定して実行します。私はそれを次のように使用します:./crazy-mac.sh 20最初の引数を取り、それぞれ独自のMACアドレスとIPアドレスを持つ多くの新しいインターフェイスを作成します。健全性チェックはないので、賢く使うか、自分で追加してください;)

注:最初に通常のwlan0に接続してください。そうしないと機能しません。 how-to-connect-manually-to-a-wireless-ap また、ルーターのMACアクセスコントロールリストの場合は、いくつかのスニッフィングを行って、承認されたMACアドレスのリストを取得する必要がある場合があります。ルータ。次に、スクリプトを編集して、そのリストを含むファイルを解析し、ランダムなMACアドレスを作成する代わりに、シーケンス内の各$iの行を使用する必要があります。

注2:いくつかの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アドレスのリストが必要な場合、ファイルがファイルの1行あたり1つの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

編集:私は、複数のインターフェイスを単一の「ラグ」インターフェイスに集約してパフォーマンスを向上させるか、何らかの理由でダウンした場合にフォールバックを提供するために使用できる「ラグ」デバイス(少なくともUNIXの場合)について読んでいました。

MACアドレスごとに帯域幅が制限されている状況でこれがどのように役立つかを考えていたところ、そのような状況で使用できるため、多くの仮想macNインターフェイスをすべて使用して帯域幅を単一のインターフェース、そしておそらくそれを仮想ホストまたは何かに調整/タップします。これは私にとって興味深いものです。個人のwifiのMACアドレスごとに帯域幅の制限を設定してシナリオを再現し、これを試してみます。

3