يقوم DHCP بالكتابة فوق Cisco VPN resolv.conf على Linux

StackOverflow https://stackoverflow.com/questions/48115

  •  09-06-2019
  •  | 
  •  

سؤال

أنا أستخدم جهاز Ubuntu 8.04 (x86_64) للاتصال بشبكة Cisco VPN الخاصة بصاحب العمل.(لم يتم تجميع العميل خارج الصندوق، لكنني وجدت تصحيحات لتحديث العميل لتجميعها على النوى التي تم إصدارها في العامين الماضيين.) يعمل كل هذا بشكل رائع، حتى يقرر عميل DHCP الخاص بي تجديد عقد الإيجار وتحديث /etc/resolv.conf، واستبدال خوادم الأسماء الخاصة بـ VPN بخوادم الشبكة العامة الخاصة بي.

هل هناك طريقة جيدة لمنع عميل DHCP الخاص بي من تحديث /etc/resolv.conf أثناء نشاط VPN الخاص بي؟

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم Ubuntu الافتراضي مع NetworkManager، فحاول إزالة عميل CiscoVPN واستخدم المكون الإضافي NetworkManager vpnc للاتصال بـ Cisco VPN.من المفترض أن يؤدي هذا إلى تجنب كافة المشكلات، حيث أن NetworkManager يعرف بعد ذلك اتصال VPN الخاص بك.

نصائح أخرى

إذا كنت تقوم بالتشغيل دون أن يقوم NetworkManager بمعالجة الاتصالات، فاستخدم حزمة resolvconf للعمل كوسيط للبرامج التي تقوم بتعديل /etc/resolv.conf: sudo apt-get install resolvconf

إذا كنت تستخدم NetworkManager فسوف يتولى هذا الأمر نيابةً عنك، لذا تخلص من حزمة resolvconf: sudo apt-get remove resolvconf

لقد اكتشفت هذا عند إعداد vpnc على Ubuntu الأسبوع الماضي.بحث عن vpn resolv.conf يحتوي موقع ubuntuforums.org على 250 نتيجة، العديد منها مرتبط بشكل كبير!

أنصح باتباع نصيحة @Sean، ولكن إذا فشل ذلك لأي سبب من الأسباب، فمن الممكن تكوين dhclient بحيث لا يطلب خوادم DNS في /etc/dhcp3/dhclient.conf

يجب أن يعمل chattr +i /etc/resolv.conf.(-i للتراجع)

ولكن الشيء الأفضل هو تكوين dhclient.conf الخاص بك:https://calomel.org/dhclient.htmlانظر إلى خوادم اسم المجال واسم المجال التي تحل محلها.

انظر أيضًا إلى "إرسال اسم المضيف" ؛ إذا كان يعمل في مكان عملك ، فسيكون لديك اسم مضيف رائع لجهاز الكمبيوتر الخاص بك وليس بعض الأسماء الغريبة التي يعينها خوادم DHCP.

يبدو أن VPNC يفعل الشيء الصحيح لمكثف Cisco الخاص بصاحب العمل.أقوم بتشغيل وإيقاف VPN، ويبدو أنه يقوم بتحديث كل شيء بسلاسة.

يمكن إخبار البرنامج الخفي DHCPclient بعدم تحديث resolv.conf باستخدام مفتاح تبديل سطر الأوامر.(-r أعتقد، اعتمادا على العميل)

وهذا أقل ديناميكية، لأنه سيتعين عليك إعادة تشغيل/إعادة تكوين DHCP عند الاتصال، ولكن ليس بالأمر الصعب.وبالمثل، يمكنك إيقاف الخدمة فحسب، ولكن قد تفقد عنوان IP الخاص بك في هذه الأثناء، لذلك لا أوصي بذلك حقًا.

وبدلاً من ذلك، يمكنك تشغيل dhcpclient من داخل مهمة cron، مع إضافة عمليات التحقق المناسبة من العملية.

تعتبر هذه المشكلة أكثر وضوحًا على الشبكات ذات أعمار تأجير DHCP المنخفضة.يوجد خطأ تم الإبلاغ عنه في لوحة تشغيل حزمة dhcp3 الخاصة بـ Ubuntu:

https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/90681

والذي يتضمن هذا التصحيح في الوصف:

--- /sbin/dhclient-script.orig 2007-03-08 19:19:56.000000000 +0000
+++ /sbin/dhclient-script 2007-03-08 19:19:46.000000000 +0000
@@ -13,6 +13,10 @@
 # The alias handling in here probably still sucks. -mdz

 make_resolv_conf() {
+ # don't overwrite resolv.conf at RENEW time, since a VPN/PPTP tunnel may
+ # have updated it with remote DNS servers
+ [ "$reason" = "RENEW" ] && return
+
     if [ -n "$new_domain_name" -o -n "$new_domain_name_servers" ]; then
         # Find out whether we are going to mount / rw
         exec 9>&0 </etc/fstab

هذا التغيير ل /sbin/dhcp-script يمنع عميل DHCP من الكتابة فوقه /etc/resolv.conf عندما تجدد عقد الإيجار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top