Konu şu arkadaşlar ortamlardan yani Open shift ortamınız içinde bulunan Node' lar veya Pod' lar içerisinden dosya alma ihtiyacınız olabiliyor bazen support case için bazen farklı durumlar için olabilir.
Ben size iki durum içinde örmek yapmaya çalışacağım örnek olarak ise hem node' lardan hemde pod' lardan pcap almak (network trafik) üzerinden devam edeceğiz.
Node' lardan Pcap almak:
İki tane ssh açıyoruz birisinden direk olarak ssh ile node bağlanıyoruz.
ssh [email protected]
Ethernet katlarının listesini alabilirsiniz bunun için komut aşağıda.
ip link show | head
Pcap almak için bağlandığınızda bir yükleme yapmanız gerekiyor. Komutu yazdığında başarılı bir şekilde yükleme yapmasını sağlamalısınız.
toolbox
Son olarak pcap için tcpdump komutunu kullanıyoruz. Aşağıdaki 1. Örnekte her eth kartından akan 443 trafiğini izlemek için komut aşağıda;
tcpdump -nn -s 0 -vv -i any port 443 -w /host/var/tmp/worker1-443-tcpdump.pcap
2. örnek : eno49 ve eno50 eth ların tcpdump ile pcap' larının alınması için gerekli olan komut aşağıda.
tcpdump -i eno49 -nn -v -e vlan -w /host/var/tmp/worker1-eno49-a.pcap
tcpdump -i eno50 -nn -v -e vlan -w /host/var/tmp/worker1-eno50-a.pcap
iki örnek' tede dikkat edilmesi gereken konu birinci durum dosya ismi açıklayıcı olmasına dikkat etmenizi tavsiye ederim. İkinci durum ise dosya path durumu burada /host/ path dosyayı kaydederken gerekli ama node üzerinden alırken kullanılmayacak bilginize.
Buraya kadar yaptığımız süreç tcpdump ile pcap aldık sonrasında ise node üzerinden scp komutu ile bastion makinemize dosyayı aktarmamız gerekiyor.
Basiton makineye dosyayı kopyalamak:
ikinci ssh burası
scp [email protected]:/var/tmp/worker1-443-tcpdump.pcap .
scp [email protected]:/var/tmp/worker1-eno49-a.pcap .
scp [email protected]:/var/tmp/worker1-eno50-a.pcap .
Yukarıdaki 3 pcap için ayrı ayrı komutlar yazdım 3 tane örnek olarak düşünün scp komutu için. Dosya path bölümündeki /host/ alanına dikkat etmelisiniz.
Referans olarak bu adrese bakabilirsiniz: https://access.redhat.com/solutions/5074041
Pod' lardan Pcap almak:
Buradaki durum azıcık farklı yine 2 tane ssh açmanız gerekiyor ve ilk node bağlanıyoruz.
ssh [email protected]
Ethernet katlarının listesini alabilirsiniz bunun için komut aşağıda.
ip link show | head
Pcap almak için bağlandığınızda bir yükleme yapmanız gerekiyor. Komutu yazdığında başarılı bir şekilde yükleme yapmasını sağlamalısınız.
toolbox
Arkasından aşağıdaki komutları sırası ile copy/paste ile yazıp sürece başlamanız ve pcap süreçlerini ilerletmeniz gerekiyor burada tavsiye önce notepad da düzenleyin pod ismi pod namespace kaydedilecek yer vb gibi düzenle yapabilirsiniz. Komut seti aşağıda.
# NAME=<pod-name>
# NAMESPACE=<pod-namespace>
# pod_id=$(chroot /host crictl pods --namespace ${NAMESPACE} --name ${NAME} -q)
# ns_path="/host/$(chroot /host bash -c "crictl inspect $pod_id | jq '.info.runtimeSpec.linux.namespaces[]|select(.type==\"network\").path' -r")"
# nsenter --net=${ns_path} -- tcpdump -nn -i ${INTERFACE_NAME} -w /host/var/tmp/${HOSTNAME}_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap
Komut için path sonunda hostname ve ve pcap alınma zamanın ile dosya ismi oluşacak bilginize. Bir not daha bu yukarıda komut OpenShift 4.9 ve sütü için geçerli daha düşük versiyon için altaki referans linkine bakabilirsiniz mantık aynı.
Referans olarak bu adrese bakabilirsiniz : https://access.redhat.com/articles/4365651
Burada bastion makineye dosyayı kopyalama süreci aynı olduğu için dosya adınız var path var elinizde ve yukarıdaki node' lar bölümündeki bastion makineye kopyalama alanı ile aynı o yüzden bir daha yazma gereği duymadım.
rm /host/var/tmp/worker1-443-tcpdump.pcap
Umarım faydalı bir yazı olmuştur. Kolay gelsin.