تبليغاتX
Notes On Computer Networks - Join‏ کردن کلاینت لینوکس به ‏windows 2003 ActiveDirectory

برای اینکه لینوکس خود را عضو دامین ویندوزی کنیم از Samba  ، winbind  و Kerberos  کمک می گیریم . پس نیاز هست تا این سه بسته را تهیه و نصب کنید . البته هر سه این بسته در سی دی اغلب توزیع های لینوکس موجود است و اگر الان می خواهید لینوکس را نصب کنبد می توانید در هنگام نصب این بسته ها را نیز انتخاب کنید . برای این آموزش من از توزیع Fedora Core 5  و همچنین windows 2003  که اکتیو دایرکتوری بر روی آن در حال اجرا است استفاده کردم .  

 

Linux Box ( FC 5 ) --------------- 192.168.0.20 ---------------- cahe.linux.com

Windows BOX (2003)------------ -192.168.0.254 ------------omid.linux-notes.ir

 

پس نام دامین ویندوزی linux-notes.ir  است . و در فایل هایی که در ادامه پیکربندی می کنیم هرجا مقدار REALM  خواسته شد باید از همین نام استفاده کرد و

 

 ۱- تنظیمات Name Resolution:

در هنگام نصب اکتیو دایرکتوری در ویندوز سرویس DNS  نیز راه اندازی می شود . برای اجرای فرامینی که در ادامه خواهد آمد باید عمل Name Resolution در کلاینت لینوکس انجام گیرد . می توانید به راحتی dns  لینوکس را سرور ویندوز قرار دهید . یا نام و آی پی ویندوز را در فایل /etc/hosts  قرار دهید.

#/etc/hosts

127.0.0.1   localhost localhost.localdomain

192.168.0.254 omid.linux-notes.ir omid

192.168.0.20  cache.linux.com cache

 

 

۲ –اگر سرویس های Samba  و winbind  در لینوکس شما در حال اجرا است آنها را متوقف کنید .

Service smb stop

Service winbind stop

 

۳- تنظیمات Samba

Samba  را می توان پلی بین سیستم عامل ها تعریف کرد . سیستم عامل ها از جمله ویندوز و لینوکس .

به عنوان مثال برای دسترسی به فولدر های به اشتراک گذاشته شده در ویندوز از طریق لینوکس یا بالعکس. اینجا نمی خواهم در مورد samba  و کانفیگ های مختلف ان توضیح بدهم و  پیکربندی که برای join  کردن لینوکس به وینوز نیاز داریم در اختیار شما قرار می دهم . برای بررسی مفاهیم تگ ها می توانید به وبسایت Samba  رجوع کنید .  .

فایل پیکربندی samba  در مسیر /etc/samba  به نام smb.conf  موجود است . برای پیکربندی Samba  در این حالت فقط کافی است تگ های زیر تغییر دهید .

realm = LINUX-NOTES.IR

security = ADS

encrypt passwords = yes

password server = omid.linux-notes.ir

winbind separator = +

 winbind enum users = yes

 winbind enum groups = yes

winbind uid = 10000-20000

winbind gid = 10000-20000

workgroup = LINUX-NOTES0

 

توجه داشته باشید که برای پارامتر REALM  باید نام دامنه را با حروف بزرگ بنویسید .

اگر چه تغییر تگ workgroup  ضروری نیست ولی برای جلوگیری از اخطار Samba  هنگام join  کردن لینوکس به ویندوز بهتر است آنرا با نام NetBios  ویندوز مقدار دهی کنید . برای بدست آوردن نام NetBios  میتوانید از دستور nbtstat –n  بهره بگیرید .

 

 

برای چک کردن تنظیمات فایل smb.conf از لحاظ املا و دستوری می توانید از دستور testparm  بهره بگیرید .

 

 

۴ – تنظیمات Kerberos  

برای پیکربندی Kerberos  فایل krb5.conf  که در پوشه /etc  است را به صورت زیر ویرایش کنید .

[logging]

default = FILE:/var/log/krb5lib.log

 

[libdefaults]

ticket_lifetime = 24000

clock_skew = 300

default_realm = LINUX-NOTES.IR

 

[realms]

LINUX-NOTES.IR = {

kdc = omid.linux-notes.ir

admin_server = omid.linux-notes.ir

default_domain = linux-notes.ir

}

 

[domain_realm]

.linux-notes.ir = LINUX-NOTES.IR

linux-notes.ir = LINUX-NOTES.IR 

۵ – اجرای دستور net

 

net ads join –S MACHINE_NAME –U username%password

 

MACHINE_NAME: نام کامل ماشین ویندوز که در اینجا omid.linux-notes.ir  است

username : نام کاربری با اختیارات در سطح ادمین دامین مثلا Administrator

Password : پسوورد کاربر با اختیارات domain administrator  در ویندوز

 

 

خوب لینوکس شما به دامین join  شد . برای تست این موضوع می توانید از دستورnet jointest استفاده کنید .

 

 

و نام کامپیوتر در لیست کامپیوتر های عضو شده در دامین قرار می گیرد.

 

 

 

۶- اجرای سرویس های samba  و winbind :

service smb start

service winbind start

 

اکنون با استفاده از دو دستور wbinfo –g  و wbinfo –u می توانیم تست کنیم که آیا لینوکس ما قادر است اطلاعاتی از اکتیو دایرکتوری بخواند یا نه .

 

 

خوب تا این مرحله linux  ما به دامین join  شد و کاملا تست شد . اگر هدف شما فقط join  کردن لینوکس باشد تا همین مرحله کافی است .

ولی اگر می خواهید کاربران موجود در اکتیو دایرکتوری بتوانند در لینوکس شما login  کنند هنوز دو مرحله دیگر باید طی کنید .

 

۷ – تنظیمات nssswitch.conf که در شاخه /etc واقع است .

 

passwd: winbind compat
group: winbind compat
shadow: winbind compat

 

۸ - تنظیمات pam  :

هرگونه اشتباه در این مرحله باعث می شود تا شما نتوانید به سیستم وارد شوید پس قبل ار هرکاری از تنظیمات پشتیبان تهیه کنید و یک boodisk  برای استفاده در صورت لزوم درست کنید .

برای تنظیمات pam  باید فایل login  در شاخه /etc/pam.d  را ویرایش کنید :

 

auth required pam_securetty.so
auth sufficient pam_winbind.so
auth sufficient pam_unix.so use_first_pass
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
account sufficient pam_winbind.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session optional pam_console.so
اکنون می توانید با استفاده از + با کاربران تعریف شده در اکتیو دایرکتوری به لینوکس وارد شوید .
خوب کار تمام شد ولی تنظیم نکردن دقیق پارامتر ها با برخی موانع می تواند برای ما مشکل ساز شود که در زیر چندین ایراد رایج و طریقه حل آنها را برای شما می نویسم.
 
 Clock Skew Too greate
هنگامی join  شدن لینوکس به ویندوز باید یک کلید Kerberos  بین کلاینت ویندوز و لینوکس  ردوبدل بشود .
 که اگر اختلاف زمانی بین کلاینت لینوکس و ویندوز بیشتر از 5 دقیق باشد . این عمل امکان پذیر نیست . راه حلی که در اکثر مطالب موجود در اینترنت ارائه شده راه اندازی ntp  در ویندوز و لینوکس  و تنظیم زمان و تاریخ آنها با یک ntp server  جهانی . ولی نیازی به این کار نیست . شما می توانید فقط با اجرای دستور ntpdate  این مشکل را حل کنید . 
ntpdate 192.168.0.254 
 
که 192.168.0.254  آی پی سرور ویندوز است . 
اگر چه در تست هایی که در FC5  و FC6  انجام دادم این دستور یک ساعت اختلاف بین زمان ویندوز و لینوکس ایجاد می کند
 ولی این مشکل را به کلی برطرف می کند .
 
 
 
۲ –  Insufficient access
همانطور که حدس زدید اگر کاربری که از آن در دستور net join  استفاده می کنیم . دسترسی در سطح domain admin  نداشته باشد این ایراد رخ خواهد داد .
 
 
و بالاخره چهارمین ایراد که زمانی برای برطرف کردن آن 3 روز کامل وقت گذاشتم و علت آن چیزی بجز تنظیم کردن اشتباه فایل krb5.conf  نیست . 
همیشه فکر می کردم من اولین و آخرین نفری هستم که به این ایراد بر می خورم ولی چند روز پیش وقتی در یکی از فروم ها با پستی برخوردم که نویسنده آن همین مشکل را داشت تصمیم گرفتم این ایراد را نیز به این آموزش اضافه کنم. 
مشکل این ایراد از بی Error  ای است . با اجرای دستور net ads join … بدون گرفتن هیچ ایرادی دستگاه join  نمی شود و به پرامپت نیز بر نمی گردد .
در این حالت بهترین راه حل چک کردن دوباره پیکربندی Kerberos  است . ولی روش دیگری هم برای حل این مشکل وجود دارد . 
در این حالت اگر even viewer ویندوز را چک کنید ایرادی با این محتوا مشاهده خواهید کرد . 
 
While processing a TGS request for the target server cifs/cache, 
the account CACHE$@LINUX-NOTES.IR did not have a suitable key for generating a Kerberos ticket
 (the missing key has an ID of 8). The requested etypes were 2.
  The accounts available etypes were 23  -133  -128  3  1.
For more information, see Help and Support Center at
 
می توان برای حل این مشکل کلید مورد نیاز Kerberos  که برای join  شدن نیاز است ردوبدل شود خودتان تولید کرده و آنرا به لینوکس منتقل کنید . برای این کار شما به windows 2003 support tools  دارید . از اینجا آنرا دانلود و نصب نمایید . ( البته در سی دی ویندوز 2003 موجود است ) و در محیط cmd  مخصوصی که در اختیاز شما قرار می دهد طبق این دستورات کلید را به صورت دستی تولید کنید . مثلا نام کلید cache.keytab  است . این فایل را در مسیر /etc کپی نمایید و دستورات زیر را به ترتیب اجرا نمایید تا کلید به لینوکس شما اضاف شود و دستور net join … رو دوباره اجرا کنید :
ktutil
rkt cache.keytab
wkt /etc/krb5.keytab
q
 
برای اینکه چک کنید آیا  کلید به لینوکس شما اضافه شده است یا خیر میتوانید از دستور klist –ke  استفاده کنید .
 
 

امید مهاجرانی    

Omid dot mohajerani at gmail dot com

+ نوشته شده توسط امید مهاجرانی در یکشنبه سی و یکم تیر 1386 و ساعت 16:28 |