簡単な質問:1つの物理ネットワークインターフェイス(linux)で複数のMACアドレスを設定するにはどうすればよいですか?
どうして?私のISPはGWでip <-> macをチェックしています。トラフィックを「linuxbox」経由でルーティングし、別のソースIPで転送したいと思っています。
Ip <-> macをチェックせずに、eth0、eth0:0を使用しますが、この状況では、すべてのIPに一意のMACアドレスが必要です。
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もかなりバグがあります。
ブリッジと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コマンドリファレンスを参照することです。私はそれを試したことがない。
tap
デバイスまたは必要なMACアドレスとIPを持つ他の仮想イーサネットデバイスを作成し、それらをeth0で1つのブリッジに接続してみてください。
vconfig を使用して、同じ物理イーサネット上に、それぞれ異なるMACアドレスを持つ複数のVLANアドレスを作成できるようです。