2011-11-30
■[linux]macvlanを使ってみる
$ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:1d:7d:06:fd:97 inet addr:163.215.189.111 Bcast:163.215.189.127 Mask:255.255.255.192 inet6 addr: fe80::21d:7dff:fe06:fd97/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1225 errors:0 dropped:0 overruns:0 frame:0 TX packets:1285 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:551246 (551.2 KB) TX bytes:232794 (232.7 KB) Interrupt:42 Base address:0xa000
ここに、こんなeth0があったとします。
$ sudo ifconfig eth0:0 10.0.0.3 up $ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:1d:7d:06:fd:97 inet addr:163.215.189.111 Bcast:163.215.189.127 Mask:255.255.255.192 inet6 addr: fe80::21d:7dff:fe06:fd97/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1358 errors:0 dropped:0 overruns:0 frame:0 TX packets:1419 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:573562 (573.5 KB) TX bytes:243999 (243.9 KB) Interrupt:42 Base address:0xa000 $ ifconfig eth0:0 eth0:0 Link encap:Ethernet HWaddr 00:1d:7d:06:fd:97 inet addr:10.0.0.3 Bcast:10.255.255.255 Mask:255.0.0.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 Interrupt:42 Base address:0xa000
こんな感じにサブインタフェースを作って2個目のIPを振る事は出来ますが、これだとIPは違うけどMACアドレスは同じです。
ここでdhclientをeth0:0に対して走らせても同じMACアドレスじゃ新しいIPはもらえないでしょう。
一方、macvlanを使うと…
$ sudo ip link add dev macvlan0 link eth0 type macvlan $ sudo ifconfig macvlan0 up macvlan0 Link encap:Ethernet HWaddr fe:7b:40:b0:fc:f8 inet6 addr: fe80::fc7b:40ff:feb0:fcf8/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:9 errors:0 dropped:0 overruns:0 frame:0 TX packets:21 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1780 (1.7 KB) TX bytes:6383 (6.3 KB)
あら不思議、新しいMACアドレスの付いたインタフェースが作れちゃいました。
$ dmesg|tail -n1 [ 316.021862] device eth0 entered promiscuous mode
eth0をpromiscuousモードに切り替える事で、「fe:7b:40:b0:fc:f8」宛のパケットを受け取っているようです。
$ sudo dhclient macvlan0 $ sudo ifconfig macvlan0 macvlan0 Link encap:Ethernet HWaddr e6:52:55:96:f1:e7 inet addr:163.215.189.112 Bcast:163.215.189.127 Mask:255.255.255.192 inet6 addr: fe80::e452:55ff:fe96:f1e7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:14 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:708 (708.0 B) TX bytes:4026 (4.0 KB)
今度はMACアドレスが異なるので新しいIPをDHCPサーバからもらうことも出来ちゃいますね。
この機能、普通にLinux上で生きていても何の用途も無さそうですが、LXCで使われているようですし、後付で実装されたmacvtapを使えばKVM/QEMUからも使えます。
トラックバック - http://d.hatena.ne.jp/syuu1228/20111130/1322603234
リンク元
- 105 http://www.google.co.jp/url?sa=t&rct=j&q=macvtap&source=web&cd=3&ved=0CC0QFjAC&url=http://d.hatena.ne.jp/syuu1228/20111130/1322610529&ei=_HrVTqXXC4j3mAW67olK&usg=AFQjCNH37NpdgPdZWGNGPHsmzLBB2zyhVA
- 60 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cts=1331134409394&ved=0CDkQFjAC&url=http://d.hatena.ne.jp/syuu1228/20111130/1322610529&ei=gX9XT7TOJezGmQWW94SyDw&usg=AFQjCNH37NpdgPdZWGNGPHsmzLBB2zyhVA
- 53 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cts=1331277764497&ved=0CD0QFjAB&url=http://d.hatena.ne.jp/syuu1228/20111130/1322610529&ei=u69ZT_yBDeHQmAWXrNDkBQ&usg=AFQjCNH37NpdgPdZWGNGPHsmzLBB2zyhVA&sig2=d4887YQmYi3cNkBdX8EkL
- 40 http://t.co/s7bUg1nR
- 34 http://www.google.co.jp/url?sa=t&rct=j&q=macvtap&source=web&cd=2&ved=0CCcQFjAB&url=http://d.hatena.ne.jp/syuu1228/20111128/1322504118&ei=_HrVTqXXC4j3mAW67olK&usg=AFQjCNHIiXlYnEHtCkvgmt0He9Qqxhmtug
- 28 http://www.google.co.jp/url?sa=t&rct=j&q=macvtap&source=web&cd=4&ved=0CDMQFjAD&url=http://d.hatena.ne.jp/syuu1228/20111130/1322608845&ei=_HrVTqXXC4j3mAW67olK&usg=AFQjCNENxmCxxyFd4xe2odV8HUDU2IOkPA
- 26 http://htn.to/h5bvqm
- 26 http://htn.to/wY97rf
- 26 http://www.google.co.jp/url?sa=t&rct=j&q=macvlan&source=web&cd=2&ved=0CGgQFjAB&url=http://d.hatena.ne.jp/syuu1228/20111130/1322603234&ei=7jqnT8u6POKimQXW2bnhBA&usg=AFQjCNHdJA9C65JgeqsJ4d9aQWBZ7Z3X4Q
- 23 http://bit.ly/swnqf6