Bu yöntemler temelde farklı şeyler yapıyor. Nedenini anlamak için, katmanlı ağ modelini anlamanız gerekir. Buradaki amaçlarımız için 1., 2. ve 3. katmanlar önemlidir:
- Katman 1 fiziksel katmandır - bu, hangi kabloları kullanabileceğinizi, hangi voltaj / akım desenlerinin o kablodaki 1s ve 0'ları temsil ettiğini, bir kablonun her bir ucundaki cihazların hangi bit hızında çalıştıklarını vb.
- Katman 2, link katmanıdır - bu, kablonun her iki ucunda hangi dilin konuşacağını belirler. Bu katmandaki Ethernet cihazlarında kareler ve MAC adresleri gibi şeyler bulunur.
- Katman 3, ağ katmanıdır - bu, aygıtların doğrudan katman 2'de erişemedikleri üçüncü bir aygıta ulaşmak için başka bir aygıta doğrudan katman 2 bağlantısını nasıl kullandıklarını belirtir. Bu katmandaki aygıtların IP adresleri ve yönlendirme tabloları vardır.
MACVLAN / MACVTAP
MACVLAN, katmanı 1 veya fiziksel katmanı mevcut bir aygıtla paylaşan kendi MAC adresine sahip sanal bir katman 2 veya bağlantı katmanı aygıtı oluşturur. En açık şekilde anlaşılabilir durum, bir ağa bağlı bir Ethernet cihazınızın olduğu ve bu Ethernet cihazını temel alan bir MACVLAN cihazı oluşturduğunuzdur; Artık farklı MAC adreslerine sahip, ancak her ikisi de karelerini aynı kablo üzerinde ileten iki Ethernet "aygıtınız" var. MACVTAP hakkında biraz daha konuşacağım.
MACVLAN arayüzleri mevcut Ethernet arayüzüyle birkaç farklı şekilde etkileşime girebilir, özellikle bir diğeriyle adreslenen arayüzlerden birinde bir çerçeve belirdiğinde:
- Gelen özel modda, kare atılır; İki arabirimin birbirleriyle, sadece harici cihazlarla iletişim kurması mümkün değildir.
- Gelen Vepa'ya modunda çerçevesi diğer herhangi bir çerçevenin gibi fiziksel katman üzerinden gönderilir. Aygıtın, çerçevenin daha sonra geldiği bağlantı noktasına geri gönderilmesi gerektiğini anlayacak kadar akıllı bir anahtara takılı olması durumunda, onu gönderen aynı fiziksel katman tarafından alınacak ve daha sonra katman 2 Amaçlanan ağ arayüzüne göndermek için MAC kullanın.
- In köprü diğer yönelikse bir çerçeve bir cihazda görünen modunda, yapılmadığı kontrol edilir ve eğer öyleyse, o katmanın 1 geçmeden orada gönderilir.
- Birkaç daha belirsiz mod var.
MACVLAN arayüzlerinin önemli bir kısıtlaması olduğunu unutmayın: Adres öğrenme yeteneğine sahip değiller. Böylece bir MACVLAN arayüzünü ikinci bir fiziksel cihaza köprüleyemezsiniz ve bu ikinci fiziksel cihaza birinciden daha fazla ulaşmayı bekleyemezsiniz. Bu, orijinal Ethernet arayüzü ile çalışır, ancak kendisine bağlı bir MACVLAN arayüzü ile çalışmaz.
TUN / TAP
Bir TAP arayüzü ayrıca yeni bir sanal katman 2 cihazıdır, ancak buna bağlı hiçbir katman 1 yoktur. Bunun yerine, bir program fiziksel katmanı temsil eden bir dosya tanıtıcısını alabilir. Daha sonra ham Ethernet çerçeve verilerini bu dosya tanımlayıcısına yazabilir ve çekirdek, gerçek bir fiziksel arabirimde aldığı diğer Ethernet paketleri gibi davranır.
TAP arayüzleri ile ilgili en büyük şey, fiziksel katmanın kullanıcı modunda olmasıdır; Uygun izinlere sahip herhangi bir yazılım biti herhangi bir şekilde Ethernet çerçeveleri oluşturabilir ve bunları çekirdeğin gerçek bir fiziksel arabirim gibi gördüğü bir şeye sürükleyebilir. Bu, onları VPN'ler ve tünel açma gibi şeyler için çok faydalı kılar; ne olursa olsun hangi tür tünelleme yazılımını kullanıcı alanında yazabilir ve kareleri ağ yığınına sokmak için çekirdek alanına karışmaya gerek yoktur, sadece bir TAP cihazı oluşturun ve kareleri dosya tanımlayıcısına yazın.
TUN aygıtları, 2. katman yerine 3. katmanda çalışması dışında TAP aygıtları gibidir ve kullanıcı modu yazılımı, ham Ethernet paketleri yerine dosya tanımlayıcısına ham IP paketleri yazmak zorundadır.
MACVTAP cihazlarına geri dönersek , bunlar MACVLAN ve TAP arayüzleri arasında bir çeşit karışımdır. TAP arayüzleri gibi, bir kullanıcı modu programı bir dosya tanımlayıcısı alabilir ve içine ham Ethernet çerçeveleri yazabilir. Bir MACVLAN arayüzü gibi, bu kareler daha sonra gerçek bir Ethernet cihazının fiziksel katmanı üzerinden gönderilir. Bu, bunun yerine bir MACVLAN cihazı kullanmak için TAP cihazlarını kullanmak üzere yazılmış bir yazılımı kolayca uyarlamanıza olanak tanır.
VNET
Bu kavramsal olarak TUN / TAP ağına benzer ancak daha gelişmiş bir kontrol düzlemine (bu nedenle onu kullanan kullanıcı modu yazılımı arayüzü daha esnek bir şekilde yapılandırabilir) ve daha optimize edilmiş bir veri düzlemine sahiptir (böylece verileri sanal ağ aygıtında daha fazla taşıyabilirsiniz) etkin bir şekilde).
Bunların hepsi benzer şeyler yapar ancak biraz farklı yetenekleri vardır. Hepsi bir VM'yi bir Ethernet ağına bağlamak için kullanılabilir:
- Sanallaştırma ürünü konukdan Ethernet çerçeveleri alabilir ve bunları bir TAP cihazının dosya tanımlayıcısına yazabilir. Bu TAP cihazına ana bilgisayar tarafından kendi IP adresi atanabilir veya ana bilgisayarın IP adresini paylaşmak için Ethernet arabirimiyle birlikte bir köprüye bağlanabilir veya iptables NAT üzerinden trafik iletmek üzere yapılandırılabilir.
- Bir sanallaştırma ürünü, Ethernet'in konuğu çerçevelediğini ve bunları bir MACVTAP cihazı için dosya tanımlayıcısına yazabileceğini; bunlar daha sonra doğrudan bir Ethernet cihazının fiziksel katmanında iletilir, bu da VM'ye etkin bir "gerçek" Ethernet cihazı sağlar (bununla birlikte, köprüler gibi diğer ağ arayüzleri için MACVLAN / MACVTAP cihazları oluşturmanın mümkün olduğunu unutmayın).
- Sanallaştırma ürünü, çok verimli bir ağ oluşturmak için konuktaki bir virtio sürücüsünü ana bilgisayardaki virtio sürücüsüne bağlayabilir.