web-dev-qa-db-ja.com

1つの物理ネットワークインターフェイス上の複数のMACアドレス(Linux)

簡単な質問:1つの物理ネットワークインターフェイス(linux)で複数のMACアドレスを設定するにはどうすればよいですか?

どうして?私のISPはGWでip <-> macをチェックしています。トラフィックを「linuxbox」経由でルーティングし、別のソースIPで転送したいと思っています。

Ip <-> macをチェックせずに、eth0、eth0:0を使用しますが、この状況では、すべてのIPに一意のMACアドレスが必要です。

21
grapefruyt

Macvlanを使用して、異なるMACアドレスを持つ複数の仮想インターフェイスを作成できます。

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

理論的にはそれで十分ですが、ある時点でカーネルで何かが壊れ、すべてに対して1つのMACを使用することになります。その状態が何であるかはわかりません。うまくいけば、修正されました。

そうでない場合は、arptablesを使用して、出力インターフェースに基づく出力または宛先IPに基づく入力でMACアドレスを書き換えることができます。

arptables -A OUT -o eth0.1 --arhln 06 -j mangle --mangle-hw-s 00:11:11:11:11:11
arptables -A OUT -o eth0.2 --arhln 06 -j mangle --mangle-hw-s 00:22:22:22:22:22
arptables -A IN -d 192.168.1.1 --arhln 06 -j mangle --mangle-hw-d 00:11:11:11:11:11
arptables -A IN -d 192.168.1.2 --arhln 06 -j mangle --mangle-hw-d 00:22:22:22:22:22

残念ながら、私の経験ではarptablesもかなりバグがあります。

30
eater

ブリッジとTAPインターフェイスが同じMACアドレスを共有するのは、ブリッジがインターフェイスにバインドされるまで、MACがないためです。 BRCTLを使用してブリッジを作成し、「brctl show」を実行すると、ブリッジに空のポートがあることがわかります(それにバインドされたインターフェースはありません)当然、TAP0をbr0にバインドすると、同じMACとして表示されます。説明のために、テストブリッジを作成しました。

#brctl addbr testbr0

[root @ stooge etc]#brctl show testbr0 
 bridge name bridge id STP enabled interfaces 
 testbr0 8000.000000000000いいえ

3つのテストTAPSを作成しました。 「brctl showmacs testbr0」からの出力。

[root @ stooge etc]#brctl showmacs testbr0 
 port mac addrはローカルではありませんか?エージングタイマー
 1 86:51:b6:95:0e:b6はい0.00 
 2 86:58:63:c6:d4:e7はい0.00 
 3 8a:a7: fa:17:c5:12はい0.00

ご覧のとおり、各ブリッジポートには一意のMACアドレスがあり、ブリッジは最初のバインドされたインターフェイスとしてそのMACを表示する必要があります。物理ネットワークインターフェイスをブリッジする場合、イーサネットブリッジはそのMACアドレスを継承し、すべての仮想インターフェイスを下に移動します。 eth0をテストブリッジにバインドする例。

[root @ stooge etc]#brctl showmacs testbr0 
 port mac addrはローカルではありませんか?エージングタイマー
 4 AA:BB:CC:DD:EE:FFはい0.00 
 1 86:51:b6:95:0e:b6はい0.00 
 2 86:58: 63:c6:d4:e7はい0.00 
 3 8a:a7:fa:17:c5:12はい0.00

再度「brctl show」を使用します。

[root @ stooge etc]#brctl show 
 bridge name bridge id STP enabled interfaces 
 testbr0 8000.00aabbccddee no eth0 
 tap00 
 tap01 
 tap02 

eth0がまだポート4にあるにもかかわらず、TAPインターフェイスは1つ下に移動しています。一意のMACアドレスがまだあります。イーサネットブリッジがソースルートインターフェイスにバインドされている場合、IPアドレスまたはDHCPを使用することはできません。その価値については、ソースルートインターフェイスをブリッジすると、「非ローカル」MACアドレスが表示されます。これはネクストホップルータのMACアドレスです。 RedHatでは、IFCONFIGを使用してソースIPを指定するオプションがあります。私の最初のオプションは、ソースIPを指定できると思うので、IPコマンドリファレンスを参照することです。私はそれを試したことがない。

4
Lars Bailey

tapデバイスまたは必要なMACアドレスとIPを持つ他の仮想イーサネットデバイスを作成し、それらをeth0で1つのブリッジに接続してみてください。

3
gelraen

vconfig を使用して、同じ物理イーサネット上に、それぞれ異なるMACアドレスを持つ複数のVLANアドレスを作成できるようです。

0
Phil Hollenback