sFlow, bilgisayar ağlarındaki trafik akışının temel bilgilerini belirli bir adrese yönlendirmeyi sağlayan ve Netflow alternatifi bir protokoldür. Bu konuda daha detaylı bilgi için eski bir yazımızı inceleyebilirsiniz.
NetFlow, sFlow, IPFIX ve ötesi
sFlow kaynağı oluşturma servisi
sFlow, genellikle açık kaynak kodlu sistemlerde kullanılmasına rağmen, bir çok Switch ve Router üreticisi tarafından da Netflow ve IPFIX alternatifi olarak kullanılmaktadır. Bu kapsamda kurumsal üreticilerin dışında temel bir uygulama olan "host-sflow" uygulaması ile de ağ trafiğini yönlendirebilmektesiniz.
Öncelikle bu uygulama istediğiniz bir işletim sistemi için indirilir. Windows ve çeşitli Linux sistemlerinde çalışan sistem için Ubuntu 22.04 üzerindeki bir örnekten bahsedeceğim.
wget https://github.com/sflow/host-sflow/releases/download/v2.0.38-1/hsflowd-ubuntu22_2.0.38-1_amd64.deb
sudo apt install ./hsflowd-ubuntu22_2.0.38-1_amd64.deb
Bu şekilde servisimiz kurulumu yapılmıştır.
Servisin yapılandırılması ve trafiği akıtmak
Servisin Linux sistemlerde yapılandırması için bir çok alternatif mümkündür. Linux üzerindeki bir interface bacağının trafiğinin yönlendirilmesi, Open vSwitch yapılandırılması, KVM üzerinde sanallaştırma ortamının trafiğinin yönlendirilmesi gibi farklı yapılar bulunmaktadır.
Ben en temel olarak cihazdaki bir ağ arabirimi için çözümü oluşturacağım. Bunun için öncelikle aşağıdaki komut ile hangi ağ arabirimini izleyecekseniz bunu görmelisiniz.
ip a
Bu çıktıda örneğin eno1, enp0s1, eth0 gibi isimlerden doğru olan trafik belirlenir. Ve bu değer aşağıdaki gibi /etc/hsflowd.conf dosyasının içerisinde başka bir veri olmayacak şekilde tanımlanır.
sflow {
collector { ip=192.168.1.43 udpport=6343 }
pcap { dev = eno1 }
}
Bu yapılandırma satırlarında collector yazan yer için hangi sflow toplayıcısına gönderecekseniz ilgili IP ve udpport bilgisi girilmesi gerekecektir.
Üst kısımda bahsettiğim gibi pcap ile başlayan satırda da cihaz ismi olarak eno1 veya sizin "ip a" komutunuzun çıktısınız yazmalısınız.
Bu işlemleri tammaladığınızda aşağıdaki komut ile servisi yeniden başlatmanız gerekmektedir.
systemctl restart hsflowd
İstediğiniz durumda enable komutu ile servisi makine yeniden başlatıldığında açılacak hale getirebilirsiniz.
Sonuç
Bu adımdan sonra eno1 ağ arabirimindeki tüm trafik, 192.168.1.43 IP adresindeki 6343 portuna doğru akmaya başlayacaktır.
Diğer ayarlar hakkında
Resmi sflow sayfasındaki yapılandırma ayarlarına göre klasik Linux bridge ağ yapısı kullananlar için;
sflow {
collector { ip = 10.100.12.13 }
pcap { dev = virbr0 }
kvm {}
}
Open vSwitch yapılandırması için:
sflow {
sampling = 500
collector { ip = 10.100.12.13 }
kvm {}
ovs {}
}
Veya Docker üzerindeki yapılandırma için:
sflow {
agent.CIDR = 10.0.0.0/8
polling = 10
sampling = 1000
collector { ip = 10.100.12.13 }
collector { ip = 10.122.1.2 }
collector { ip = 10.144.1.2 UDPPort=6344 }
pcap { dev = docker0 }
pcap { dev = docker_gwbridge }
docker {}
}
gibi yapılandırma dosyaları kullanılabilmektedir.