0

Network namespace (Ağ isim alanı) ve cgroups, yazılım kapsayıcılığı (Docker) konusundaki yeni trendin çoğunun temel çekirdek teknolojilerinden ikisidir. Basitçe ifade etmek gerekirse, cgroups bir ölçüm ve sınırlama mekanizmasıdır, bir sistem kaynağının (CPU, bellek) ne kadarını kullanabileceğinizi kontrol ederler. Öte yandan, network namespace görebileceğiniz şeyleri sınırlar.

Network namespace ler fiziksel ağ altyapısından bağımsız olarak kendi ağ yapılarına sahipmiş gibi çalışırlar.

Bir örnekle açıklamaya çalışalım;

sudo ip netns add elvan

Yukarıdaki komut ile elvan isminde network namespace oluşturdum.

Oluşturduğumuz namespace si kontrol ediyoruz.

Image for post

Daha önce de belirtildiği gibi, bir namespace kendi ağ kaynaklarını içerir: arayüzler, yönlendirme tabloları, vb.

Şimdi oluşturduğumuz bu elvan isimli namespace in içinde ağ arayüzlerini listelemek için ip a komutunu çalıştıralım. Bunun için exec parametresini kullanacağız.

sudo ip netns exec elvan ip a

Image for post

lo arayüzümüz down gözükmekte gözükmekte . Lo arayüzümüzü aşağıdaki komut yardımıyla açalım.

sudo ip netns exec elvan ip link set lo up

Image for post

Artık ağ arayüzümüz aktif ve ip adresi 127.0.0.1

Şimdi sanal bir ağ arayüz çifti oluşturularak bu oluşturduğumuz bu kartlar üzerinden internete çıkacağız.

sudo ip link add deneme-in type veth peer name deneme-out

Image for post

Resimde görüldüğü gibi ağ arayüz çifti oluştu.

Şimdi daha önceden oluşturduğumuz elvan arayüzüne deneme-in arayüzünü bağlayacağız.

Image for post

Artık ip a komutunun çıktında deneme-in ağ arayüzünü göremediğinizi fark edeceksinizdir. Çünkü deneme-in arayüzü namespace de tanımlanmış oldu.

Şimdi bu oluşturulan arayüzlere ip ataması gerçekleştirerek konuşmalarını sağlayalım.

İlk başta ana sistemde router görevi gören ağ arayüzüne ip ataması gerçekleştiriyoruz.

sudo ip link add deneme-in type veth peer name deneme-out

Image for post

Şimdi bağladığımız ağ arayüzüne ip ataması gerçekleştireceğiz.

sudo ip link add deneme-in type veth peer name deneme-out

Image for post

Ağ arayüzlerimiz fark ettiğiniz üzere DOWN olarak gözüküyor. Ağ arayüzlerimizin durumunu UP olarak değiştirelim.

sudo ip netns exec elvan ip link set deneme-in up

sudo ip link set deneme-out up

Image for post

Şimdi bu iki arayüz aralarında konuşabiliyor mu test edelim.

sudo ip netns exec elvan ping 192.168.1.1 -c 5

Image for post

Şimdi aklınıza şu gelebilir senin modemin router’ı192.168.1.1 değil mi? Hayır değil! Çünkü bu yazı telefon internetinden yazılmıştır. Telefonun dnsmasq üzerinden bana vermiş gateway 192.168.43.1 dir.

Image for post

Zaten istesekte atamazdık. Çünkü bu ağ arayüzleri sadece kendi aralarında konuşabilir. İnternete çıkamazlar . Şimdi deneme-out ağ kartını wlp2s0 üzerinden köprüleyerek dışarıya çıkmasını sağlayacağız.

Şimdi deneme-out arayüzündeki ip adresini silelim ve köprü arayüzü oluşturalım.

sudo ip addr delete 192.168.1.1/24 dev deneme-out

Köprü arayüzünü oluşturalım.

sudo ip link add kopru type bridge

Şimdi deneme-out arayüzünü kopru arayüzüne bağlayalım.

sudo ip link set deneme-out master kopru

Image for post

Şimdi kopru arayüzüne deneme-out taki ip adresini verelim.

sudo ip addr add 192.168.1.1/24 dev kopru

deneme-out ve kopru kartını tekrar UP yapalım

sudo ip link set kopru up

sudo ip link set deneme-out up

sanal oluşturduğumuz elvan arayüzünü bağlı olduğu köprü arayüzünü namespace alanına ekleyelim

sudo ip netns exec elvan ip route add default via 192.168.1.1

Linux çekirdeğindeki ip yönlendirmeyi aktif hale getirelim.

echo ‘1’ | sudo tee /proc/sys/net/ipv4/ip_forward

Son olarak iptables üzerinden arayüzlerimizin yönlerdirmesini yapıyoruz. Ben wlp2s0 kartının üzerinden çıktığım için komutu aşağıdaki gibi belirttim.

sudo iptables -t nat -A POSTROUTING -o kopru -j MASQUERADE

sudo iptables -t nat -A POSTROUTING -o wlp2s0 -j MASQUERADE

Ve artık elvan arayüzü üzerinden internete çıkabiliyoruz.

Image for post

Image for post

Kaynak :https://medium.com/@bilselergun/network-namespace-nedir-%C3%B6rnek-kullan%C4%B1m-d9e7f37a8bb2

Proxmox Network Yapılandırması

Previous article

Linux Felsefesi

Next article

You may also like

Comments

Bir Cevap Yazın

More in Ağ Network