ডিএনএস লুকআপগুলি মাঝে মাঝে 5 সেকেন্ড সময় নেয়


11

আমার একটি ভিএম চলছে যাঁর দেবিয়ান হুইজি রয়েছে যার উপর কিছু হোস্ট-নেম লুকস সম্পূর্ণ হতে বেশ কয়েক সেকেন্ড সময় নেয়, যদিও সমাধানকারী তত্ক্ষণাত জবাব দেয়। স্ট্রেঞ্জলি, সঙ্গে খোঁজ getaddrinfo()প্রভাবিত হয়, কিন্তু gethostbyname()নয়।

লোকালগুলি ভেঙে যাওয়ার সম্ভাবনা বাদ দিতে আমি গুগল রেজলভারগুলিতে স্যুইচ করেছি, সুতরাং আমার /etc/resolv.confচেহারাটি এমন দেখাচ্ছে:

search my-domain.com
nameserver 8.8.4.4
nameserver 8.8.8.8

আমার nsswitch.confলাইন আছে:

hosts: files dns

এবং আমার /etc/hostsমধ্যে অস্বাভাবিক কিছু নেই।

যদি আমি চেষ্টা করি তবে telnet webserver 80নামটির রেজোলিউশন পাওয়ার আগে এটি বেশ কয়েক সেকেন্ডের জন্য স্তব্ধ হয়ে যায়। একটি ltraceআউটপুট [1] দেখায় যে হ্যাং একটি getaddrinfo()কলে রয়েছে:

getaddrinfo("ifconfig.me", "telnet", { AI_CANONNAME, 0, SOCK_STREAM, 0, 0, NULL, '\000', NULL }, 0x7fffb4ffc160) = 0 <5.020621>

তবে, tcpdumpপ্রকাশ করে যে নেমসার্ভার তত্ক্ষণাত জবাব দিয়েছিল, এবং এটি কেবল দ্বিতীয় telnetউত্তরেই অবরুদ্ধ হয়েছিল। উত্তরগুলি একরকম দেখাচ্ছে:

05:52:58.609731 IP 192.168.1.75.43017 > 8.8.4.4.53: 54755+ A? ifconfig.me. (29)
05:52:58.609786 IP 192.168.1.75.43017 > 8.8.4.4.53: 26090+ AAAA? ifconfig.me. (29)
05:52:58.612188 IP 8.8.4.4.53 > 192.168.1.75.43017: 54755 4/0/0 A 219.94.235.40, A 133.242.129.236, A 49.212.149.105, A 49.212.202.172 (93)

[...five second pause...]

05:53:03.613811 IP 192.168.1.75.43017 > 8.8.4.4.53: 54755+ A? ifconfig.me. (29)
05:53:03.616424 IP 8.8.4.4.53 > 192.168.1.75.43017: 54755 4/0/0 A 219.94.235.40, A 133.242.129.236, A 49.212.149.105, A 49.212.202.172 (93)
05:53:03.616547 IP 192.168.1.75.43017 > 8.8.4.4.53: 26090+ AAAA? ifconfig.me. (29)
05:53:03.618907 IP 8.8.4.4.53 > 192.168.1.75.43017: 26090 0/1/0 (76)

আমি হোস্ট ফায়ারওয়াল লগগুলি পরীক্ষা করেছি এবং 53 বন্দরে কোনও কিছুই অবরুদ্ধ করা হচ্ছে না।

কী কারণে প্রথম ডিএনএসের জবাব উপেক্ষা করা হচ্ছে?

[1] আমি আমার সাথে কয়েকটি লাইন যুক্ত করেছি ltrace.confযাতে আমি addrinfoকাঠামোর ভিতরে দেখতে পারি ।


ভিএম এর এনআইসি সেটআপ কেমন? সেতু নির্মাণ? ন্যাট?
slm

এটি নেটেড। আমি নিশ্চিত না যে NATটি প্রয়োগ করা হয়েছে ঠিক কোথায় (ইএসএক্স দ্বারা বা আরও প্রবাহিত হোক); আপনি যদি মনে করেন এটি কার্যকর হয় কিনা তা আমি খুঁজে পেতে পারি।
ফ্লপ

আমি সন্দেহ করব যে এটি NAT + VM এর প্রভাব ফেলছে।
slm

ভাল হতে পারে - নীচে কেম্পনিউর উত্তর সম্পর্কে আমার মন্তব্য দেখুন।
ফ্লপ

এটি নেটওয়ার্কি ছিল, তবে বিশেষত NAT এর কারণ নয় - নীচে আমার উত্তরটি দেখুন।
ফ্লপ

উত্তর:


13

প্রথম ডিএনএসের উত্তর অগ্রাহ্য করা হয়নি। getaddrinfo()এটি প্রথম এএএএ ক্যোয়ারির (আইডি: 26090) প্রতিক্রিয়া না পাওয়া পর্যন্ত ফিরে আসেনি। সুতরাং এখানে আসল সমস্যাটি হ'ল কেন আপনার মেশিনটি এএএএ ক্যোয়ারির সাথে সাথে প্রতিক্রিয়াটি গ্রহণ করে নি, যখন এটি একটি ক্যোয়ারির (আইডি: 54755) প্রতিক্রিয়া পেয়েছে।

getaddrinfo()এবং এর মধ্যে পার্থক্যের মধ্যে একটি gethostbyname()হ'ল প্রাক্তন আইপিভি 4 এবং আইপিভি 6 উভয়ই সমর্থন করে, তবে পরবর্তীকালে কেবলমাত্র আইপিভি 4 সমর্থন করে। সুতরাং আপনি 0 ( ) তে সেট করার getaddrinfo()সাথে কল করলে, প্রদত্ত ডোমেন নামটির জন্য এ এবং এএএএ উভয় প্রশ্নের জন্য কোনও প্রতিক্রিয়া না পাওয়া (বা একটি টাইমআউট হিট) না হওয়া পর্যন্ত এটি ফিরে আসবে না । একটি এ রেকর্ডের জন্য কেবল অনুসন্ধান করে।ai_familyAF_UNSPECgethostbyname()

আপনার সমস্যার কারণ কী হতে পারে তা দূর থেকে নির্ধারণ করা শক্ত, বিশেষত আপনি কিছু tcpdumpআউটপুট কেটে ফেলেছেন। আপনার ভিএম এবং গুগল পাবলিক ডিএনএস রেজলভারগুলির মধ্যে ডিএনএস ট্র্যাফিকটি বেছে বেছে কিছু ফিল্টারিং / ড্রপিং হতে পারে। আমি কেভিএম ডেবিয়ান হুইজি ভিএম ব্যবহার করে আপনার সমস্যাটি পুনঃপ্রসারণ করার চেষ্টা করেছি, তবে telnet ifconfig.meপ্রায় অবিলম্বে Trying <IP_address_here>...লাইনটি মুদ্রণ করেছে (এর অর্থ এটি ইতিমধ্যে নামটি সমাধান করেছে)।


আপনার বিস্তারিত উত্তরের জন্য ধন্যবাদ। আমি টিসিপিডাম্পের বাইরে কিছু কাটনি, বিরতি কোথায় ছিল তা পরিষ্কার করার জন্য আমি কেবল একটি লাইন sertedুকিয়েছি। আপনি অবশ্যই আমাকে কিছু দেওয়ার জন্য দিয়েছেন; দুটি লাইব্রেরি কলগুলির মধ্যে গুরুত্বপূর্ণ পার্থক্যটি আমি বুঝতে পারি নি।
ফ্লপ

যদি আর ডিএনএস-সম্পর্কিত প্যাকেটগুলি আপনার মেশিনে আঘাত না করে তবে কিছু সম্ভবত এটির ট্র্যাফিক ফিল্টার করছে (প্রয়োজনে উদ্দেশ্য নয়)। যাইহোক, আপনি যদি কোনও সমাধান খুঁজে পান তবে আপনি কি দয়া করে এখানে ভাগ করে নেবেন?
কেম্পনিউ

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

সমাধান আমার নিজের উত্তরে যুক্ত করা হয়েছে। আপনার সাহায্যের জন্য আবার অনেক ধন্যবাদ।
ফ্লপ

9

এটি ভিএমওয়্যার অবকাঠামোটির সামনে বসে থাকা জুনিপার ফায়ারওয়ালের একটি অত্যধিক নিয়ন্ত্রিত নিয়মের কারণে ঘটেছিল।

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

আমার সহকর্মী যারা এই নেটওয়ার্কটি চালাচ্ছেন তারা তা উল্লেখ করেছেন

জুনিপার ফায়ারওয়ালে ডিফল্ট আচরণটি ডিএনএস-সম্পর্কিত সেশনটি বন্ধ করার সাথে সাথেই এই অধিবেশনটির সাথে ডিএনএস উত্তর মিলছে matching

সুতরাং ফায়ারওয়াল আইপিভি 4 এর প্রতিক্রিয়া দেখছিল, এটি ভিএম এর প্রশ্নের উত্তর দিয়েছিল এবং সেই বন্দরের অভ্যন্তরীণ পথটি বন্ধ করে দিয়েছে। নিম্নলিখিত আইপিভি 6 উত্তর প্যাকেট বাদ দেওয়া হয়েছিল। উভয় প্যাকেট দ্বিতীয়বার কেন এটি তৈরি হয়েছিল তা আমি জানিনা, তবে ফায়ারওয়ালে এই বৈশিষ্ট্যটি অক্ষম করে দেওয়া সমস্যার সমাধান করে।

এটি জুনিপার কেবি থেকে সম্পর্কিত একটি নিষ্কাশন:

এখানে এমন একটি দৃশ্য রয়েছে যেখানে ডিএনএস রিপ্লাই প্যাকেটগুলি বাদ পড়ে:

  1. ডিএনএস ট্র্যাফিকের জন্য একটি সেশন তৈরি করা হয় যখন প্রথম ডিএনএস কোয়েরি প্যাকেট ফায়ারওয়ালটিকে আঘাত করে এবং সেখানে অনুমতি প্রদানকারী নীতিটি কনফিগার করা আছে। ডিফল্ট সময়সীমা 60 সেকেন্ড।
  2. অধিবেশনটি বন্ধ হওয়ার সাথে সাথেই একটি নতুন ডিএনএস কোয়েরি সঞ্চারিত হয় এবং যেহেতু এটি একটি বিদ্যমান সেশনের সাথে মিলিত হয় (যেহেতু উত্স এবং গন্তব্য পোর্ট / আইপি জুড়ি সর্বদা একই থাকে), তাই এটি ফায়ারওয়াল দ্বারা ফরোয়ার্ড করা হয়। নোট করুন যে সেশনের সময়সীমা নতুন হওয়া আগত প্যাকেট অনুসারে রিফ্রেশ হয় না।
  3. প্রথম ডিএনএস ক্যোয়ারী প্রতিক্রিয়া (উত্তর) ডিভাইসটিকে হিট করে যখন নির্ধারিত ডিএনএস সেশনটি পুরনো হয়ে গেছে, নির্ধারিত সময়সীমা যতই থাকবে less
  4. যখন কোনও ডিএনএসের উত্তর ফায়ারওয়ালের মধ্য দিয়ে যায়, সেশনটি পুরানো।
  5. পরবর্তী কোনও ডিএনএস উত্তর ফায়ারওয়াল দ্বারা বাদ দেওয়া হয়, যেহেতু কোনও অধিবেশন উপস্থিত নেই।

আপনি যদি এই উত্তরটি সমর্থন করার কথা ভাবছেন তবে অনুগ্রহ করে কেম্পনিউর উত্তরটিকেও উজ্জীবিত করুন। এটি না করে আমি এখনও ভিএম-তে কিছু কনফিগারেশন সমস্যা সন্ধান করার চেষ্টা করছি।


1
আমরা ডেবিয়ান 8.2 তে একই লক্ষণগুলি পেয়েছি। আমাদের ভিন্ন কারণে ছিল, এবং "সমাধান" আলাদা ছিল (ক্লায়েন্ট-সাইড)। আমি আমাদের নির্দিষ্ট সমস্যা এবং আরও সাধারণ সমস্যা সম্পর্কে ব্লগ: philippecloutier.com/... আমি Flup এবং Kempniu ধন্যবাদ আপনার প্রশ্নের যেহেতু চান এবং উত্তর আমাকে সঠিক পথে উপর করা।
ফিলিপ ক্লিটিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.