প্রতিটি বুটে /etc/resolv.conf কি ওভাররাইট করে?


23

আমাকে একটি মিনিয়ের জন্য ফাইলগুলি দেওয়া হয়েছিল linux, এটি সরাসরি বুটে যায় firefox। এটি করা উচিত এমন সবের জন্য এটি কাজ করে, কেবলমাত্র আমি কোনও ইন্টারনেট সংযোগ পাই না।

আমাদের নেটওয়ার্কে 3 টি ডিএনএস সার্ভার রয়েছে, যা সব কাজ করে। আমি তাদের পিং করতে পারেন। কিন্তু চেষ্টা করার সময় ping google.deবা wget google.deআমি একটি bad addressত্রুটি পাই ।

nslookup google.de কোন কারণে কাজ করে।

আমি resolv.confবুট করা সিস্টেমে আমার ফাইলটিতে resolv.confযে বিষয়বস্তু রেখেছিলে একই বিষয়বস্তু না থাকাকে ট্র্যাক করেছিলাম .iso

আমি সমস্ত কারণগুলি তৈরি এবং সংশোধন করার ক্ষেত্রে বোঝার চেষ্টা করেছি resolv.conf। আমি নিশ্চিত হয়েছি যে আমি এটি সব পেয়েছি, তবে আমি অবশ্যই আমার সমাধান সেখানে পাইনি।

সুতরাং একটি শেষ খাদের প্রচেষ্টা হিসাবে, আমি resolv.confফাইলটি ব্যবহার করে অপরিবর্তনীয় করে তোলার চেষ্টা করেছি

:~# chattr +i /etc/resolv.conf

আমার অবাক করে দিয়ে পুনর্নির্মাণ এবং পুনরায় বুট করার সময় আমার ফাইলটির পুনরায় নামকরণ করা হয়েছিল resolv.conf~এবং তার জায়গায় একই স্ট্যান্ডার্ড ফাইল যা আমাকে ভুগছিল।

ফাইলের বিষয়বস্তু আমাকে বিশ্বাস করে যে এটি নেটওয়ার্ক থেকেই তথ্য পেয়েছে। .isoইন্টারনেট অ্যাক্সেস ছাড়াই ভার্চুয়ালবক্সে শুরু করার সময় , আমার ফাইলটি যেমন রয়েছে তেমনই রাখা হচ্ছে।

/etc/dhcp/dhclient.confনেট থেকে মুছে ফেলা domain-name-serverএবং ফাইলের অংশটি domain-name-searchথেকে তথ্য না পাওয়ার পরিবর্তনের চেষ্টা করেছি request

দুর্ভাগ্যক্রমে কাজ হয়নি।

আমার নেটওয়ার্কম্যানেজার ইনস্টল করা নেই। আইসো উবুন্টু 14.04 এর উপর ভিত্তি করে।

সম্ভবত গুরুত্বপূর্ণ তথ্য অনুপস্থিত। আমি এটি সরবরাহ করে খুশি।

হালনাগাদ:

আমি যে ফাইলটি মুছে ফেলে পাওয়া resolv.conf

এটা মনে করা হয় /usr/share/udhcpc/default.script

#!/bin/sh

# udhcpc script edited by Tim Riker <Tim@Rikers.org>

[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1

RESOLV_CONF="/etc/resolv.conf"
[ - n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"

case "$1" in
    deconfig)
        /bin/ifconfig $interface 0.0.0.0
        for i in /etc/ipdown.d/*; do
            [ -e $i ] && . $i $interface
        done
        ;;

    renew|bound)
        /bin/ifconfig $interface $ip $BROADCAST $NETMASK

        if [ -n "$router" ] ; then
            echo "deleting routers"
            while route del default gw 0.0.0.0 dev $interface ; do
                :
            done

            metric=0
            for i in $router ; do
                route add default gw $i dev $interface metric $((metric++))
            done
        fi

        echo -n > $RESOLV_CONF # Start ----------------  
        [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
        for i in $dns ; do
            echo adding dns $i
            echo nameserver $i >> $RESOLV_CONF
        done
        for i in /etc/ipup.d/*; do
            [ -e $i ] && . $i $interface $ip $dns 
        done # End ------------------
        ;;
esac

exit 0

এটি udhcpcপ্রোগ্রামের অংশ । একটি ক্ষুদ্র dhcp ক্লায়েন্ট, এটি অংশbusybox

আরও তদন্ত করবে।


আপডেট 2 এবং সমাধান:

আমি পার্ট আউট (# স্টার্ট থেকে # ইন্ড) -তে মন্তব্য করেছি, যা আপাতদৃষ্টিতে /etc/resolv.confফাইলটি ওভাররাইট করে এবং যথেষ্ট নিশ্চিত। সেটাই ছিল অপরাধী। সুতরাং একটি অস্পষ্ট স্ক্রিপ্ট এই সমস্ত সমস্যার কারণ হয়েছিল।

প্রতিবিম্বিত করার জন্য আমি প্রশ্নটি পরিবর্তন করেছিলাম, আমার সমস্যা সমাধানের জন্য আসলে কী জানা উচিত ছিল, তাই একই সমস্যাযুক্ত লোকদের জন্য এটি সন্ধান করা আরও সহজ হবে এবং তাই আমি একটি উত্তর গ্রহণ করতে পারি।

জিনিসগুলি খুঁজে বের করতে এখানে সহায়তার জন্য ধন্যবাদ।


1
রেজোলভকনফ-তে অবিচ্ছেদ্য পতাকা সেট করা ফাইলটি পরিবর্তন না হওয়ায় আপনার প্রত্যাশার মতো কার্যকর হয় না। ফাইলের নাম পরিবর্তন করার সাথে সাথে / এ ডিরেক্টরিতে প্রবেশের পরিবর্তন করা হয়েছিল। অপরিবর্তনীয় হতে আপনাকে / ইত্যাদি সেট করতে হবে - এমন কিছু যা আপনি সত্যিই করতে চান না।
didal24

@ ডাগো'নীল আমি দেখতে পাচ্ছি। সতর্ক থাকুন জন্য ধন্যবাদ।
মিনিক্স

উত্তর:


24

1) আপনার নিজের রেজোলভকনফটি ম্যানুয়ালি আপডেট করা উচিত নয়, কারণ সমস্ত পরিবর্তনগুলি আপনার স্থানীয় ডিএইচসিপি সার্ভারের দেওয়া ডেটা দ্বারা ওভাররাইট করা হবে। আপনি যদি এটি স্থির রাখতে চান তবে চালান sudo dpkg-reconfigure resolvconfএবং গতিশীল আপডেটগুলিতে "না" উত্তর দিন। আপনি যদি সেখানে নতুন এন্ট্রি যুক্ত করতে চান, সম্পাদনা করুন /etc/resolvconf/resolv.conf.d/baseএবং চালনা করেন তবে sudo resolvconf -uএটি আপনার এন্ট্রি এবং ডিএইচসিপি সার্ভারের এন্ট্রি সংযোজন করবে।

2) আপনার / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেসগুলি সম্পাদনা করার চেষ্টা করুন এবং সেখানে আপনার এন্ট্রিগুলি যুক্ত করার মতো করুন

auto eth0 
iface eth0 inet dhcp 
dns-search google.com 
dns-nameservers dnsserverip 

এবং তারপর পুনরায় আরম্ভ /etc/init.d/networking restartঅথবা sudo ifdown -aএবংsudo ifup -a

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


1
আমি এন্টারগুলিতে যোগ করে /etc/resolvconf/resolv.conf.d/baseদৌড়ে এসেছি resolvconf -u। দুর্ভাগ্যক্রমে এটি কার্যকর হয়নি।
মিনিস

আপনি কি sudo dpkg-reconfigure resolvconf চালানোর চেষ্টা করেছেন? রেজোলভকনফ-ইউ চালানোর পরে, আপনার এন্ট্রিগুলি ফলাফল ফাইলে ছিল না? "নেমসারভার 127.0.0.1" বা "অনুসন্ধান গুগল.কম" এর মতো আপনি কীভাবে এগুলি যুক্ত করেছিলেন?
কিরিল-এ

আমি দৌড়েছি dpkg-reconfigure resolvconf। এন্ট্রিগুলি সেখানে ছিল না। এবং আমার nameserver ipএবং উভয়ের সাথেই এন্ট্রি রয়েছে search domain
মিনিক্স

না, দৌড়ানো dpkg-reconfigure resolvconfএন্ট্রি যুক্ত করবে না তবে আপনি স্বয়ংক্রিয় আপডেটগুলি অক্ষম করতে পারবেন। আপনি যদি আপডেটগুলি অক্ষম করেন, আপনি নিজেই resolv.conf সম্পাদনা করতে পারেন এবং এটি ওভাররাইট করা উচিত নয়।
কিরিল-এ

এটিকে এতো আড়ম্বরপূর্ণভাবে বাক্য বানানোর জন্য আমার খারাপ, আমি আপনার মন্তব্যের বাক্যটি বাক্য দ্বারা জবাব দিয়েছিলাম। চলার পরে resolvconf -uএন্ট্রি যুক্ত করা হয়নি।
মিনিক্স

4

আমি এই মধ্যে দৌড়ে। মন্তব্য করা domain-name-serverআমার জন্য এটি ঠিক করে নি।

এছাড়াও, আমি ব্যবহার করছি না resolvconf, কেবল সহজ /etc/resolv.conf

আমি chattr +iলক ডাউন ব্যবহার করার চেষ্টা করিনি resolv.confকারণ এটি খুব হ্যাকি মনে হচ্ছে। এছাড়াও, আমি চাই পুতুলটি resolv.confযখন প্রয়োজন হয় তখন সংশোধন করতে সক্ষম হবে ।

আমি যে সেরা সমাধানটি পেয়েছি তা dhclientএর নথিভুক্ত হুকগুলি ব্যবহারের ডিফল্ট আচরণকে ওভাররাইড করে ।

/etc/dhcp/dhclient-enter-hooks.d/nodnsupdateনিম্নলিখিত বিষয়বস্তু সহ একটি নতুন ফাইল তৈরি করুন :

#!/bin/sh
make_resolv_conf() {
    :
}

তারপরে ফাইলটি সম্পাদনযোগ্য করুন:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

এখন যখন dhclient চলতে থাকে - হয় পুনরায় বুট করা অবস্থায় বা ম্যানুয়ালি চালিত হয় sudo ifdown -a ; sudo ifup -a- এটি এই স্ক্রিপ্টটি লোড করে nodnsupdate। এই স্ক্রিপ্টটি অভ্যন্তরীণ ফাংশনটিকে ওভাররাইড make_resolv_conf()করে যা সাধারণত ওভাররাইট করে resolv.confএবং এর পরিবর্তে কিছুই করে না।

এটি আমার জন্য উবুন্টু 12.04 এ কাজ করেছিল।


উবুন্টু 18.04 তে কাজ করেনি :( /etc/resolv.confপুনরায় বুট করার পরে ওভাররাইট করা হয়েছিল
ড্যান ড্যাসাকলেসকু

3

Ubuntu 16.04 যদি আপনার সার্ভারের জন্য নেটওয়ার্ক ইন্টারফেসগুলি ডিএইচসিপি দ্বারা নিয়ন্ত্রিত হয়, /etc/resolv.confযখনই নেটওয়ার্কিং পরিষেবা পুনরায় চালু হবে তখনই ডিএইচসিএলেন্ট প্রোগ্রামটি আপনার ফাইলটিকে ওভাররাইট করে দেবে ।

আপনি /etc/dhcp/dhclient.confফাইলটি সম্পাদনা করে ডোমেন-নাম , ডোমেন-অনুসন্ধান এবং ডোমেন-নাম-সার্ভারের জন্য নিম্নলিখিত হিসাবে "সুপারসিড" স্টেটমেন্ট যুক্ত করে সমস্যার সমাধান করতে পারেন :

supersede domain-name "local.com";
supersede domain-search "local.com";
supersede domain-name-servers 192.168.56.103;

এই বিশেষ ক্ষেত্রে নেম সার্ভারটি "192.168.56.103" এ অবস্থিত এবং ডোমেনটির নাম "স্থানীয় ডটকম"

নোট করুন যে প্রতিটি লাইন একটি আধা-কোলন দ্বারা সমাপ্ত হয় এবং ডোমেন নামটি ডাবল উদ্ধৃতিতে আবদ্ধ থাকে।


দুর্ভাগ্যক্রমে এটি উবুন্টু 18.04 এ কাজ করে নি। রিবুট করার পরে, /etc/resolv.conf127.0.0.53 দিয়ে ওভাররাইট করা হয়েছিল।
ড্যান ড্যাসক্লেস্কু

হতে পারে আপনি এই জিজ্ঞাসাটি
সেকশানসটি

আপনি চালাচ্ছেন কিনা dnsmasq
তাও

0

এই ডিরেক্টরিতে যান:

  cd /etc/resolvconf/resolv.conf.d

নামযুক্ত ফাইলটি খুলুন এবং সেখানে ডিএনএস আইপি বা নাম রাখুন। লেজযুক্ত নামের ফাইলটি খুলুন এবং সেখানে ডোমেনটি দিন। পুনরায় বুট করুন।


উবুন্টু 18.04-এ ডিফল্টরূপে সেই ডিরেক্টরি উপস্থিত নেই। আপনার কি এমন কোনও পরিষেবা ইনস্টল করতে হবে যা এটি তৈরি করে?
ড্যান ড্যাসক্লেস্কু

0

অ্যাজুরে ভিএম /etc/resolv.conf সরাসরি সম্পাদনযোগ্য নয়।

নীচের মত আপনার নেটওয়ার্ক কনফিগারেশন ফাইল / etc / sysconfig / নেটওয়ার্ক-স্ক্রিপ্টস / ifcfg-eth0 এবং এর মধ্যে DNS এনট্রি যুক্ত করার চেষ্টা করুন:

DOMAIN এর = example.com

DNS1 = 10। । *
ডিএনএস 2 = 10। । *
ডিএনএস 3 = 10। । *

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


0

resolv.confস্থায়ীভাবে ডিএনএস সম্পর্কিত পরিবর্তনগুলি করতে, আপনাকে ডিএইচসিপি কনফিগারেশন ফাইলটির নাম পরিবর্তন করতে হবে dhclient.conf। আপনি ফাইলটি খুঁজে পেতে পারেন /etc/dhcp/dhclient.conf

সম্পাদনা করার জন্য ফাইলটি খুলুন (সুডো ব্যবহার করতে ভুলবেন না)। আপনি এর মতো লাইন দেখতে পাবেন:

#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;

পূর্ববর্তী "#" সরান এবং আপনি চান এমন ডোমেন-নাম এবং / অথবা ডোমেন-নাম-সার্ভারগুলি ব্যবহার করুন। এটি সংরক্ষণ করুন. এখন ডিএনএস সম্পর্কিত পরিবর্তনগুলি স্থায়ী হবে।

ক্রেডিটগুলিতে যায়: https://itsfoss.com/resolvconf-permanent-ubuntu/


এই উত্তরটি ইতিমধ্যে 2 বছর আগে দেওয়া হয়েছিল
ড্যান ড্যাসক্লেস্কু

0

রেজলভ.কনফ বা কোনও ফাইল পুনরায় বুট করার পরে ওভাররাইট করা থেকে রোধ করতে নীচের কমান্ডটি ব্যবহার করুন

chattr -V + i ফাইলের নাম যেমন chattr -V + i /etc/resolv.conf

পরিবর্তনে ফিরে যেতে নীচের কমান্ডটি ব্যবহার করুন:

chattr -i ফাইলের নাম - ফাইলটিতে সন্নিবেশ সক্রিয় করতে

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


আমি বিশ্বাস করি যে প্রশ্নে ব্যবহারকারীর আসলে চেষ্টা করেছিলেন chattr, কিন্তু স্বীকার করেছেন যে এর কোনও প্রভাব নেই।
কুসালানন্দ

এটি নিশ্চিতভাবে কাজ করবে, ব্যবহারকারী চেষ্টা করা বিকল্পটি ফাইলটি পরিবর্তনযোগ্য না করার জন্য সম্পাদনা করার জন্য ছিল
আশীষ জৈন

অনুগ্রহ করে সুডো চ্যাটার-ভি + আই ফাইল নাম দিয়ে কমান্ডটি চালান যেমন sudo chattr -V + i /etc/resolv.conf
আশীশ জৈন

-1

ওবুন্টু 18.04 এ নেটওয়ার্কম্যানেজার ব্যবহার করে। আপনাকে 'রেজোলভ.কনফ' ফাইলটি সরিয়ে ফেলতে হবে এবং নেটওয়ার্ক ম্যানেজারকে আপনার জন্য একটি উত্পন্ন করতে দিন।

টার্মিনালে ফাইলটি সরাতে sudo rm -f /etc/resolv.conf; এটি আপনার জন্য ফাইলটি মুছে ফেলবে।

সিস্টেমটি পুনরায় বুট করুন এবং নেটওয়ার্ক ম্যানেজার আপনার জন্য একটি রেজলভ.কনফ ফাইল তৈরি করবে।

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