ADUC কাটো এসডিপি ক্লায়েন্টের সাথে সংযুক্ত হওয়ার সময় ধীরগতিতে লোড হয়

Prev Next

অসুবিধা

সক্রিয় ডিরেক্টরি ব্যবহারকারী এবং কম্পিউটার (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 রেকর্ডের প্রশ্ন করতে পারে দুইটি ভিন্ন ফর্ম্যাটে:

  1. _ldap._tcp.DCName.ডোমেইন.com

  2. _ldap._tcp.SiteName._sites.DCName.ডোমেইন.com

যেখানে DCName একটি ডোমেইন নিয়ন্ত্রকের (ডিসি) নেটবিআইওএস নাম (হোস্টনেম), SiteName সেই সাইটের নাম যেখানে ডিসি অবস্থিত, এবং ডোমেইন.com হল ডোমেইন।

ADUC একটি ডোমেনের প্রতিটি ডোমেইন নিয়ন্ত্রক এর জন্য SRV রেকর্ডের প্রশ্ন সম্ভাব্য করতে পারে। পিসিএপি তে যদি কোনো SRV প্রশ্ন এবং "এমন কোনো নাম নেই" প্রতিক্রিয়া দেখতে পান তবে আপনি এই লেখাতে বর্ণিত সমস্যার সম্মুখীন হচ্ছেন।

mceclip0.png

সমাধানসমূহ

ম্যানুয়ালি SRV রেকর্ড তৈরি করুন

  1. ডিএনএস সার্ভারে ডিএনএস ম্যানেজার খুলুন।

  2. Forward Lookup Zones প্রসারিত করুন।

    mceclip2.png

  3. আপনার ডোমেইন রাইট-ক্লিক করুন এবং "নতুন ডোমেইন…" ক্লিক করুন।

    mceclip3.png

  4. ডোমেইন নাম হিসাবে DC এর হোস্টনেম লিখুন।

    mceclip4.png

  5. আগের পদক্ষেপে তৈরি সাবডোমেইনটি রাইট-ক্লিক করুন এবং "অন্যান্য নতুন রেকর্ড…" নির্বাচন করুন।

    mceclip5.png

  6. সার্ভিস লোকেশন (SRV) নির্বাচন করুন এবং "রেকর্ড তৈরি করুন…" ক্লিক করুন।

    mceclip6.png

  7. পপ-আপ উইন্ডোতে নিম্নলিখিত প্যারামিটারগুলি লিখুন:

    • সার্ভিস: _ldap

    • প্রোটোকল: _tcp

    • এই সেবা প্রদানকারী হোস্ট: DC এর পুরো ডোমেইন নাম (FQDN), যার শেষে একটি বিন্দু আছে।

    mceclip7.png

  8. "ঠিক আছে" এ ক্লিক করুন। একটি SRV রেকর্ড তৈরি হবে।

    mceclip8.png

  9. ধাপ 4 এ তৈরি DC নামক সাবডোমেইনটি রাইট-ক্লিক করুন এবং "নতুন ডোমেইন…" নির্বাচন করুন।

    mceclip9.png

  10. ডোমেইন এর নাম দিন “_sites” এবং "ঠিক আছে" ক্লিক করুন।

    mceclip10.png

  11. _sites ডোমেইনটি রাইট-ক্লিক করুন এবং "নতুন ডোমেইন..." নির্বাচন করুন।

    mceclip11.png

  12. আগের পদক্ষেপে তৈরি সাবডোমেইনটির নাম দিন DC যেখানে অবস্থিত সেই সাইটের নামে এবং "ঠিক আছে" ক্লিক করুন।

    mceclip12.png

  13. আগের পদক্ষেপে তৈরি সাবডোমেইনটি রাইট-ক্লিক করুন এবং "অন্যান্য নতুন রেকর্ড..." নির্বাচন করুন।

    mceclip13.png

  14. সার্ভিস লোকেশন (SRV) নির্বাচন করুন এবং "রেকর্ড তৈরি করুন..." ক্লিক করুন।

    mceclip14.png

  15. পপ-আপ উইন্ডোতে নিম্নলিখিত প্যারামিটারগুলি লিখুন:

    • সার্ভিস: _ldap

    • প্রোটোকল: _tcp

    • এই সার্ভিস প্রদান করা হোস্ট: শেষের দিকে একটি পিরিয়ড সহ DC এর পুরো ডোমেইন নাম (FQDN)।

    mceclip15.png

  16. "ঠিক আছে" এ ক্লিক করুন। একটি নতুন SRV রেকর্ড তৈরি হবে।

    mceclip16.png

  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] নির্বাচন করুন।

উদাহরণ আউটপুট:

mceclip1.png

স্ক্রিপ্ট: 

$allDCs = (Get-ADForest).Domains | %{ Get-ADDomainController -Filter * -Server $_ } | Select-Object -Property নাম, হোস্টনেম, ডোমেইন, সাইট
$Domain = (Get-ADForest).নাম
Write-Host ""
Write-Host "ডোমেইন:"
Write-Host " $Domain"
$DNSstring = nslookup -ধরন=ns $Domain | Select-String -নকশা 'nameserver'
$DNSstring -মিল করুন '(?<=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 "সব DCs এর জন্য SRV রেকর্ড তৈরি করা হয়েছে।"
} elseif ($decision -eq 1) {
 Foreach ($DC in $allDCs) {
 Write-Host ""
 Write-Host "$($DC.HostName) এর জন্য SRV রেকর্ড তৈরি করবেন?" -ForegroundColor Yellow 
 $Readhost = Read-Host " ( য / না ) "
 if ($Readhost -eq 'য') { 
 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 'বাতিল হয়েছে'
}