Veth çalışması için, tünelin bir ucu başka bir arayüz ile köprülenmiş olmalıdır. Tüm bunları sanal olarak tutmak istediğiniz için, tünelin vm1 ucunu (vm2 tünelin diğer ucudur), brm adlı bir köprüde, musluk tipi bir sanal arabirim ile köprüleyebilirsiniz. Şimdi IP adreslerini brm'ye ve vm2'ye (sırasıyla 10.0.0.1 ve 10.0.0.2) veriyorsunuz, IPv4'ü yönlendirme yoluyla
echo 1 > /proc/sys/net/ipv4/ip_forward
tüm arayüzleri yukarı kaldırın ve çekirdeğe 10.0.0.0/24 IP adreslerine nasıl erişileceğini bildiren bir rota ekleyin. Bu kadar.
Daha fazla çift oluşturmak istiyorsanız, aşağıdaki adımları farklı alt ağlarla, örneğin 10.0.1.0/24, 10.0.2.0/24 vb. İle tekrarlayın. IPv4 iletmeyi etkinleştirdiğiniz ve çekirdek yönlendirme tablosuna uygun yollar eklediğinizden hemen birbirleriyle konuşabilecekler.
Ayrıca, kullandığınız komutların çoğunun (brctl, ifconfig, ...) eski olduğunu unutmayın: iproute2 suite tüm bunları yapmak için komutlara sahiptir, ip komutunu kullanmamın altına bakın .
Bu, veth tipindeki arayüzlerin kullanımı için doğru bir komut dizisidir :
ilk önce gerekli tüm arayüzleri yaratın,
ip link add dev vm1 type veth peer name vm2
ip link set dev vm1 up
ip tuntap add tapm mode tap
ip link set dev tapm up
ip link add brm type bridge
Dikkat edelim ki brm ve vm2'yi getirmedik çünkü IP adreslerini atamak zorunda kaldık ama onları brm'ye eklemek için gerekli olan tapm ve vm1'i getirdik. Şimdi vm1 ve tapm ara yüzlerini brm köprüsüne,
ip link set tapm master brm
ip link set vm1 master brm
şimdi köprüye ve vm2 arabirimine kalan veth arayüzüne adresler ver
ip addr add 10.0.0.1/24 dev brm
ip addr add 10.0.0.2/24 dev vm2
şimdi vm2 ve brm'yi getir,
ip link set brm up
ip link set vm2 up
Rotayı 10.0.0.0/24 alt ağına açıkça eklemenize gerek yoktur, otomatik olarak oluşturulur, ip yolu gösterisini kontrol edebilirsiniz . Bu sonuçlanır
ping -c1 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.035 m
--- 10.0.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.035/0.035/0.035/0.000 ms
Ayrıca geriye doğru da yapabilirsiniz, yani vm2'den brm'ye:
ping -I 10.0.0.2 -c1 10.0.0.1
PING 10.0.0.1 (10.0.0.1) from 10.0.0.2 : 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms
Veth türündeki NIC'lerin en kullanışlı uygulaması, Linux konteynerlerinde (LXC) kullanılan ağ ad alanıdır. Aşağıdaki gibi nnsm denilen birini başlatır
ip netns add nnsm
sonra vm2'yi ona aktarırız,
ip link set vm2 netns nnsm
Yeni ağ ad alanını lo arayüzü ile donatıyoruz (kesinlikle gerekli),
ip netns exec nnsm ip link set dev lo up
ana makinede NATting'e izin veriyoruz,
iptables -t nat -A POSTROUTING -o brm -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(eğer internete eth0 ile bağlıysanız , aksi takdirde değiştiriniz), yeni ağ ad alanında bir kabuk başlatın,
ip netns exec nnsm xterm &
ve şimdi, eğer yeni xterm'de yazmaya başlarsanız, 10.0.0.2 IP adresine sahip ayrı bir sanal makinede olduğunuzu göreceksiniz, ancak İnternete ulaşabilirsiniz. Bunun avantajı yeni ağ ad pc geri kalanı ise araçlar, örneğin, bunu bir VPN başlayabilirsiniz kendi yığını, sahip olmasıdır değil VPN üzerinde. Bu, LXC'lerin dayandığı kısıtlamadır.
DÜZENLE:
Bir hata yaptım, vm2 arayüzünü getirmek onu aşağı indirdi ve adresini temizledi. Bu nedenle, bu komutları xterm içinden eklemeniz gerekir:
ip addr add 10.0.0.2/24 dev vm2
ip link set dev vm2 up
ip route add default via 10.0.0.1
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf
ve şimdi xterm içinden gezinebilirsiniz.
ip
Komutlar ayrıca xterm'den önce yapılabilir
ip -netns nnsm addr add 10.0.0.2/24 dev vm2
ip -netns nnsm link set dev vm2 up
ip -netns nnsm route add default via 10.0.0.1
br0
kendisi kadar?