কীভাবে এএএএ লুকআপ অক্ষম করবেন?


35

... আমাদের নিয়ন্ত্রণের বাইরে থাকা ভাঙা ডিএনএস সার্ভারগুলির ক্ষতিপূরণ দিতে।

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

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

আমি যে সমাধানগুলি সন্ধান করছি ...

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

সর্বাধিক সুস্পষ্ট সমাধান হ'ল রেজোলভার লাইব্রেরিটি কনফিগার করা যেমন / ইত্যাদি / ol রেজোলভ , এনএসভিচ , গাই }। কনফ থেকে AAAA রেকর্ডগুলি জিজ্ঞাসা না করা। একজন resolv.conf বিকল্প no-inet6প্রস্তাবিত এখানে হবে ঠিক আমি যা খুঁজছেন করছি। দুর্ভাগ্যক্রমে এটি প্রয়োগ করা হয় না, কমপক্ষে আমাদের সিস্টেমে নয় (libc6-2.13-38 + deb7u4 Debian 7 এ; libc6-2.19-0ubuntu6.3 উবুন্টু 14.04 এ)

তাহলে কিভাবে? কেউ এসএফ এবং অন্য কোথাও প্রস্তাবিত নীচের পদ্ধতিগুলি সন্ধান করে তবে সেগুলির মধ্যে তেমন কাজ করে না:

  • IPv6 পুরোপুরি অক্ষম করা, যেমন /etc/modprobe.d/ এ ipv6 LKM কে কালো তালিকাভুক্ত করে বা sysctl -w net.ipv6.conf.all.disable_ipv6=1। ( কৌতূহলের বাইরে ) যেখানে আইপিভি 6 অক্ষম রয়েছে সেখানে কেন এএএএর জন্য রিসোলভার জিজ্ঞাসা করছে? )
  • /Etc/resolv.conf options inet6থেকে সরানো হচ্ছে। এটি প্রথম স্থানে ছিল না, inet6আজকাল সাধারণভাবে ডিফল্টরূপে সক্ষম করা হয়েছে।
  • options single-request/Etc/resolv.conf এ সেট করা হচ্ছে। এটি কেবলমাত্র নিশ্চিত করে যে A এবং AAAA ক্যোয়ারীগুলি সমান্তরাল না হয়ে ক্রমানুসারে করা হয়েছে
  • precedence/Etc/gai.conf এ পরিবর্তন করা হচ্ছে। এটি ডিএনএস কোয়েরিকে প্রভাবিত করে না, কেবলমাত্র একাধিক উত্তর কীভাবে প্রক্রিয়াকরণ করা হয়।
  • বাহ্যিক রেজোলভারগুলি (বা ভাঙা ডিএনএস সার্ভারগুলিকে ঘৃণা করে এমন স্থানীয় রেজলভার ডেমন চালানো) সহায়তা করবে তবে সাধারণত সংস্থার ফায়ারওয়াল নীতিগুলি দ্বারা এটি অনুমোদিত নয়। এবং এটি অভ্যন্তরীণ সংস্থানগুলি অ্যাক্সেসযোগ্য করে তুলতে পারে।

বিকল্প কদর্য ধারণা:

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

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


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

লোকালহোস্টে আপনি কোনও পূর্ণ সমাধানকারী চালাচ্ছেন না এমন কোনও কারণ? এইভাবে আপনি সম্পূর্ণরূপে অবিশ্বাস্য ডিএনএস সমাধানকারীদের উপর নির্ভরতা দূর করে।
স্যান্ডার স্টেফান

@ স্যান্ডারস্টেফান কোম্পানির ফায়ারওয়াল নীতিগুলি সাধারণত এটিকে অস্বীকার করে। তবে অন্য কোথাও এটি একটি বিকল্প। আমি পরে এটি আমার প্রশ্নের সাথে যুক্ত করব।
নিলস টোডটম্যান

3
@ জোয়কওয়ার্টিটি আইপিভি 6 সাইটে সমর্থিত কিনা তা আমরা কোনও অনুমান করছি না। আমরা অনুমান করি যদিও ডিএনএস সার্ভারগুলি মান-সম্মতিযুক্ত। এছাড়াও, কিছু বিভাগের দুর্ভাগ্যবশত না তাদের পরিকাঠামো সঠিকভাবে কনফিগার করার দক্ষতা অভাব। এ সম্পর্কে ভোঁতা থাকার জন্য দুঃখিত।
নিলস টোডটম্যান

4
আমি বুঝতে পারছি তুমি কি বলছ। আপনার বাক্সটি অন্য নেটওয়ার্কের মতো না হয়ে তাদের নেটওয়ার্কে কাজ করা দরকার এবং আপনি এখানে যা জিজ্ঞাসা করছেন সেটাই এটি। আমি যখন আইটি ক্ষেত্রে আমাদের গ্রাহকদের দোষ দিই এবং তাদের সম্মান না করি তখন আমি কিছুটা দ্বিধায় পড়ে যাই। তারা আমাদের রুটি এবং মাখন হয়। ভাল বা খারাপের জন্য আমাদের সেই সম্মান করা এবং তাদের শ্রদ্ধা করা দরকার। আমাদের গ্রাহকরা আমাদের ব্যবসায়ের ক্ষেত্রে বাধা নয়, তারা আমাদের ব্যবসায়ের কারণ।
জোয়কওয়ার্টি

উত্তর:


9

ব্যবহার বন্ধ করুন gethostbyname()getaddrinfo()পরিবর্তে আপনি ব্যবহার করা উচিত, এবং এখন বছরের জন্য করা উচিত ছিল। ম্যান পেজ এমনকি আপনাকে এই সম্পর্কে সতর্ক করে।

জেথোস্টবাইনেম * (), জেথোস্টবিয়াড্ডার * (), হেরর (), এবং hstrerror () ফাংশনগুলি অপ্রচলিত। অ্যাপ্লিকেশনগুলির পরিবর্তে getaddrinfo (3), getnameinfo (3), এবং gai_strerror (3) ব্যবহার করা উচিত।

এখানে সি-তে একটি দ্রুত নমুনা প্রোগ্রাম রয়েছে যা কেবল একটি নামের জন্য কেবলমাত্র একটি রেকর্ড অনুসন্ধান করতে দেখায় এবং একটি ওয়্যারশার্ক ক্যাপচার দেখায় যে কেবল একটি রেকর্ড লুকআপ নেটওয়ার্ক জুড়ে গেছে।

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

ইন Wireshark ক্যাপচার , 172.25.50.3 স্থানীয় DNS সমাধানকারী হয়; ক্যাপচারটি সেখানে নেওয়া হয়েছিল, সুতরাং আপনি এর বহির্গামী অনুসন্ধান এবং প্রতিক্রিয়াগুলিও দেখতে পাবেন। মনে রাখবেন যে কেবলমাত্র একটি রেকর্ডের জন্য অনুরোধ করা হয়েছিল। এএএএএর কোনও অনুসন্ধান কখনও করা হয়নি।

#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <stdlib.h>
#include <netdb.h>
#include <stdio.h>

int main(void) {
    struct addrinfo hints;
    struct addrinfo *result, *rp;
    int s;
    char host[256];

    memset(&hints, 0, sizeof(struct addrinfo));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = 0;

    s = getaddrinfo("www.facebook.com", NULL, &hints, &result);
    if (s != 0) {
        fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(s));
        exit(EXIT_FAILURE);
    }

    for (rp = result; rp != NULL; rp = rp->ai_next) {
        getnameinfo(rp->ai_addr, rp->ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST);
        printf("%s\n", host);
    }
    freeaddrinfo(result);
}

মজাদার! কোন অ্যাপ্লিকেশনগুলি এএএএ অনুরোধগুলি ট্রিগার করে তা তদন্ত করব। যদি এটি কেবল আমাদের হয়, তবে আমি আপনার পরামর্শটি আমাদের ডেভগুলিতে রিলে করব। তবে আমার দৃ a় কুশল রয়েছে যে প্রচুর ডেবিয়ান / উবুন্টু-প্যাকেজড সফ্টওয়্যার এতে ভুগছে, এবং আমরা সেগুলি প্যাচ করব না।
নীলস টোডটম্যান

আপনার আবেদন সম্ভবত সবচেয়ে গুরুত্বপূর্ণ এক। এমনকি আপনি যদি অন্য সমস্ত কিছু ঠিক করতে না পারেন তবে এটি পরিস্থিতির উন্নতি করতে পারে।
মাইকেল হ্যাম্পটন

4

সন্দেহ হলে, সোর্স কোডের দিকে যান! সুতরাং, আসুন ... gethostbyname () আকর্ষণীয় দেখায়; যা আমরা যা দেখছি ঠিক তা বর্ণনা করে: প্রথমে IPv6 ব্যবহার করে দেখুন, আপনার পছন্দ মতো উত্তর না পেলে আইপিভি 4-এ ফিরে যান। এই RES_USE_INET6পতাকা কি? এটির পিছনে ট্র্যাকিং করে, এটি পুনরায় সেটআপেশন () থেকে আসছে । এখানেই resolv.confপড়া হয়।

এবং .... এটি আমার ধারণার বাইরে। আমি সম্পূর্ণরূপে অস্পষ্ট যে এটি RES_USE_INET6যদি না হয় তবে সেট করা হচ্ছে resolv.conf


RES_USE_INET6 করতে মাধ্যমে সেট করা options inet6মধ্যে resolv.conf। আমার অনুমান যে আমার সমস্যাটি হ'ল এটি সংকলনের সময় একবার সেট হয়ে গেলে এটি আনসেট করা যায় না , যা সমস্ত বড় ডিস্ট্রোসরা এই দিনগুলিতে করে বলে মনে হচ্ছে (সঠিক?) সুতরাং options no_inet6আমি উপরে উল্লিখিত যে জন্য বৈশিষ্ট্য অনুরোধ ।
নিলস টোডটম্যান

1
দুর্ভাগ্যক্রমে, আপনি কোড থেকে দেখতে পাচ্ছেন, সেখানে কোনও no_inet6বিকল্প বলে মনে হচ্ছে না res_setoptions()। তবে, আপনি (না-) থেকে দেখতে পাচ্ছেন ip6-dotint, এটি যুক্ত করার একটি সহজ পরিবর্তন। তত্ত্ব এটি আপনার ডিস্ট্রো করে ডিফল্ট দ্বারা সেট করা হচ্ছে যে পরীক্ষা করার জন্য, আমি প্যাকেজ সোর্স ফাইল ধরুন এবং একবার "কুমারী" (তা নিশ্চিত করতে প্যাকেজ আচরণ প্রতিলিপি) কম্পাইল এবং তারপর যোগ চাই: { STRnLEN ("no-inet6"), 1, ~RES_USE_INET6 },থেকে options[]অ্যারে এবং কিনা তা দেখতে আপনি যখন এই বিকল্পটি সেট করেন তখন সমস্যা চলে যায় resolv.conf
বিএমডান

1
সবশেষে: এটির মূল্য কী, তার জন্য আমি লোকালহোস্টে একটি ডিএনএস ক্যাশে চালিয়ে সমাধান করব (উপরে আপনি উল্লিখিত হিসাবে)। কোনও কোর সিস্টেম লাইব্রেরির হ্যাক সংস্করণ বজায় রাখার চেয়ে নিজের, হ্যাকড ডিএনএস প্রক্সি / ক্যাশে বজায় রাখা হেকুয়া অনেক সহজ হবে।
বিএমডান

3

আপনি স্থানীয় সমাধানকারী হিসাবে BIND ব্যবহার করতে পারেন, এটিতে এএএএ ফিল্টার করার বিকল্প রয়েছে:

https://kb.isc.org/article/AA-00576/0/Filter-AAAA-option-in-BIND-9-.html


2
এম্বেড থাকা ডিভাইসের জন্য এটি বেশ ভারী ওজন।
মাইকেল হ্যাম্পটন

ধন্যবাদ, আমি বিন্দের এএএএ ফিল্টার সম্পর্কে অবগত ছিলাম না। মাইকেল যেমন উল্লেখ করেছেন, বিন্দের বড় পদচিহ্নের কারণে এটি সম্ভবত আমাদের পক্ষে সমাধান নয়। তবে যারা অন্যান্য পরিস্থিতিতে এএএএ প্রতিক্রিয়াগুলি ফিল্টার করতে চান তাদের পক্ষে এটি একটি কার্যকর উপায় হতে পারে। উবুন্টু আসলে "- সক্ষম-ফিল্টার-এএএএ" এর সাথে বাঁধন তৈরি করে, কমপক্ষে 14.04 এ। দেবিয়ান সম্পর্কে নিশ্চিত নয়। - ipamworldwide.blogspot.co.uk/2011/09/…
নিলস টোডটম্যান

1
আমি 14.04 এ আছি এবং দেখে মনে হয় না যে এই ফিল্টারিং বিকল্পটি উপলব্ধ।
জিতরেক্স

0

আপনি কি পিডিএনএস-পুনরাবৃত্তি সেটআপ করার চেষ্টা করেছেন, এটি আপনার /etc/resolv.conf এ সেট করেছেন এবং এতে "এএএএ" লুক্কিট অস্বীকার করেছেন? মত কিছু ব্যবহারquery-local-address6=


1
query-local-address6=কিছু আলাদা করে (যা থেকে আইপিভি 6 ঠিকানা জিজ্ঞাসা প্রেরণ করতে পারে - দ্রষ্টব্য যে আইপিভি 6 অক্ষম হওয়া সত্ত্বেও, এএএএ অনুরোধগুলি এখনও আইপিভি 4 এর মাধ্যমে সমাধান করা হবে)। এছাড়াও আমি অন্য কোনও সেটিং সনাক্ত করতে পারি না যা এএএএ ক্যোয়ারীগুলি ( doc.powerdns.com/html/built-in-recursor.html ) ফিল্টার করবে । এই তথ্য ব্যতীত আপনার উত্তর খুব সহায়ক নয় :(
নিলস টোডটম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.