নেটওয়ার্ক পর্যবেক্ষণের জন্য রুট / প্রক্সি এসএনএমপি ট্র্যাপগুলি (বা নেটফ্লো, জেনেরিক ইউডিপি, ইত্যাদি) এর সমাধান?


15

আমি একটি খুব বড় নেটওয়ার্কের (প্রায় 5000 নেটওয়ার্ক ডিভাইস) জন্য একটি নেটওয়ার্ক মনিটরিং সমাধান প্রয়োগ করছি। আমরা চাই যে আমাদের নেটওয়ার্কের সমস্ত ডিভাইসগুলি একটি একক বাক্সে এসএনএমপি ট্র্যাপগুলি প্রেরণ করবে (প্রযুক্তিগতভাবে এটি সম্ভবত বক্সগুলির একটি এইচএ জুড়ি হবে) এবং তারপরে সেই বাক্সটি এসএনএমপি ট্র্যাপগুলি প্রকৃত প্রসেসিং বাক্সগুলিতে পাস করবে। এটি আমাদের একাধিক ব্যাক-এন্ড বক্সগুলি হ্যান্ডলিং ট্র্যাপগুলি সরবরাহ করতে এবং পিছনের শেষ বাক্সগুলির মধ্যে লোড বিতরণ করার অনুমতি দেবে।

আমাদের প্রয়োজন এমন একটি মূল বৈশিষ্ট্য হ'ল ট্র্যাপের উত্সের ঠিকানার উপর নির্ভর করে একটি নির্দিষ্ট বাক্সে ট্র্যাপগুলি ফরোয়ার্ড করা। এটি পরিচালনা করার সর্বোত্তম উপায়ে কোনও পরামর্শ?

আমরা বিবেচ্য বিষয়গুলির মধ্যে রয়েছে:

  • ফাঁদগুলি গ্রহণ করার জন্য স্ন্যাম্পট্রপডি ব্যবহার করে এবং ট্র্যাপটি পুনরায় লেখার জন্য এবং এটি যথাযথ প্রসেসিং বাক্সে প্রেরণের জন্য এটি কোনও কাস্টম লিখিত পার্ল হ্যান্ডলার স্ক্রিপ্টে পাঠিয়ে দেয়
  • এটি পরিচালনা করতে একটি লিনাক্স বাক্সে চলমান লোড ব্যালেন্সিং সফ্টওয়্যার ব্যবহার করে (ইউডিপি হ্যান্ডেল করবে এমন অনেকগুলি ভারসাম্যপূর্ণ প্রোগ্রাম খুঁজে পেতে কিছুটা সমস্যা হচ্ছে)
  • লোড ব্যালেন্সিং অ্যাপ্লায়েন্স (এফ 5 ইত্যাদি) ব্যবহার করা
  • নেটিংয়ের সাথে এসএনএমপি ট্র্যাপগুলি রুট করার জন্য একটি লিনাক্স বাক্সে আইপিটিবেলগুলি ব্যবহার করা

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

# Range: 10.0.0.0/19       Site: abc01    Destination: foo01
iptables -t nat -A PREROUTING -p udp --dport 162 -s 10.0.0.0/19 -j DNAT --to-destination 10.1.2.3
# Range: 10.0.33.0/21       Site: abc01    Destination: foo01
iptables -t nat -A PREROUTING -p udp --dport 162 -s 10.0.33.0/21 -j DNAT --to-destination 10.1.2.3
# Range: 10.1.0.0/16       Site: xyz01    Destination: bar01
iptables -t nat -A PREROUTING -p udp --dport 162 -s 10.1.0.0/16 -j DNAT --to-destination 10.3.2.1

এটি বেসিক ট্র্যাপ রাউটিংয়ের জন্য দুর্দান্ত দক্ষতার সাথে কাজ করা উচিত, তবে এটি আমাদের আইপিটবেলগুলি কীভাবে ম্যাক করতে এবং ফিল্টার করতে পারি তা সম্পূর্ণ সীমাবদ্ধ রাখে, তাই আমরা ভবিষ্যতের জন্য নমনীয়তা সম্পর্কে উদ্বিগ্ন।

আর একটি বৈশিষ্ট্য যা আমরা সত্যিই পছন্দ করতে চাই তা হ'ল ইউডিপি প্যাকেটগুলি নকল বা মিরর করার দক্ষতা হ'ল "অবশ্যই" থাকা উচিত। একটি আগত ট্র্যাপ নিতে সক্ষম হয়ে এটি একাধিক গন্তব্যে রুট করা খুব দরকারী।

এসএনএমপি ট্র্যাপগুলি (বা নেটফ্লো, সাধারণ ইউডিপি, ইত্যাদি) লোড ব্যালেন্সিংয়ের জন্য কি কেউ উপরের সম্ভাব্য সমাধানগুলির কোনও চেষ্টা করেছে? অথবা কেউ এর সমাধানের জন্য অন্য কোনও বিকল্পের কথা ভাবতে পারেন?

উত্তর:


4

একজন সহকর্মী আমাকে কেবল নমুনা দেখিয়েছিলেন । এই সরঞ্জামটি আমি যা খুঁজছিলাম তার নিখুঁত সমাধান সম্পর্কে মনে হচ্ছে। সরঞ্জামটির ওয়েবসাইট থেকে:

এই সাধারণ প্রোগ্রামটি ইউডিপি ডেটাগ্রামের জন্য একটি নেটওয়ার্ক পোর্টে শুনবে এবং এই ডেটাগ্রামের অনুলিপিগুলি গন্তব্যগুলির সেটগুলিতে প্রেরণ করে। Allyচ্ছিকভাবে, এটি স্যাম্পলিং সম্পাদন করতে পারে, অর্থাত্ প্রতিটি প্যাকেট ফরোয়ার্ড করার পরিবর্তে, কেবল এন-তে 1 জনকে ফরোয়ার্ড করে দেয় that । বর্তমানে কেবল আইপিভি 4 সমর্থন করে।

এটি যেমন নেটফ্লো প্যাকেটগুলি, এসএনএমপি ট্র্যাপগুলি (তবে অবহিত করে না), বা একাধিক রিসিভারগুলিতে সিসলগ বার্তা বিতরণ করতে ব্যবহার করা যেতে পারে।


3

আমি সমাধানটি নিজেই বাস্তবায়ন করতে যাব, কারণ আপনি নিজের মতো সুনির্দিষ্ট কিছু পাবেন কিনা তা আমি জানি না।

আমি ভারসাম্য বিধি এবং এমনকি ফাঁদ শোনার প্রয়োগ করতে রুবির মতো উচ্চ স্তরের ভাষা ব্যবহার করব। উদাহরণস্বরূপ, এই গ্রন্থাগারগুলি ব্যবহার করা সহজ বলে মনে হচ্ছে

ফাঁদে শুনুন:

m = SNMP::TrapListener.new(:Port => 1062, :Community => 'public') do |manager|
  manager.on_trap_default { |trap| p trap }
end
m.join

আপনার on_trap_defaultব্লকের মধ্যে ভারসাম্য যুক্তি যুক্ত করা উচিত ।

ফাঁদ পাঠান:

Manager.open(:Version => :SNMPv1) do |snmp|
  snmp.trap_v1(
    "enterprises.9",
    "10.1.2.3",
    :enterpriseSpecific,
    42,
    12345,
    [VarBind.new("1.3.6.1.2.3.4", Integer.new(1))])
end

ডেমন তৈরি করতে আপনি ডিমন-কিট রুবি রত্ন ব্যবহার করতে পারেন ।

আপনি যদি এটি সহজ রাখেন এবং ভাল অবজেক্টগুলি সংজ্ঞায়িত করেন তবে আপনি খুব বেশি চেষ্টা করে সফ্টওয়্যারটি বজায় রাখতে পারবেন।


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

1

আপনার মূল সমস্যাটি হতে চলেছে, আপনি যে ডিভাইসটি থেকে ট্র্যাপগুলি পেয়েছেন তার আসল আইপি আপনি কীভাবে জানবেন?

আপনি যদি এসএনএমপি ভি 1 ব্যবহার করে থাকেন তবে আপনি আইপটিকে ফাঁদে ফেলতে পারেন। আপনি যদি ভি 2 বা ভি 3 ট্র্যাপ ব্যবহার করছেন তবে আপনার আগে ডিভাইসটি থেকে আসা আইপিতে স্ন্যাম্পেনজিন আইডি সংযুক্ত করতে হবে। ইঞ্জিনিড সাধারণত বেশিরভাগ এসএনএমপি বাস্তবায়নের জন্য বাধ্যতামূলক কনফিগার আইটেম নয় এবং তাই আপনি একা পুরোপুরি নির্ভর করতে পারবেন না।

ফলব্যাকটি হ'ল আপনি ইউডিপি প্যাকেট শিরোলেখ থেকে উত্স আইপি ব্যবহার করতে পারেন। অবশ্যই, এটি ব্যর্থ হবে, যদি আপনার ফাঁদটি অন্য কোনও ইএমএস / এনএমএসের মাধ্যমে চালিত করা হয় বা আপনার যদি ডিভাইস এবং আপনার এমজিএমটি অ্যাপ্লিকেশনটির মধ্যে নেট থাকে।

  1. আপনার যদি অন্য এনএমএস থেকে নেট / ফরোয়ার্ড ট্র্যাপগুলি সমর্থন করার প্রয়োজন না হয় তবে কেবল ইউডিপি প্যাকেটের একটি অনুলিপি তৈরি করুন এবং আইপি উপর ভিত্তি করে রুট করুন

  2. যদি আপনাকে এটি সমর্থন করার দরকার হয় তবে আপনাকে এসএনএমপি ট্র্যাপটি পার্স করতে হবে এবং ভি 2 / ভি 3 এর জন্য ইঞ্জিন আইডি মিলটি পরীক্ষা করতে হবে, ভি 1 এর জন্য আপনি এটি এসএনএমপি শিরোনামের এজেন্ট-ঠিকানা ক্ষেত্রের বাইরে পড়তে পারেন।


0

আরও একটি নেটফিল্টার ভিত্তিক হ্যাক:

iptables -t nat -A PREROUTING -d 10.0.0.1 -p udp --dport 162 -m random --average 33 -j DNAT --to-destination 10.0.0.2:162
iptables -t nat -A PREROUTING -d 10.0.0.1 -p udp --dport 162 -m random --average 33 -j DNAT --to-destination 10.0.0.3:162
# everything else goes to other consumer
iptables -t nat -A PREROUTING -d 10.0.0.1 -p udp --dport 162 -j DNAT --to-destination 10.0.0.4:162

[অনুমান - সমস্ত ট্র্যাপগুলি 10.0.0.1 এ প্রেরণ করা হয়, যা সেগুলি 10.0.0.2, 10.0.0.3, 10.0.0.4 এ পুনর্নির্দেশ করে]

যতক্ষণ আপনার ওয়ান-প্যাকেট-লম্বা স্ন্যাপ ট্র্যাপ রয়েছে - এটি 3 টি মেশিনে এই ক্ষেত্রে দুর্দান্তভাবে ছড়িয়ে দেওয়া উচিত। [যদিও আমি এটি পরীক্ষা করে দেখিনি]।


আসলে, আমরা খুব বেশি এলোমেলোভাবে লোড ছড়িয়ে দিতে চাই না। আমরা একটি প্রদত্ত সাবনেট থেকে সমস্ত ট্র্যাপ একই মেশিনে আঘাত হানতে চাই যাতে আমরা ইভেন্টগুলিকে নির্দিষ্ট সাইটে সংযুক্ত করতে পারি। এই মুহুর্তে আমার আইপিটিবেলস বিধিগুলি ট্র্যাপের উত্সের ভিত্তিতে ডিএনএটি গন্তব্য সেট করে।
ক্রিস্টোফার ক্যাসেল

@ ক্রিস্টোফার ক্যাসেল - তারপরে বিকল্প হিসাবে আপনার সমাধানের জন্য আপনি src আইপি ঠিকানার ভিত্তিতে 'হ্যাশ' গন্তব্য সার্ভারে u32 নেটফিল্টার মডিউলটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, src আইপি ঠিকানার সর্বশেষ 2 বিট নিন এবং 4 টি স্প্যাম্প 'গ্রাহককে' লোড ছড়িয়ে দিন। netfilter.org/documentation/HOWTO/...
pQd

@ ক্রিস্টোফার ক্যাসেল স্টার্নস.আর্গ / ডক / শিপটেবলস- ইউ 32.v0.1 এইচটিএমএল u32 ম্যাচের জন্য দুর্দান্ত টিউটোরিয়াল। পর্যায়ক্রমে - "লিনাক্স ভার্চুয়াল সার্ভার" প্রকল্পটি দেখুন - তারা src / dst ip এর উপর ভিত্তি করে udp প্যাকেটের জন্য ভারসাম্য লোড করতে পারে।
pQd

0

আমি মনে করি chmeee থেকে উত্তর সঠিক উপায়। যতটা সম্ভব প্রক্রিয়ায় ইউডিপি এবং এসএনএমপি থেকে মুক্তি পান, তারা পরিচালনা করতে ভয়ঙ্কর।

আমি এখন এমন একটি সিস্টেম তৈরি করছি যা জেএমএস কাতারে সমস্ত ইভেন্ট (ট্র্যাপ সহ) রাখবে এবং তারপরে লোড ব্যালেন্সিং এবং ফেইলওভার করতে সমস্ত বিস্ময়কর উদ্যোগের বার্তা ব্যবহার করবে।


আমি মনে করি আপনি ভুল বোঝাবুঝি করছেন। । । আমি একটি সম্পূর্ণ মনিটরিং সিস্টেম তৈরি করার চেষ্টা করছি না, কেবল একটি এসএনএমপি ট্র্যাপ রাউটার। আমরা 5000 নেটওয়ার্ক ডিভাইস পেয়েছি এবং কয়েক লক্ষ পোর্ট আমরা এখানে পর্যবেক্ষণ করছি। আমি সেই চাকাটিকে নতুন করে আনার কোনও উপায় নেই। । । আমাদের সরঞ্জামগুলি আরও ভালভাবে তৈরি করার চেষ্টা করছি।
ক্রিস্টোফার ক্যাসেল

আমি আপনাকে ঠিক বুঝতে পেরেছিলাম, সম্ভবত আপনি আমাকে বুঝতে পারেন নি;) জেএমএস একটি পরিবহণ হিসাবে ব্যবহৃত হয় কারণ আধুনিক দালালের কাছে সেই সমস্ত দুর্দান্ত ব্যর্থতা, অধ্যবসায় এবং ভারসাম্যযুক্ত বৈশিষ্ট্য রয়েছে। আপনি কোনও ইউআরএল পোস্ট করতে পারেন, ইমেল প্রেরণ করতে পারেন, যা কিছু কাজ করে SOAP। ইউডিপি কখনই নির্ভরযোগ্য বা ভারসাম্যপূর্ণ হওয়ার জন্য নির্মিত হয়নি কারণ এতে ডেটা স্ট্রিম বা প্রবাহ নিয়ন্ত্রণের কোনও ধারণা নেই। আপনি কেবল ইউডিপি যা করার জন্য ডিজাইন করেননি তা করার জন্য দীর্ঘ সময় ধরে তাত্পর্যপূর্ণ হবেন।
আলেকসান্দার ইভানিসেভিক

আমি এই পরামর্শটির প্রশংসা করি, তবে আমার নিজের এন্টারপ্রাইজ লেভেল নেটওয়ার্ক মনিটরিং সিস্টেমটি গড়ে তোলার বিষয়ে সত্যিই কোনও উদ্দেশ্য বা আগ্রহ নেই। এগুলির মধ্যে ইতিমধ্যে প্রচুর পরিমাণে উপলব্ধ রয়েছে এবং বৈশিষ্ট্য সেট এবং স্কেলাবিলিটি সহ একটি বাস্তবায়ন করতে আমাদের 2-2 বছর ধরে এক ডজন প্রোগ্রামারের একটি টিমের প্রয়োজন হবে। এটি সম্ভাব্য বা পছন্দসই নয়। এটি আমাকে বিদ্যমান সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার সাথে ছেড়ে দেয় এবং এটি আমাকে ইউডিপিতে অনেকগুলি এসএনএমপি নিয়ে ডিল করে।
ক্রিস্টোফার ক্যাসেল

0

আপনার মূল সমস্যাটি হতে চলেছে, আপনি যে ডিভাইসটি থেকে ট্র্যাপগুলি পেয়েছেন তার আসল আইপি আপনি কীভাবে জানবেন?

আসল প্রেরকের আইপি পেতে, আপনি এই প্যাচটির সাথে স্যাম্পট্র্যাপড প্যাচ করার চেষ্টা করতে পারেন - https://sourceforge.net/p/net-snmp/patches/1320/#6afe

এটি পে-লোডকে সংশোধন করে, তাই আইপি শিরোনাম অক্ষত রাখা হবে, যাতে তারা আপনার রাউটিং এবং / অথবা নেটিংয়ে না যায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.