DEV Community

Ali Orhun Akkirman for Açıklab

Posted on

Örnek sFlow verisi oluşturma

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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 }
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

İ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 {}
}
Enter fullscreen mode Exit fullscreen mode

Open vSwitch yapılandırması için:

sflow {
  sampling = 500
  collector { ip = 10.100.12.13 }
  kvm {}
  ovs {}
}
Enter fullscreen mode Exit fullscreen mode

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 {}
}
Enter fullscreen mode Exit fullscreen mode

gibi yapılandırma dosyaları kullanılabilmektedir.

Top comments (1)

Collapse
 
zduygu profile image
Duygu Ölmez

Ubuntu 20.04 sistemlerde aşağıdaki bağımlılığa ihtiyaç olabiliyor.

sudo apt update
sudo apt install libc6
Enter fullscreen mode Exit fullscreen mode