সমস্যা
সক্রিয় ডিরেক্টরি ব্যবহারকারী এবং কম্পিউটার (ADUC) কাটো এসডিপি ক্লায়েন্টের সাথে সংযুক্ত হওয়ার সময় বিলম্ব অথবা ধীরগতি অভিজ্ঞতা করতে পারে।
পরিবেশ
- কাটো এসডিপি ক্লায়েন্ট v4.2 এবং তার ওপরে
সমস্যা সমাধান
এটি চলমান হওয়ার সময়, ADUC অ-মানক, অস্থিত SRV রেকর্ডের জন্য DNS প্রশ্ন করে। এই প্রশ্নগুলি প্রয়োজনীয় নয় এবং কেন ADUC এসব করে তা এখনো জানা যায়নি। আরও তথ্যের জন্য দেখুন DNS ক্লায়েন্ট রিসোলভার আচরণ
কাটো এসডিপি ক্লায়েন্ট সব নেটওয়ার্ক ইন্টারফেসে DNS অনুরোধগুলি ব্লক করে, ব্যতীত কাটো ভিপিএন ইন্টারফেসে, DNS কে ভিপিএন টানেলের মাধ্যমে পরিচালিত করতে। উপরের উল্লেখিত SRV প্রশ্নের কারণে প্রায় সমস্ত অ্যাপ্লিকেশনের জন্য এটি ভালো কাজ করে, তবে ADUC এর ক্ষেত্রে নয়।
যদি ADUC কাটো ভিপিএন অ্যাডাপ্টারে কনফিগার করা DNS সার্ভার থেকে প্রশ্নগুলির জন্য একটি ইতিবাচক প্রতিক্রিয়া না পায়, এটি প্রশ্নগুলি সেই DNS সার্ভারগুলিতে পাঠায় যা শারীরিক (WiFi, Ethernet) অ্যাডাপ্টারে কনফিগার করা। এই প্রশ্নগুলি কাটো ভিপিএন ক্লায়েন্ট দ্বারা ব্লক করা হয়, ফলে ADUC কখনো প্রতিক্রিয়া পায় না। যদিও মাইক্রোসফট এটি স্বীকার নয় অথবা নিশ্চিত করেনি, আমরা বিশ্বাস করি যে ADUC চালানোর আগে শারীরিক অ্যাডাপ্টারে DNS প্রশ্নের মেয়াদ শেষ হওয়ার জন্য অপেক্ষা করে, যা ধীরে লোড হওয়ার বিষয়টি ব্যাখ্যা করে। যতদূর আমাদের জানা আছে, ADUC হল একমাত্র অ্যাপ্লিকেশন যা এই আচরণটি প্রদর্শন করে, এবং এটি খুবই সম্ভব মাইক্রোসফট এর একটি বাগ।
উপরের সমস্যাটি যাচাই করতে, টানেলে একটি PCAP ক্যাপচার করা যেতে পারে। ব্যবহারকারী ADUC খোলার সময় DNS (পোর্ট 53) এর জন্য ফিল্টার করুন। SRV প্রশ্নগুলি দেখার জন্য Wireshark এ নিম্নলিখিত ফিল্টার প্রয়োগ করুন:
dns.qry.type == 33
ADUC একটি ডোমেনে প্রতিটি ডোমেইন নিয়ন্ত্রক জন্য অস্থিত SRV রেকর্ডের প্রশ্ন করতে পারে দুইটি ভিন্ন ফর্ম্যাটে:
- _ldap._tcp.DCName.ডোমেইন.com
- _ldap._tcp.SiteName._sites.DCName.ডোমেইন.com
যেখানে DCName একটি ডোমেইন নিয়ন্ত্রকের (ডিসি) নেটবিআইওএস নাম (হোস্টনেম), SiteName সেই সাইটের নাম যেখানে ডিসি অবস্থিত, এবং ডোমেইন.com হল ডোমেইন।
ADUC একটি ডোমেনের প্রতিটি ডোমেইন নিয়ন্ত্রক এর জন্য SRV রেকর্ডের প্রশ্ন সম্ভাব্য করতে পারে। পিসিএপি তে যদি কোনো SRV প্রশ্ন এবং "এমন কোনো নাম নেই" প্রতিক্রিয়া দেখতে পান তবে আপনি এই লেখাতে বর্ণিত সমস্যার সম্মুখীন হচ্ছেন।
সমাধানসমূহ
- ডিসিতে লগ ইন করতে এবং সক্রিয় ডিরেক্টরি ব্যবস্থাপনা করতে রিমোট ডেস্কটপ বা অন্য রিমোট অ্যাক্সেস টুল ব্যবহার করুন।
- সক্রিয় ডিরেক্টরি রিমোটলি ব্যবস্থাপনা করতে অ্যাক্টিভ ডিরেক্টরি প্রশাসন কেন্দ্র (ADAC) ব্যবহার করুন। AD ব্যবস্থাপনার ক্ষেত্রে, ADAC ADUC থেকে নতুন এবং শক্তিশালী একটি টুল, কিন্তু এর জন্য একটি শিক্ষা কষ্ট আছে। ADAC সম্পর্কে আরও তথ্যের জন্য সক্রিয় ডিরেক্টরি প্রশাসনিক কেন্দ্র দেখুন।
- উইন্ডোজ ডিএনএস এ যে SRV রেকর্ডগুলি ADUC অনুসন্ধান করে সেগুলি তৈরি করুন। নিচের নির্দেশনাগুলি দেখুন।
- অতিরিক্ত সমস্যা সমাধান এবং ব্যাকএন্ড বিকল্প সমাধানের জন্য Cato সাপোর্ট এর সাথে যোগাযোগ করুন।
ম্যানুয়ালি SRV রেকর্ড তৈরি করুন
1. ডিএনএস সার্ভারে ডিএনএস ম্যানেজার খুলুন।
2. Forward Lookup Zones প্রসারিত করুন।
3. আপনার ডোমেইন রাইট-ক্লিক করুন এবং "নতুন ডোমেইন…" ক্লিক করুন।
4. ডোমেইন নাম হিসাবে DC এর হোস্টনেম লিখুন।
5. আগের পদক্ষেপে তৈরি সাবডোমেইনটি রাইট-ক্লিক করুন এবং "অন্যান্য নতুন রেকর্ড…" নির্বাচন করুন।
6. সার্ভিস লোকেশন (SRV) নির্বাচন করুন এবং "রেকর্ড তৈরি করুন…" ক্লিক করুন।
7. পপ-আপ উইন্ডোতে নিম্নলিখিত প্যারামিটারগুলি লিখুন:
- সার্ভিস: _ldap
- প্রোটোকল: _tcp
- এই সার্ভিস প্রদান করা হোস্ট: শেষের দিকে একটি পিরিয়ড সহ DC এর পুরো ডোমেইন নাম (FQDN)।
8. "ঠিক আছে" ক্লিক করুন। একটি SRV রেকর্ড তৈরি হবে।
9. ধাপ 4 এ তৈরি DC নামক সাবডোমেইনটি রাইট-ক্লিক করুন এবং "নতুন ডোমেইন…" নির্বাচন করুন।
10. ডোমেইন এর নাম দিন “_sites” এবং "ঠিক আছে" ক্লিক করুন।
11. _sites ডোমেইনটি রাইট-ক্লিক করুন এবং "নতুন ডোমেইন..." নির্বাচন করুন।
12. আগের পদক্ষেপে তৈরি সাবডোমেইনটির নাম দিন DC যেখানে অবস্থিত সেই সাইটের নামে এবং "ঠিক আছে" ক্লিক করুন।
13. আগের পদক্ষেপে তৈরি সাবডোমেইনটি রাইট-ক্লিক করুন এবং "অন্যান্য নতুন রেকর্ড..." নির্বাচন করুন।
14. সার্ভিস লোকেশন (SRV) নির্বাচন করুন এবং "রেকর্ড তৈরি করুন..." ক্লিক করুন।
15. পপ-আপ উইন্ডোতে নিম্নলিখিত প্যারামিটারগুলি লিখুন:
- সার্ভিস: _ldap
- প্রোটোকল: _tcp
- এই সেবা প্রদানকারী হোস্ট: DC এর পুরো ডোমেইন নাম (FQDN), যার শেষে একটি বিন্দু আছে।
16. "ঠিক আছে" এ ক্লিক করুন। একটি নতুন SRV রেকর্ড তৈরি হবে।
17. আপনার ডোমেইনের প্রতিটি DC এর জন্য ধাপ ৩-১৬ পুনরাবৃত্তি করুন।
PowerShell ব্যবহার করে স্বয়ংক্রিয়ভাবে SRV রেকর্ড তৈরি করুন
নিচের PowerShell স্ক্রিপ্টটি একটি DC তে চালানো যেতে পারে যা ডোমেইনের জন্য প্রয়োজনীয় সমস্ত SRV রেকর্ড তৈরি করতে পারে যতক্ষণ DNS সার্ভারগুলি ডোমেইন নিয়ন্ত্রকও। দয়া করে নোট করুন এই স্ক্রিপ্টটি গ্রাহকের পরিবেশে কাজ করার জন্য সংশোধন করতে হতে পারে এবং Cato সাপোর্ট এই স্ক্রিপ্টটি কোন সংশোধন করার জন্য দায়ী নয়। গ্রাহকদের তাদের নিজস্ব ঝুঁকিতে এই স্ক্রিপ্ট ব্যবহার করা উচিত।
প্রস্তাবিত ব্যবহার:
1. .ps1 এক্সটেনশনের একটি ফাইলে স্ক্রিপ্ট সংরক্ষণ করুন এবং এটি একটি DC তে কপি করুন।
2. DC এ, প্রশাসকের প্রিভিলেজ সহ PowerShell চালু করুন এবং স্ক্রিপ্ট চলান:
path_to_script.ps1
3. লক্ষ্য করুন যে স্ক্রিপ্ট দ্বারা সঠিক ডোমেইন এবং DNS সার্ভার সনাক্ত করা হয়েছে এবং ডোমেইনে সমস্ত DC এর তালিকাটি সঠিক।
4. ডিফল্টভাবে, স্ক্রিপ্ট প্রতিটি DC এর জন্য SRV রেকর্ড তৈরি করার আগে প্রম্পট করে। আমরা অন্তত প্রথম DC এর জন্য এই পদ্ধতি ব্যবহার করতে পরামর্শ দিই এবং চালিয়ে যাওয়ার আগে নিশ্চিত করুন যে SRV রেকর্ড সাফল্যের সাথে তৈরি হয়েছে।
5. যদি প্রথম DC এর জন্য SRV রেকর্ডগুলি সফলভাবে তৈরি হয়ে থাকে, আপনি আবার স্ক্রিপ্টটি চালাতে পারেন কিন্তু সমস্ত SRV রেকর্ড একবারে তৈরি করতে প্রম্পট ছাড়াই "বাল্ক ক্রিয়েট" অপশন [B] নির্বাচন করুন।
উদাহরণ আউটপুট:
স্ক্রিপ্ট:
$allDCs = (Get-ADForest).Domains | %{ Get-ADDomainController -Filter * -Server $_ } | Select-Object -Property নাম, হোস্টনেম, ডোমেইন, সাইট
$Domain = (Get-ADForest).Name
Write-Host ""
Write-Host "ডোমেইন:"
Write-Host " $Domain"
$DNSstring = nslookup -type=ns $Domain | Select-String -Pattern 'nameserver'
$DNSstring -match '(?<=nameserver = )(.*)' > $null
$DNSserver = $Matches[1]
Write-Host ""
Write-Host "পাওয়া গেছে DNS সার্ভার:"
Write-Host " $DNSserver"
Write-Host ""
Write-Host "পাওয়া গেছে ডোমেইন নিয়ন্ত্রক:"
Foreach ($DC in $allDCs) {
Write-Host " $($DC.HostName)"
}
$title = 'SRV রেকর্ডস তৈরি করুন'
$question = 'আপনি কিভাবে SRV রেকর্ডস তৈরি করতে চান?'
$bulk = New-Object System.Management.Automation.Host.ChoiceDescription "&বাল্ক তৈরি করুন", "সব SRV রেকর্ড একবারে তৈরি করে।"
$prompt = New-Object System.Management.Automation.Host.ChoiceDescription "&প্রতিটি জন্য প্রম্পট", "প্রতিটি SRV রেকর্ড তৈরি করার আগে প্রম্পট করে।"
$choices = [System.Management.Automation.Host.ChoiceDescription[]]($bulk, $prompt)
$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 0) {
Foreach ($DC in $allDCs) {
Add-DnsServerResourceRecord -Srv -Name "_ldap._tcp.$($DC.Name)" -ZoneName $DC.Domain -DomainName "$($DC.HostName)" -Weight 0 -Priority 0 -Port 389 -ComputerName $DNSserver
Add-DnsServerResourceRecord -Srv -Name "_ldap._tcp.$($DC.Site)._sites.$($DC.Name)" -ZoneName $DC.Domain -DomainName "$($DC.HostName)" -Weight 0 -Priority 0 -Port 389 -ComputerName $DNSserver
}
Write-Host ""
Write-Host "সব DC এর জন্য SRV রেকর্ড তৈরি হয়েছে।"
} elseif ($decision -eq 1) {
Foreach ($DC in $allDCs) {
Write-Host ""
Write-Host "$($DC.HostName) জন্য SRV রেকর্ড তৈরি?" -ForegroundColor Yellow
$Readhost = Read-Host " ( y / n ) "
if ($Readhost -eq 'y') {
Add-DnsServerResourceRecord -Srv -Name "_ldap._tcp.$($DC.Name)" -ZoneName $DC.Domain -DomainName "$($DC.HostName)" -Weight 0 -Priority 0 -Port 389 -ComputerName $DNSserver
Add-DnsServerResourceRecord -Srv -Name "_ldap._tcp.$($DC.Site)._sites.$($DC.Name)" -ZoneName $DC.Domain -DomainName "$($DC.HostName)" -Weight 0 -Priority 0 -Port 389 -ComputerName $DNSserver
}
}
Write-Host ""
Write-Host "SRV রেকর্ড তৈরি সম্পন্ন."
} else {
Write-Host 'বাতিল'
}
0 মন্তব্য
একটি মন্তব্য করার জন্য সাইন ইন করুন করুন।