ip বনাম ifconfig কমান্ড ও কনস কম্যান্ড করে


28

কিছু সময়, লিনাক্সের কিছু শিক্ষণ উপাদানের (লিনাক্স ফাউন্ডেশন থেকে) আমি এসেছি, নিম্নলিখিতটি উল্লেখ করা হয়েছে:

ipকমান্ডটি আরও বহুমুখী এবং আরও কার্যকর ifconfigকারণ এটি আইওএসটিএল সিস্টেম কলের পরিবর্তে নেটলিঙ্ক সকেট ব্যবহার করে।

কেউ কি এ সম্পর্কে কিছুটা ব্যাখ্যা করতে পারেন কারণ আমি বুঝতে পারি না যে হুডের নীচে কী চলছে?

পিএস আমি এই সরঞ্জামগুলিতে এই বিষয়টি সম্পর্কে অবগত রয়েছি কিন্তু তারা কীভাবে কাজ করে তা এই নির্দিষ্ট পার্থক্যের সমাধান করে না

উত্তর:


39

অন্যান্য ifconfigঅপারেটিং সিস্টেমের সাথে সামঞ্জস্য রেখে ফ্রিবিএসডি এবং ওপেনবিএসডি-র মতো অপারেটিং সিস্টেমের কমান্ডটি আপডেট করা হয়েছিল। এটি আজকাল সেই অপারেটিং সিস্টেমে সমস্ত ধরণের নেটওয়ার্ক ইন্টারফেস সেটিংস কনফিগার করতে পারে এবং নেটওয়ার্ক প্রোটোকলের একটি ব্যাপ্তি পরিচালনা করতে পারে। বিএসডিগুলি ioctl()এই বিষয়গুলির জন্য সহায়তা সরবরাহ করে।

লিনাক্স জগতে এটি ঘটেনি। আজ, তিনটি ifconfigআদেশ আছে:

  • ifconfigGNU inetutils থেকে
    jdebp% inetutils-ifconfig -l
    enp14s0 enp15s0 lo
    jdebp% inetutils-ifconfig lo
    লিংক এনক্যাপ: স্থানীয় লুপব্যাক
          ইনেট অ্যাডার: 127.0.0.1 বিকাশ: 0.0.0.0 মাস্ক: 255.0.0.0
          ইউপি লুপব্যাক চলমান এমটিইউ: 65536 মেট্রিক: 1
          আরএক্স প্যাকেট: 9087 ত্রুটি: 0 বাদ: 0 ওভাররানস: 0 ফ্রেম: 0
          টিএক্স প্যাকেট: 9087 ত্রুটি: 0 বাদ: 0 ওভাররানস: 0 ক্যারিয়ার: 0
          সংঘর্ষ: 0 txqueuelen: 1000
          আরএক্স বাইট: 51214341 টিএক্স বাইট: 51214341
    jdebp%
  • ifconfigথেকে নেট-3 নেট-সরঞ্জাম
    jdebp% ifconfig -l
    ifconfig: অপশন --help 'ব্যবহারের তথ্য দেয়।-l' not recognised.
    ifconfig:
    jdebp% ifconfig লো
    lo: পতাকাগুলি = 73 <ইউপি, লুপব্যাক, চালানো> এমটিউ 65536
        ইনেট 127.0.0.1 নেটমাস্ক 255.0.0.0
        inet6 :: 1 উপসর্গ 128 স্কোপিড 0x10 <হোস্ট>
        inet6 :: 2 উপসর্গ 128 স্কোপিড 0x80 <compat, গ্লোবাল>
        inet6 fe80 :: উপসর্গ 10 স্কোপিড 0x20 <লিঙ্ক>
        লুপ txqueuelen 1000 (স্থানীয় লুপব্যাক)
        আরএক্স প্যাকেট 9087 বাইট 51214341 (48.8 মাইবি)
        আরএক্স ত্রুটি 0 0 টি 0 ওভাররান 0 ফ্রেম 0 কেটে গেছে
        টিএক্স প্যাকেট 9087 বাইট 51214341 (48.8 মাইবি)
        টিএক্স ত্রুটি 0 0 টি 0 ছাড়িয়ে গেছে 0 ক্যারিয়ার 0 সংঘর্ষ 0
    jdebp%
  • ifconfig(সংস্করণ 1.40 এর) নশ টুলসেট থেকে
    jdebp% ifconfig -l
    enp14s0 enp15s0 lo
    jdebp% ifconfig লো
    দেখ
        লুপব্যাক চলমান লিঙ্ক আপ
        লিঙ্ক ঠিকানা 00: 00: 00: 00: 00: 00 bdddr 00: 00: 00: 00: 00: 00 
        inet4 ঠিকানা 127.0.0.1 উপসর্গ 8 8 bdddr 127.0.0.1 
        inet4 ঠিকানা 127.53.0.1 উপসর্গ 8 8 bdddr 127.255.255.255 
        inet6 ঠিকানা :: 2 সুযোগ 0 উপসর্গ 128 
        inet6 ঠিকানা fe80 :: সুযোগ 1 উপসর্গ 10 
        inet6 ঠিকানা :: 1 সুযোগ 0 উপসর্গ 128
    jdebp% sudo ifconfig lo inet4 127.1.0.2 ওরফে
    jdebp% sudo ifconfig lo inet6 :: 3/128 ওরফে
    jdebp% ifconfig লো
    দেখ
        লুপব্যাক চলমান লিঙ্ক আপ
        লিঙ্ক ঠিকানা 00: 00: 00: 00: 00: 00 bdddr 00: 00: 00: 00: 00: 00 
        inet4 ঠিকানা 127.0.0.1 উপসর্গ 8 8 bdddr 127.0.0.1 
        inet4 ঠিকানা 127.1.0.2 উপসর্গ 32 32 bdddr 127.1.0.2 
        inet4 ঠিকানা 127.53.0.1 উপসর্গ 8 8 bdddr 127.255.255.255 
        inet6 ঠিকানা :: 3 সুযোগ 0 উপসর্গ 128 
        inet6 ঠিকানা :: 2 সুযোগ 0 উপসর্গ 128 
        inet6 ঠিকানা fe80 :: সুযোগ 1 উপসর্গ 10 
        inet6 ঠিকানা :: 1 সুযোগ 0 উপসর্গ 128 
    jdebp% 

যেমন আপনি দেখতে পাচ্ছেন, জিএনইউ ইনটুটিলেটস এবং নেট -3 নেট-সরঞ্জামগুলির ifconfigআইপিভি 6 এর সাথে সম্মত , একাধিক ঠিকানা রয়েছে এমন ইন্টারফেসের ক্ষেত্রে এবং এর মতো কার্যকারিতা সম্পর্কে সম্মতভাবে কিছু চিহ্নিত ঘাটতি রয়েছে -l

আইপিভি 6 সমস্যাটি কিছু অংশে নিজেরাই সরঞ্জামগুলিতে কিছু অনুপস্থিত কোড রয়েছে। তবে মূলত এটি লিনাক্স ioctl()ইন্টারফেসের মাধ্যমে আইপিভি 6 কার্যকারিতা সরবরাহ করে না (অন্যান্য অপারেটিং সিস্টেমের মতো করে) এই কারণে ঘটেছিল । এটি প্রোগ্রামগুলিকে কেবল নেটওয়ার্কিং ioctl()এর মাধ্যমে আইপিভি 4 অ্যাড্রেসগুলি দেখতে এবং পরিচালনা করতে দেয় ।

লিনাক্স পরিবর্তে একটি ভিন্ন ইন্টারফেসের মাধ্যমে এই কার্যকারিতা প্রদান করে, send()এবং recv()সকেট ঠিকানা পরিবার, একটি বিশেষ, এবং কিছুটা বিজোড়, AF_NETLINK

গনুহ এবং নিট -3 ifconfigগুলি পারে এই নতুন API- টি ব্যবহার করার স্থায়ী হয়েছে। এমনটি বিরুদ্ধে যুক্তি হল যে এটি অন্যান্য অপারেটিং সিস্টেম পোর্টেবল ছিল না, কিন্তু এই প্রোগ্রাম অনুশীলন ছিল ইতিমধ্যে পোর্টেবল না যাহাই হউক না কেন , যাতে অনেক একটি যুক্তি ছিল না।

তবে সেগুলি সামঞ্জস্য করা হয়নি এবং আজ অবধি পূর্বের মতো প্রদর্শিত রয়েছে। (কয়েক বছর ধরে কিছু লোক তাদের উপর বিভিন্ন পয়েন্টে কাজ করেছে, তবে উন্নতিগুলি, দুঃখের সাথে বলতে হয়, এটি কখনই প্রোগ্রামগুলিতে রূপ দেয়নি For উদাহরণস্বরূপ: বার্নড একেনফেলস কখনও কোনও প্যাচ গ্রহণ করেনি যা নেট -3 নেট-সরঞ্জামগুলিতে কিছু নেটলিংক এপিআই সক্ষমতা যুক্ত করেছে) ifconfig, প্যাচটি লেখার 4 বছর পরে।)

পরিবর্তে, কিছু লোক পুরোপুরি একটি ipকমান্ড হিসাবে টুলসেটটিকে নতুনভাবে আবিষ্কার করেছিল, যা নতুন লিনাক্স এপিআই ব্যবহার করেছিল, একটি আলাদা বাক্য গঠন ছিল এবং একটি ফ্যাশনেবল- স্টাইল ইন্টারফেসের পিছনে বেশ কয়েকটি অন্যান্য ফাংশন একত্রিত করেছিল ।command subcommand

আমার ifconfigএমন একটি দরকার ছিল ifconfigযা ফ্রিবিএসডি-র কমান্ড-লাইন সিনট্যাক্স এবং আউটপুট শৈলীযুক্ত ছিল (যা জিএনইউ বা নেট -3 ifconfigনেই, এবং যা ipঅবশ্যই নেই)। তাই আমি একটি লিখেছি। প্রমাণ হিসাবে যে কেউ ifconfigলিনাক্সে নেটলিঙ্ক এপিআই ব্যবহার করতে পারে এমনটি লিখতে পারে it

সুতরাং ifconfigআপনি যা উদ্ধৃত করেছেন তার মতো প্রাপ্ত বুদ্ধি , আর সত্য নয়। " নেটলিঙ্ক ব্যবহার করে না " এটি এখন অসত্যifconfig । দু'টি coveredেকে থাকা কম্বলটি তিনটি কভার করে না।

"নেটলিঙ্কটি আরও দক্ষ" এটি বলা সর্বদা অসত্য ছিল been ifconfigনেটলিংক এপিআই এবং এপিআইয়ের মধ্যে দক্ষতার বিষয়টি যখন আসে তখন যে কারও সাথে কাজ করে সেগুলিতে আসলে তেমন কিছু হয় না ioctl()। যে কোনও দেওয়া কাজের জন্য একই সংখ্যক এপিআই কল দেয়।

প্রকৃতপক্ষে, প্রতিটি এপিআই কল হ'ল নেটলিংকের ক্ষেত্রে দুটি সিস্টেম কল, ioctl()সিস্টেমের মধ্যে একটির বিপরীতে । এবং তাত্ক্ষণিকভাবে নেটলিঙ্ক এপিআইয়ের অসুবিধা রয়েছে যে একটি ভারী-ব্যবহৃত সিস্টেমে এটি স্পষ্টভাবে সরঞ্জামটি সম্ভাব্যভাবে সংযোজন করে যা কখনও এপিআই কলের ফলাফল সম্পর্কে অবহিত করে একটি স্বীকৃতি বার্তা গ্রহণ করে না।

ipছাড়া, এটি জিএনইউ এবং নেট -৩ ifconfigএস এর চেয়ে "আরও বহুমুখী" বলা অসত্য, কারণ এটি নেট লিঙ্ক ব্যবহার করে । এটি আরও বহুমুখী কারণ এটি আরও বেশি কাজ করে, একটি বড় প্রোগ্রামে এমন কাজ করে যা একটি ব্যতীত অন্য পৃথক প্রোগ্রামের সাথে করে ifconfig। এটি সেই অতিরিক্ত কাজগুলি সম্পাদনের জন্য অভ্যন্তরীণভাবে ব্যবহার করে এমন এপিআইয়ের ছাপ দিয়ে কেবল এটি বহুমুখী নয়। এপিআইয়ের অন্তর্নিহিত কিছুই নেই। এক একটি সব কিছু এক সরঞ্জাম যা FreeBSD 'র ব্যবহৃত লিখতে পারে ioctl()এপিআই, উদাহরণস্বরূপ রাষ্ট্র, এবং সমানভাবে ভাল যে এটা "আরো বহুমুখী" চেয়ে পৃথক ifconfig, route, arp, এবং ndpকমান্ড।

এক লিখতে পারে route, arpএবং ndpলিনাক্সের জন্য যে কমান্ড Netlink এপিআই, খুব ব্যবহার করা হয়েছে।

আরও পড়া


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

1
"নেটলিঙ্ক হ'ল আইপি কে আরও বহুমুখী করে তোলে" "আইপি আরও বহুমুখী কারণ এটি নেটলিঙ্ক ব্যবহার করে" এর মতই, প্রশ্নটিতে ঠিক আছে
জেডিবিপি

8

ifconfigআমাদের অনেক বিতরণে থাকা মানটি বেশ কয়েকটি কারণে অবনমিত হয়। কার্নেলের সাথে পুরানো এবং সীমিত উপায়ে কথা বলে এবং বাস্তবে সমস্ত নেটওয়ার্ক কনফিগারেশন বুঝতে পারে না। আপনি ifconfigযে জাতীয় সংস্করণগুলির সাথে করতে সক্ষম হচ্ছেন এমন কয়েকটি নেটওয়ার্ক কনফিগারেশন হেরফের করতে সক্ষম হবেন না ip। এছাড়াও, ifconfigনেটওয়ার্ক নেমস্পেসের জন্য সমর্থন সীমিত।

একটি উপাখ্যানকথা হিসাবে, আমি ইন্টারফেস আইপি ওরফে পেয়েছি যা কেবলমাত্র ipসুসিতে দেখা যায় এবং নয় ifconfig

হুডের নীচে পার্থক্য হিসাবে: আইফোনফিগ বনাম আইপি থেকে: কী পার্থক্য এবং তুলনা নেটওয়ার্ক কনফিগারেশন

যদিও ipপ্রথম সাইটে কিছুটা জটিল মনে হতে পারে তবে এটি কার্যকরীভাবে ifconfig এর চেয়ে অনেক বেশি বিস্তৃত। এটি নেটওয়ার্কিং স্ট্যাকের দুটি স্তর অর্থাৎ স্তর 2 (লিঙ্ক স্তর), স্তর 3 (আইপি স্তর) এ কার্যত সংগঠিত এবং নেট-সরঞ্জাম প্যাকেজ থেকে উল্লিখিত সমস্ত কমান্ডের কাজ করে।

যদিও ifconfigবেশিরভাগ ডিসপ্লে বা মডিফাই একটি সিস্টেমের ইন্টারফেস, এই কমান্ড নিম্নলিখিত কাজগুলো কাজ করতে সক্ষম হল:

  • ইন্টারফেসের বৈশিষ্ট্য প্রদর্শন করা বা সংশোধন করা।

  • হোস্টের জন্য নতুন স্ট্যাটিক এআরপি এন্ট্রি তৈরি করার সাথে সাথে এআরপি ক্যাশে এন্ট্রিগুলি যুক্ত করা, সরানো।

  • সমস্ত ইন্টারফেসের সাথে যুক্ত ম্যাক অ্যাড্রেসগুলি প্রদর্শন করা হচ্ছে।

  • কার্নেল রাউটিং টেবিলগুলি প্রদর্শন এবং সংশোধন করা হচ্ছে।

মূল হাইলাইটগুলির মধ্যে একটি যা এটির প্রাচীন কাউন্টার পার্ট ইফকনফিগ থেকে পৃথক করে তা হ'ল নেটওয়ার্ক কনফিগারেশনের জন্য পরেরটি আইওএসটিএল ব্যবহার করে যা কার্নেলের সাথে মিথস্ক্রিয়া করার একটি প্রশংসাজনক উপায়, যখন প্রাক্তন তার জন্য নেটলিঙ্ক সকেট ব্যবস্থার সুবিধা গ্রহণ করে যা অনেক বেশি নমনীয় উত্তরসূরি is rtnetlink ব্যবহার করে কার্নেল এবং ব্যবহারকারীর স্থানের মধ্যে আন্তঃযোগাযোগের জন্য ioctl এর (যা নেটওয়ার্কিং পরিবেশের ম্যানিপুলেশন সক্ষমতা যুক্ত করে)।

নেটলিঙ্কের ব্যবহার / সুবিধা সম্পর্কে: এলজে থেকে - কার্নেল কর্নার - নেটলিঙ্ক সকেট কেন এবং কীভাবে ব্যবহার করবেন

নেটলিঙ্ক সকেট একটি বিশেষ আইপিসি যা কার্নেল এবং ব্যবহারকারী-স্থান প্রক্রিয়াগুলির মধ্যে তথ্য স্থানান্তর করার জন্য ব্যবহৃত হয়। এটি ব্যবহারকারী-স্পেস প্রক্রিয়াগুলির জন্য স্ট্যান্ডার্ড সকেট এপিআই এবং কার্নেল মডিউলগুলির জন্য একটি বিশেষ কার্নেল এপিআইয়ের মাধ্যমে উভয়ের মধ্যে একটি ফুল-ডুপ্লেক্স যোগাযোগ লিঙ্ক সরবরাহ করে। নেটলিঙ্ক সকেট AF_NETLINK ঠিকানা পরিবার ব্যবহার করে।

.....

উপরোক্ত বৈশিষ্ট্যগুলি ব্যবহারকারী এবং কার্নেল ওয়ার্ল্ডের মধ্যে যোগাযোগের জন্য সিস্টেম কল, আইওএসটিএল বা প্রকোপ ফাইল সিস্টেমের পরিবর্তে নেটলিঙ্ক ব্যবহার করে কেন? নতুন বৈশিষ্ট্যগুলির জন্য সিস্টেম কল, আইওএসটিএল বা প্রোক ফাইল যুক্ত করা একটি অনানুষ্ঠানিক কাজ; আমরা কার্নেলটিকে দূষিত করে সিস্টেমের স্থায়িত্বকে ক্ষতিগ্রস্থ করার ঝুঁকি নিয়েছি। নেটলিঙ্ক সকেটটি সহজ, যদিও: কেবলমাত্র একটি ধ্রুবক, প্রোটোকল টাইপ, নেটলিঙ্ক.কে যুক্ত করা দরকার। তারপরে, কার্নেল মডিউল এবং অ্যাপ্লিকেশনটি অবিলম্বে সকেট-স্টাইলের এপিআই ব্যবহার করে কথা বলতে পারে।

....

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

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