কোনও ম্যাক ঠিকানা থেকে আইপিভি 6 ঠিকানা পেতে শেল কীভাবে ব্যবহার করবেন?


11

আমরা জানি যে আমরা একটি ইন্টারফেস সনাক্তকারী তৈরি করতে ম্যাক ঠিকানা ব্যবহার করতে পারি, যেমন একটি লিঙ্ক-লোকাল আইপিভি 6 ঠিকানা যা নেটওয়ার্কে অনন্য হওয়া উচিত।

চিত্রটি এটি করার উপায় দেখায়:

ম্যাক ঠিকানা থেকে ইন্টারফেস সনাক্তকারী তৈরি করুন

আমার প্রশ্নগুলি হ'ল:

  • আমি কীভাবে ম্যাক থেকে আইপিভি 6 ঠিকানা তৈরি করতে পারি awkবা ব্যবহার করতে পারি sed?
  • বা এমন কোনও আদেশ আছে যা আমাকে নির্দিষ্ট ম্যাকের জন্য লিংক-স্থানীয় আইপিভি 6 ঠিকানা দেয় (এরকম কিছু createIPv6 myMAC)?

আমি আপনার প্রশ্নটি কিছুটা পুনরায় চাপিয়েছি (পর্যালোচনা মুলতুবি)। IPv6 অ্যাড্রেসের নেই নিষ্কাশিত MAC অ্যাড্রেস থেকে, কিন্তু সৃষ্টি করেছেন। এবং এখানে আপনি কেবলমাত্র একটি আইপিভি 6 ঠিকানার ইন্টারফেস শনাক্তকারী অংশ (শেষ bit৪ বিট) নিয়ে ডিল করেন। তবে আমি নিশ্চিত নই: আপনি কি কেবল ইন্টারফেস শনাক্তকারী বা একটি সম্পূর্ণ আইপিভি 6 ঠিকানা চান? আমি আপনাকে সঠিকভাবে বুঝতে না পারলে পুনরায় সম্পাদনা করুন।
দুবু

@ ডাবু, সম্পাদনার জন্য ধন্যবাদ, আমি পুরো আইপিভি 6 ঠিকানা চাই।
নিদাল

উত্তর:


10

আপনি যদি কোনও ম্যাক (এবং প্রদত্ত উপসর্গ) থেকে পুরো আইপিভি 6 ঠিকানা তৈরি করতে চান তবে আপনি ipv6calcপিটার বেরিয়ঞ্জার দ্বারা দুর্দান্ত সরঞ্জামটি ব্যবহার করতে পারেন ।

নিম্নলিখিত কমান্ডটি fe80::একটি ম্যাক ঠিকানা থেকে একটি লিংক-স্থানীয় আইপিভি 6 ঠিকানা ( উপসর্গ) তৈরি করে:

$ ipv6calc --action prefixmac2ipv6 --in prefix+mac --out ipv6addr fe80:: 00:21:5b:f7:25:1b
fe80::221:5bff:fef7:251b

আপনি বেশিরভাগ বিকল্পগুলি দূরে রাখতে পারেন এবং কমান্ডটি অনুমান করতে পারে কী করতে হবে:

$ ipv6calc --in prefix+mac fe80:: 00:21:5b:f7:25:1b
No action type specified, try autodetection...found type: prefixmac2ipv6
fe80::221:5bff:fef7:251b

দেবিয়ান ডিস্ট্রোসের জন্য, ipv6calcমূল সংগ্রহস্থলটিতে রয়েছে।


4

IPv6 উইকিপিডিয়া এন্ট্রি থেকে আরও পাঠ্য বিবরণ:

একটি 64-বিট ইন্টারফেস শনাক্তকারী সাধারণত 48-বিট ম্যাক ঠিকানা থেকে প্রাপ্ত ived

একটি ম্যাক ঠিকানা 00: 0 সি: 29: 0 সি: 47: ডি 5 মাঝখানে FF: FE সন্নিবেশ করে একটি 64-বিট EUI-64 তে রূপান্তরিত হয়: 00: 0 সি: 29: এফএফ: ফি: 0 সি: 47: ডি 5।

তৃতীয় প্রতিস্থাপন তাই :সঙ্গে :FF:FE:কৌতুক করতে হবে:

echo  00:0C:29:0C:47:D5 | sed s/:/:FF:FE:/3
00:0C:29:FF:FE:0C:47:D5

যদি এই সিনট্যাক্সটি জিএনইউ সেডের সাথে নির্দিষ্ট হয় তবে কোনও ধারণা নেই।


কাজ চলছে:

এটি বিটগুলিতে রূপান্তর করুন:

for HEX in $(tr ":" " " <<< 00:0C:29:FF:FE:0C:47:D5) 
  do 
    printf "%08d " $(bc <<< "ibase=16;obase=2;$HEX") 
  done

বিটগুলির ফলস্বরূপ 00000000 00001100 00101001 11111111 11111110 00001100 01000111 11010101কেবল বিট 7 নম্বর বিচ্ছিন্ন হয়ে যাওয়া উচিত leaving


1
7 তম বিট বিপরীত সম্পর্কে কি!
নিদাল

আহ / ইউ বিট, ভাল পয়েন্ট!
এইচবিউইজন


0

আপনি একটি বাশ ফাংশন তৈরি করতে পারেন (এবং এটিতে আপনার রাখুন ~/.bashrc) যা IFSম্যাকের ঠিকানাটি 6 টি কোলন-বিভক্ত গ্রুপগুলিতে বিভক্ত করতে এবং তাদের একত্রিত করে। আপনাকে 7 তম সর্বাধিক উল্লেখযোগ্য বিট, যেমন প্রথম বাইটের 1 বিটটিও ফ্লিপ করতে হবে:

mac_to_ipv6_ll() {
    IFS=':'; set $1; unset IFS
    echo "fe80::$(printf %02x $((0x$1 ^ 2)))$2:${3}ff:fe$4:$5$6"
}

ব্যবহারের উদাহরণ:

$ mac_to_ipv6_ll 12:34:56:78:90:12
fe80::1034:56ff:fe78:9012

0

উপরের খাঁটি শেল (আপনি যদি প্রিন্টফ গণনা না করেন) উত্তরের জন্য উপরে অবশ্যই আমাকে @ রুবো .77 তে কুদোস দিতে হবে, যা আমি খুঁজছিলাম।

এটি এতে কিছুটা সিড যুক্ত করেছে:

(ক) প্রতিটি 16-বিট অংশে যে কোনও নেতৃস্থানীয় জিরো এলাইড; এবং

(খ) আইআইডি শুরুর পরে আর কোনও শূন্য অংশকে এলিটেড করুন

... ঠিকানা ব্রেভিটির জন্য সাধারণ সম্মেলন হিসাবে।

mac_to_eui64() {
 IFS=':'; set $1; unset IFS
 echo "fe80::$(printf %x $((0x$1 ^ 2)))$2:${3}ff:fe$4:$5$6" |
  sed -E 's/:0+/:/g; s/:{3,}/::/; s/:$/:0/'
}

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


আপনি ঠিক বলেছেন, ধন্যবাদ - আমি পিছনে গিয়ে বামে @ রুবো's77 এর printfএকা ভাল করে ফেলেছি এবং পরিবর্তে সেডে অতিরিক্ত জিনিসগুলি করেছি।
হেডব্যাঙ্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.