Tcpdump আউটপুট প্রবাহে ইন্টারফেসটি কীভাবে প্রদর্শিত হবে?


20

এটি বেশ তুচ্ছ সমস্যা বলে মনে হচ্ছে তবে কিছু অনুসন্ধানের পরে আমি উত্তরটি বের করতে পারছি না। ইন্টারফেসের বর্ণনা হিসাবে "যে কোনও" ব্যবহার করে কেউ tcpdump চালাতে পারে, যেমন:

 # tcpdump -i any -n host 192.168.0.1

কোন ইন্টারফেসের প্রদর্শিত প্যাকেটটি ধরা হয়েছিল তা দেখাতে tcpdump কে জোর করার কোনও উপায় আছে কি?

হালনাগাদ:

যত বেশি লোকেরা নিশ্চিত করেছে যে ভ্যানিলা টিসিপিডাম্প দিয়ে এটি সম্ভবত সম্ভব নয়, কেউ কি উল্লিখিত সমস্যার সমাধানের প্রস্তাব দিতে পারেন? সম্ভবত বিভিন্ন স্নিফার?

সাধারণ সমস্যা নিম্নরূপ: 50 ইন্টারফেস সহ একটি সিস্টেমে নির্দিষ্ট আইপি ঠিকানা থেকে প্যাকেটগুলির জন্য অন্তর্নির্মিত ইন্টারফেস কী তা নির্ধারণ করে।

উত্তর:


19

আমি আশা করি যে কেউ এখনও সমস্যার সমাধানে আগ্রহী। ;) আমাদের সংস্থায় আমাদের একই সমস্যা ছিল এবং আমি এটির জন্য একটি স্ক্রিপ্ট লিখতে শুরু করি।

আমি উত্স কোড এবং একটি স্ক্রিনশট সহ এ সম্পর্কে একটি ব্লগ পোস্ট লিখেছিলাম

আমি এটি নীচে ভাগ করেছি ...

এখানে চিত্র বর্ণনা লিখুন

এবং কোড: (ভবিষ্যতের আপডেটের জন্য আমার সাইটটি চেক করতে ভুলবেন না)

#!/bin/bash
#===================================================================================
#
# FILE: dump.sh
# USAGE: dump.sh [-i interface] [tcpdump-parameters]
# DESCRIPTION: tcpdump on any interface and add the prefix [Interace:xy] in front of the dump data.
# OPTIONS: same as tcpdump
# REQUIREMENTS: tcpdump, sed, ifconfig, kill, awk, grep, posix regex matching
# BUGS:  ---
# FIXED: - In 1.0 The parameter -w would not work without -i parameter as multiple tcpdumps are started.
#        - In 1.1 VLAN's would not be shown if a single interface was dumped.
# NOTES: ---
#        - 1.2 git initial
# AUTHOR: Sebastian Haas
# COMPANY: pharma mall
# VERSION: 1.2
# CREATED: 16.09.2014
# REVISION: 22.09.2014
#
#===================================================================================

# When this exits, exit all background processes:
trap 'kill $(jobs -p) &> /dev/null && sleep 0.2 &&  echo ' EXIT
# Create one tcpdump output per interface and add an identifier to the beginning of each line:
if [[ $@ =~ -i[[:space:]]?[^[:space:]]+ ]]; then
    tcpdump -l $@ | sed 's/^/[Interface:'"${BASH_REMATCH[0]:2}"'] /' &
else
    for interface in $(ifconfig | grep '^[a-z0-9]' | awk '{print $1}')
    do
       tcpdump -l -i $interface -nn $@ | sed 's/^/[Interface:'"$interface"']    /' &
    done
fi
# wait .. until CTRL+C
wait

6

আপনি ইথারনেট শিরোনামগুলি মুদ্রণের জন্য -e বিকল্পটি ব্যবহার করতে পারেন, তারপরে আপনি নিজের নেটওয়ার্ক ইন্টারফেসের সাথে src / dst MAC ঠিকানাগুলি সংযুক্ত করতে পারেন;)।


-eপ্রতিটি লাইনে কেবল একটি ম্যাক ঠিকানা প্রিন্ট করে । আগত প্যাকেটের জন্য এটি উত্স ম্যাক যা এটি কোন ইন্টারফেসে এসেছিল তা সনাক্ত করতে খুব কার্যকর নয়।
ক্যাস্পারড

1

আমি এর কোন উত্তর জানি না। আমি এর জন্য কোনও বিকল্প খুঁজে পাই না, এটির আগে কখনও দেখিনি all আমি মনে করি আপনাকে প্রতিটি ইন্টারফেসের জন্য একটি tcpdump উদাহরণ শুরু করতে হবে এবং সংশ্লিষ্ট ফাইলগুলিতে লগ করতে হবে।


আমি একমত. সাধারণত যখন আমি ট্রাফিক স্নিগ্ধ করি তখন আমি ইতিমধ্যে জানি যে ট্র্যাফিকটি কোথা থেকে আসছে বা কোথায় যাচ্ছে। যদি আমার তা বুঝতে হয় তবে আমার কাছে প্রথমে আরও বড় মাছ ভাজতে হবে ...
কোরি এস।

2
আমি সত্যিই খুব প্রায়ই এই কার্যকারিতা প্রয়োজন। এর বেশিরভাগ আইজিপি এবং বিজিপি সহ আমার বেশ কয়েকটি ইন্টারফেস, প্রচুর ভ্যালান ইন্টারফেস রয়েছে। প্যাকেটগুলি কীভাবে প্রবাহিত হচ্ছে তা সন্ধান করা খুব প্রায়ই প্রয়োজনীয়। আমি বর্তমান রাউটিং টেবিলটি পরীক্ষা করে নিজেই আউটবাউন্ড ইন্টারফেসটি পরীক্ষা করতে পারি। ইন্টারনেট থেকে প্যাকেটগুলি যেভাবে আসছে তা যদি আমাকে খুঁজে বের করতে হয় তবে মাঝে মাঝে আমাকে অন্ধ চেকিং করতে হয়, কেবলমাত্র বেশিরভাগ সম্ভাব্য ইন্টারফেসে tcpdump শুরু করে। :(
এমড্রোডজিল

1

আপনি যদি ম্যাকের সাথে চালিয়ে যাচ্ছেন তবে আপনি পিকেটাপ ইন্টারফেস ব্যবহার করছেন কিনা এর -kবিকল্প রয়েছে tcpdump, যা অন্যান্য দরকারী মেটাডেটার মধ্যে ইন্টারফেসের নাম ডাম্প করে।

   -k     Control the display of packet metadata via an optional metadata_arg argument. This is useful when displaying packet saved in the
          pcap-ng file format or with interfaces that support the PKTAP data link type.

          By default, when the metadata_arg optional argument is not specified, any available packet metadata information is printed  out.

          The  metadata_arg  argument controls the display of specific packet metadata information using a flag word, where each character
          corresponds to a type of packet metadata as follows:

                 I     interface name (or interface ID)
                 N     process name
                 P     process ID
                 S     service class
                 D     direction
                 C     comment
                 U     process UUID (not shown by default)
                 A     display all types of metadata

          This is an Apple modification.

1

সেবাস্তিয়ান হাসের দুর্দান্ত বাশ স্ক্রিপ্টে যুক্ত করতে। এই স্ক্রিনটিতে এটি ব্যর্থ হওয়ায় আমাকে তাঁর স্ক্রিপ্টটি সরল করতে হয়েছিল tcpdump -l $@ | sed 's/^/[Interface:'"${BASH_REMATCH[0]:2}"'] /' &

যদিও এটি মূল স্ক্রিপ্টের মতো নমনীয় নয়, তবে এটি স্ট্রিপড ডাউন লিনাক্স সিস্টেমে চালিত হওয়ার সম্ভাবনা বেশি।

#!/bin/sh
interfaces="eth0 ip6tnl1" # Interfaces list separated by whitespace
#===================================================================================
#
# FILE: dump-stripped.sh
# USAGE: dump.sh [tcpdump-parameters]
# DESCRIPTION: tcpdump on any interface and add the prefix [Interace:xy] in 
#               front of the dump data. Simplified to work in more limited env.
# OPTIONS: similar to tcpdump
# REQUIREMENTS: tcpdump, sed, ifconfig, kill, awk, grep, posix regex matching
# AUTHOR: Sebastian Haas (Stripped down By Brian Khuu)
#
#===================================================================================

# When this exits, exit all background processes:
trap 'kill $(jobs -p) &> /dev/null && sleep 0.2 &&  echo ' EXIT

# Create one tcpdump output per interface and add an identifier to the beginning of each line:
for interface in $interfaces;
do tcpdump -l -i $interface -nn $@ | sed 's/^/[Interface:'"$interface"'] /' 2>/dev/null & done;

# wait .. until CTRL+C
wait;

আপনি https://github.com/the-tcpdump-group/tcpdump/issues/296 এ এই বৈশিষ্ট্যটি বাদ দেওয়ার জন্য বর্তমান গিথুব ইস্যুর টিকিটে আগ্রহী হতে পারেন ।


0

এটি লিনাক্সে রয়েছে বলে ধরে নিলে আপনি যে প্যাকেটটি সন্ধান করছেন তা মেলানোর জন্য এবং লগ ইন করার জন্য আপনি একটি আইপেটেবল বিধি যুক্ত করতে পারেন। Iptables লগ ইনগ্রিজ এবং অ্যাড্রেস ইন্টারফেস, অন্যান্য জিনিস অন্তর্ভুক্ত।


0
for interface in `ifconfig | grep '^[a-z0-9]' | awk '{print $1}'`;do echo $interface;tcpdump -i $interface -nn -c 25;done

প্রয়োজন অনুসারে সামঞ্জস্য করুন।


0

ইন্টারফেস সনাক্তকরণ লাইনটি সংশোধন করে আপনি লিনাক্সের উপ-ঠিকানা ইন্টারফেসগুলি মুছে ফেলতে পারেন। নিচে নমুনা ..

for interface in $(ifconfig | grep '^[a-z0-9]' | awk '{print $1}')

পরিবর্তন

for interface in $(ifconfig | grep flags | sed s/': '/' ~ '/g | grep -v : | awk '{print $1}')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.