ভার্চুয়াল ইন্টারফেসে কীভাবে একজন ট্র্যাফিক ক্যাপচার করতে পারে?


12

ডিবাগিংয়ের উদ্দেশ্যে আমি লিনাক্স ভার্চুয়াল ইন্টারফেসগুলিতে ট্র্যাফিক ক্যাপচার করতে চাই। আমি নিয়ে পরীক্ষা-নিরীক্ষা করা হয়েছে veth, tunএবং dummyধরনের ইন্টারফেস; তিনটিই, আমার tcpdumpকিছু দেখাতে সমস্যা হচ্ছে ।

আমি কীভাবে ডামি ইন্টারফেস সেট আপ করব এখানে:

ip link add dummy10 type dummy
ip addr add 99.99.99.1 dev dummy10
ip link set dummy10 up

একটি টার্মিনালে, এটি দিয়ে দেখুন tcpdump:

tcpdump -i dummy10

এক সেকেন্ডে এটির সাথে শুনুন nc:

nc -l 99.99.99.1 2048

তৃতীয়তে, এইচটিটিপি অনুরোধ করুন যার সাথে curl:

curl http://99.99.99.1:2048/

যদিও টার্মিনাল 2 এ আমরা curlঅনুরোধটি থেকে ডেটা দেখতে পাচ্ছি , কিছুই থেকে পাওয়া যায় না tcpdump

একটি টুন / ট্যাপ টিউটোরিয়াল কিছু পরিস্থিতি স্পষ্ট করে যেখানে কোনও স্থানীয় ইন্টারফেসে কাজ করার সময় কার্নেল আসলে কোনও প্যাকেট প্রেরণ করতে পারে না:

Tshark এর আউটপুট দেখে, আমরা দেখতে পাই ... কিছুই না। ইন্টারফেস দিয়ে কোনও ট্র্যাফিক যাচ্ছে না। এটি সঠিক: যেহেতু আমরা ইন্টারফেসের আইপি ঠিকানাটি পিন করছি, অপারেটিং সিস্টেম সঠিকভাবে সিদ্ধান্ত নিয়েছে যে কোনও প্যাকেট "তারের উপরে" প্রেরণের দরকার নেই, এবং কার্নেল নিজেই এই পিংগুলিকে জবাব দিচ্ছে। আপনি যদি এটির বিষয়ে চিন্তা করেন তবে ঠিক কী হবে যদি আপনি অন্য ইন্টারফেসের আইপি ঠিকানাটি পিন করেন (উদাহরণস্বরূপ eth0): কোনও প্যাকেট পাঠানো হবে না। এটি সম্ভবত সুস্পষ্ট মনে হলেও এটি প্রথমে বিভ্রান্তির উত্স হতে পারে (এটি আমার পক্ষে ছিল)।

তবে, এটি টিসিপি ডেটা প্যাকেটের ক্ষেত্রে কীভাবে প্রয়োগ হতে পারে তা দেখা শক্ত hard

হয়তো tcpdumpঅন্যভাবে ইন্টারফেসের সাথে আবদ্ধ থাকা উচিত?


টিসিপি প্যাকেটের ক্ষেত্রে কেন এমনটি দেখা কঠিন তা নিশ্চিত নয়। পিংসের মতো এগুলি কার্নেলে প্রক্রিয়া করা হয়। একই জিনিস ঘটছে।
ডারোবার্ট

@डरবার্ট পিংসের ক্ষেত্রে, কার্নেল প্রতিক্রিয়া জানাতে পারে। ডেটা প্যাকেটের ক্ষেত্রে, আমি বরং ভেবেছিলাম তাদের ইন্টারফেসটি "ওভার" করতে হবে যাতে অ্যাপ্লিকেশন তাদের প্রতিক্রিয়া জানাতে পারে।
solidsnack

1
অ্যাপ্লিকেশনগুলি কার্নেলের সাথে পঠন, লিখন ইত্যাদি ব্যবহার করে কথা বলে অনেক নেটওয়ার্ক অ্যাপ্লিকেশন এমনকি ইন্টারফেসের উপস্থিতি সম্পর্কেও সচেতন হতে হবে না। এর মধ্যে একটির উপর দিয়ে যান চলাচলের জন্য, কার্নেলটিকে এটিকে স্থানীয় হিসাবে না দেখার প্রয়োজন। উদাহরণস্বরূপ, একটি ওপেনভিপিএন টানেল সেট আপ করুন, তারপরে আপনি টিউন ধরে ট্র্যাফিক ক্যাপচার করতে পারবেন। (অবশ্যই, অ্যাপ্লিকেশনগুলির কার্নেলের সাথে কথা বলার, ইউজারল্যান্ডে একটি নেটওয়ার্ক ইন্টারফেস বাস্তবায়নের জন্য টিউন একটি বিশেষ উপায় যা
ওপেনভিপিএন

উত্তর:


8

ট্র্যাফিক loইন্টারফেসের উপর দিয়ে চলেছে ।

আইপি কোনও বাক্সে যুক্ত করা হলে, সেই ঠিকানাটির একটি রুট 'স্থানীয়' সারণিতে যুক্ত করা হয়। এই টেবিলের সমস্ত রুট লুপব্যাক ইন্টারফেসের মাধ্যমে ট্র্যাফিক নেয়।

আপনি নিম্নলিখিত সহ 'স্থানীয়' টেবিলের সামগ্রীগুলি দেখতে পারেন:

ip route show table local

আমার সিস্টেমে যা দেখতে এটির মতো দেখাচ্ছে:

local 10.230.134.38 dev tun0  proto kernel  scope host  src 10.230.134.38 
broadcast 10.230.134.38 dev tun0  proto kernel  scope link  src 10.230.134.38 
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 172.17.0.0 dev docker0  proto kernel  scope link  src 172.17.42.1 
local 172.17.42.1 dev docker0  proto kernel  scope host  src 172.17.42.1 
broadcast 172.17.255.255 dev docker0  proto kernel  scope link  src 172.17.42.1 
broadcast 192.168.0.0 dev enp6s0  proto kernel  scope link  src 192.168.0.20 
local 192.168.0.20 dev enp6s0  proto kernel  scope host  src 192.168.0.20 
broadcast 192.168.0.255 dev enp6s0  proto kernel  scope link  src 192.168.0.20 

তাই মূলত আমি যদি কোনো ট্রাফিক পাঠাতে 10.230.134.38, 127.0.0.0/8, 127.0.0.1(অপ্রয়োজনীয়) , 172.17.42.1অথবা 192.168.0.20, ট্রাফিক লুপব্যাক ইন্টারফেসের মাধ্যমে পরাজিত হবে, যদিও ঐ আইপিগুলি একটি ভিন্ন ইন্টারফেসে সত্যিই হয়।



0

এটি দ্বিতীয় সিস্টেমে (এটি সেই হোস্টের ভিএমও হতে পারে) সাহায্য করার মাধ্যমে করা সম্ভব।

আপনি টেবিলের শৃঙ্খলে ব্যবহার করতে পারেন DNATএবং প্যাকেটগুলিকে এমন কোনও ইন্টারফেসে পুনর্নির্দেশ করতে পারেন যা কার্নেলটি নিয়ন্ত্রণ করে না। আপনাকে সেগুলি এখানে প্রতিফলিত করতে হবে:OUTGOINGnat

iptables -t nat -A OUTPUT -p tcp -d 99.99.99.1 --dport 2048 \
  -j DNAT --to-destination 1.2.3.4
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.