
Det var ikke straks, at jeg indså, at jeg var havnet i en importsubstitution. Først da friske leverancer af pc'er fra overordnede organisationer konsekvent begyndte at ankomme med "Alt Linux" distributionssoftware om bord, mistænkte jeg, at noget var galt.
Men i processen med at komme igennem de uundgåelige stadier blev jeg involveret og begyndte endda at få lidt glæde af processen. På et tidspunkt tænkte jeg, at med den udvikling ville jeg før eller siden måtte skille mig af med Microsofts løsninger til katalogtjenester og bevæge mig mod noget mere eksotisk. Derfor blev det besluttet at forberede sig på det uundgåelige i god tid og forsøge at fange så mange skjulte faldgruber som muligt ved at oprette en testbænk, som inkluderede:
- DC1 — Windows Server 2012R2
- DC2 — Alt Server 8.2
- Filserver — Windows Server 2012R2
- PC1 — Windows 7
- PC2 — Alt Arbejdsstation 8.2
Opgaver for testbænken:
- Oprette et domæne baseret på w2k12r2. Oprette et minimum af gruppepolitikker (svarende til dem, der anvendes i den arbejdsmæssige infrastruktur), inklusive politik for overførsel af brugerens arbejdsmapper (Downloads/Dokumenter/Skrivebord). I sidste ende ønsker jeg, at når brugeren skifter arbejdsplads fra Windows til Linux og tilbage, skal de have nem adgang til deres arbejdsdokumenter.
- Indsamling af Samba DC som den anden controller. Kontrol af replikation af katalogtjenester og DNS
- Konfiguration af Linux-klienter til at arbejde med flyttede mapper
Implementering:
- Installation og oprettelse af den nye controllerMed installationen af MS Windows 2012R2 er det ganske simpelt og mere eller mindre forståeligt. Der er 1001 guides på internettet til oprettelse af domæner på Windows både ved hjælp af GUI og med Powershell-værktøjer, så jeg vil ikke gentage det unødvendigt, jeg vil kun efterlade den officielle dokumentation til dem, der er nysgerrige, og dem der ønsker at friske hukommelsen op.
Men der er dog et vigtigt punkt i denne sammenhæng. I dag kan Samba ikke arbejde med katalogskemaer over 2008R2.
Spoileroverskrift Eller rettere sagt, udviklerne har erklæret denne støtte som eksperimentel. Men i praksis vil et forsøg på at indføre Samba som den anden DC i et eksisterende Windows-domæne med skema 69 møde denne fejl
DsAddEntry mislykkedes med status WERR_ACCESS_DENIED info (8567, ‘WERR_DS_INCOMPATIBLE_VERSION’)
Problemet er, at Windows 2012 og 2012R2 bruger WMI-værktøjer til at arbejde med domæner og skove, og stabil support for dette blev først annonceret i Samba 4.11, som skal udgives inden årets udgang.
Det betyder, at den eneste måde at introducere Samba i et AD-domæne, der kører på en 2012R2-server, er at nedgradere skemaet fra 69 til 47. Selvfølgelig skal man ikke gøre dette i en produktionsinfrastruktur uden vægtige grunde, men vi har et testmiljø, så hvorfor ikke.Installerer Alt Server 8.2. Under installationen vælger vi profilen "Samba-DC Server (AD-controller)". På den installerede server foretager vi en fuld opdatering af systemet og installerer pakken task-samba-dc, som vil bringe alt nødvendigt med sig.
# apt-get install task-samba-dcHvis task-samba-dc, trods dokumentationens forsikringer fra Alta, nægter at installere alt nødvendig software.
# apt-get install python-module-samba-DC samba-DC-common samba-DC-winbind-clients samba-DC-winbind samba-DC-common-libs libpytalloc-develDerefter går vi videre med konfigurationen af Kerberos og indhentning af en billet. Vi åbner filen krb5.conf, går til sektionen [libdefaults] og ændrer det til følgende:
# vim /etc/krb5.confdns_lookup_kdc = true dns_lookup_realm = true default_realm = TEST.LOCALAnmoder om en billet
# kinit administrator Password for administrator@TEST.LOCAL:Kontrollerer listen over modtagne Kerberos-billetter
# klist Ticket cache: KEYRING:persistent:0:0 Default principal: administrator@TEST.LOCAL Valid starting Expires Service principal 16.05.2019 11:51:38 16.05.2019 21:51:38 krbtgt/TEST.LOCAL@TEST.LOCAL renew until 23.05.2019 11:51:35Nu sletter vi eller omdøber den eksisterende Samba-konfiguration.
# mv smb.conf smb.conf.bak1Og endelig tilføjer vi den som en sekundær controller i AD:
# samba-tool domain join test.local DC -U"TESTadministrator"Den vellykkede tilføjelse vil blive ledsaget af følgende log
Finder en skrivbar DC til domænet 'test.local' Found DC DC1.TEST.LOCAL Adgangskode for [TESTadministrator]: Genopretter forbindelse til navngivning master e31d7da6-8f56-4420-8473-80f2b3a31338._msdcs.TEST.LOCAL DNS-navnet for den nye navngivning master er DC1.TEST.LOCAL arbejdsgruppe er TEST område er TEST.LOCAL Tilføjer CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL Tilføjer CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL Tilføjer CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=TEST,DC=LOCAL Tilføjer SPN'er til CN=DC2,OU=Domain Controllers,DC=TEST,DC=LOCAL Indstiller kontoens adgangskode for DC2$ Aktiverer konto Kalder bare provision Ser efter IPv4-adresser Ser efter IPv6-adresser Ingen IPv6-adresse vil blive tildelt Indstiller share.ldb Indstiller secrets.ldb Indstiller registreringsdatabasen Indstiller privilegiedatabase Indstiller idmap db Indstiller SAM db Indstiller sam.ldb partitioner og indstillinger Indstiller sam.ldb rootDSE Forlader Samba 4 og AD skemaet En Kerberos-konfiguration egnet til Samba AD er blevet genereret i /var/lib/samba/private/krb5.conf Provision OK for domæne DN DC=TEST,DC=LOCAL Starter replikation Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekter[402/1426] linkede værdier[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekter[804/1426] linkede værdier[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekter[1206/1426] linkede værdier[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekter[1608/1426] linkede værdier[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=TEST,DC=LOCAL] objekter[1743/1426] linkede værdier[0/0] Analysere og anvende skema-objekter Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekter[402/2240] linkede værdier[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekter[804/2240] linkede værdier[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekter[1206/2240] linkede værdier[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekter[1608/2240] linkede værdier[0/24] Partition[CN=Configuration,DC=TEST,DC=LOCAL] objekter[1772/2240] linkede værdier[24/24] Replikerer kritiske objekter fra basis DN for domænet Partition[DC=TEST,DC=LOCAL] objekter[109/110] linkede værdier[26/29] Partition[DC=TEST,DC=LOCAL] objekter[394/5008] linkede værdier[29/29] Færdig med altid replikerede NC (basis, konfiguration, skema) Replikerer DC=DomainDnsZones,DC=TEST,DC=LOCAL Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objekter[42/42] linkede værdier[0/0] Replikerer DC=ForestDnsZones,DC=TEST,DC=LOCAL Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objekter[20/20] linkede værdier[0/0] Exop på[CN=RID Manager$,CN=System,DC=TEST,DC=LOCAL] objekter[3] linkede værdier[0] Forpligtende SAM-database Tilføjer 1 fjern DNS-poster for DC2.TEST.LOCAL Tilføjer DNS A-post DC2.TEST.LOCAL for IPv4 IP: 192.168.90.201 Tilføjer DNS CNAME-post 6ff1df40-cbb5-41f0-b7b3-53a27dde8edf._msdcs.TEST.LOCAL for DC2.TEST.LOCAL Alle andre DNS-poster (som _ldap SRV-poster) oprettes via samba_dnsupdate ved første opstart Replikerer nye DNS-poster i DC=DomainDnsZones,DC=TEST,DC=LOCAL Partition[DC=DomainDnsZones,DC=TEST,DC=LOCAL] objekter[1/42] linkede værdier[0/0] Replikerer nye DNS-poster i DC=ForestDnsZones,DC=TEST,DC=LOCAL Partition[DC=ForestDnsZones,DC=TEST,DC=LOCAL] objekter[1/20] linkede værdier[0/0] Sender DsReplicaUpdateRefs for alle de replikerede partitioner Indstiller isSynchronized og dsServiceName Indstiller secrets-database Blede ind i domænet TEST (SID S-1-5-21-3959064270-1572045903-2556826204) som en DCI ADUC-værktøjet skal der optræde en post om den nye DC i domænet TEST.LOCAL, og i DNS-manageren skal der være en ny A-post, der svarer til DC2.
- Replikation mellem kontrollereLad os først kontrollere, om tjenesten til katalogreplikation (DRS) fungerer
# samba-tool drs showreplAlle replikationsforsøg i outputtet skal være succesfulde. I KCC-objeklisten skal vores DC1 på Windows fremgå inden for 15 minutter efter indtastning.
Standard-Første-Websted-NavnDC2 DSA Muligheder: 0x00000001 DSA objekt GUID: 0e9f5bce-ff59-401e-bdbd-fc69df3fc6bf DSA invocationId: 017997b5-d718-41d7-a3f3-e57ab5151b5c ==== INDBOENDE NABOER ==== DC=ForestDnsZones,DC=test,DC=local Standard-Første-Websted-NavnDC1 via RPC DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Sidste forsøg @ Man May 27 12:56:31 2019 MSK var vellykket 0 på hinanden følgende fejl. Sidste succes @ Man May 27 12:56:31 2019 MSK DC=DomainDnsZones,DC=test,DC=local Standard-Første-Websted-NavnDC1 via RPC DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Sidste forsøg @ Man May 27 12:56:32 2019 MSK var vellykket 0 på hinanden følgende fejl. Sidste succes @ Man May 27 12:56:32 2019 MSK CN=Schema,CN=Configuration,DC=test,DC=local Standard-Første-Websted-NavnDC1 via RPC DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Sidste forsøg @ Man May 27 12:56:32 2019 MSK var vellykket 0 på hinanden følgende fejl. Sidste succes @ Man May 27 12:56:32 2019 MSK DC=test,DC=local Standard-Første-Websted-NavnDC1 via RPC DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Sidste forsøg @ Man May 27 12:56:32 2019 MSK var vellykket 0 på hinanden følgende fejl. Sidste succes @ Man May 27 12:56:32 2019 MSK CN=Configuration,DC=test,DC=local Standard-Første-Websted-NavnDC1 via RPC DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Sidste forsøg @ Man May 27 12:56:33 2019 MSK var vellykket 0 på hinanden følgende fejl. Sidste succes @ Man May 27 12:56:33 2019 MSK ==== UDBOENDE NABOER ==== DC=ForestDnsZones,DC=test,DC=local Standard-Første-Websted-NavnDC1 via RPC DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Sidste forsøg @ Tor May 23 16:40:03 2019 MSK var vellykket 0 på hinanden følgende fejl. Sidste succes @ Tor May 23 16:40:03 2019 MSK DC=DomainDnsZones,DC=test,DC=local Standard-Første-Websted-NavnDC1 via RPC DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Sidste forsøg @ Tor May 23 16:40:03 2019 MSK var vellykket 0 på hinanden følgende fejl. Sidste succes @ Tor May 23 16:40:03 2019 MSK CN=Schema,CN=Configuration,DC=test,DC=local Standard-Første-Websted-NavnDC1 via RPC DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Sidste forsøg @ Tor May 23 16:40:08 2019 MSK var vellykket 0 på hinanden følgende fejl. Sidste succes @ Tor May 23 16:40:08 2019 MSK DC=test,DC=local Standard-Første-Websted-NavnDC1 via RPC DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Sidste forsøg @ Tor May 23 16:40:08 2019 MSK var vellykket 0 på hinanden følgende fejl. Sidste succes @ Tor May 23 16:40:08 2019 MSK CN=Configuration,DC=test,DC=local Standard-Første-Websted-NavnDC1 via RPC DSA objekt GUID: 60fb339d-efa3-4585-a42d-04974e6601b7 Sidste forsøg @ Man May 27 12:12:17 2019 MSK var vellykket 0 på hinanden følgende fejl. Sidste succes @ Man May 27 12:12:17 2019 MSK ==== KCC FORBINDELSESOBJEKTER ==== Forbindelse -- Forbindelsesnavn: 6d2652b3-e723-4af7-a19f-1ee48915753c Aktiveret : SAND Server DNS navn : DC1.test.local Server DN navn : CN=NTDS Settings,CN=DC1,CN=Servers,CN=Standard-Første-Websted,CN=Sites,CN=Configuration,DC=test,DC=local TransportType: RPC muligheder: 0x00000001 Advarsel: Ingen NC repliceret for forbindelse!Advarsel «Ingen NC repliceret for forbindelse!» kan trygt ignoreres. Det opstår fordi, når en ny Samba DC registreres, sætter den nogle replikationsflags forkert.
Det vil også være klogt at tjekke LDAP-replikationen.
# samba-tool ldapcmp ldap://dc1.test.local ldap://dc2.test.local -UadministratorDen ovenfor angivne kommando vil sammenligne attributværdierne for objekterne i hele kataloget mellem DC1 og DC2.
Eksempel på vellykket replikation
* Sammenligner [DOMAIN]-kontekst... * Objekter, der skal sammenlignes: 249 * Resultat for [DOMAIN]: SUCCESS * Sammenligner [CONFIGURATION]-kontekst... * Objekter, der skal sammenlignes: 1750 * Resultat for [CONFIGURATION]: SUCCESS * Sammenligner [SCHEMA]-kontekst... * Objekter, der skal sammenlignes: 1739 * Resultat for [SCHEMA]: SUCCESS * Sammenligner [DNSDOMAIN]-kontekst... * Objekter, der skal sammenlignes: 42 * Resultat for [DNSDOMAIN]: SUCCESS * Sammenligner [DNSFOREST]-kontekst... * Objekter, der skal sammenlignes: 20 * Resultat for [DNSFOREST]: SUCCESSI visse tilfælde kan attributterne for objekter på forskellige controllere variere, og outputtet fra kommandoen vil informere om det. Men det vil ikke altid være et tegn på replikationsproblemer.
Næste skridt er at manuelt indstille en stabil replikation af SysVol-kataloget.
Sagen er, at Samba endnu ikke understøtter DFS-R, ligesom den ikke understøttede den tidligere FRS. Derfor er det eneste nuværende fungerende løsning til replikation mellem en Samba DC og Windows envejsreplikation ved hjælp af værktøjet Robocopy fra pakken .Udviklerne af Samba anbefaler, for at undgå kompatibilitetsproblemer, først at installere værktøjssættet på en almindelig arbejdsstation, og derefter kopiere Robocopy til controllere i mappen «C:Program Files (x86)Windows Resource KitsTools»
Efter installationen opretter vi en opgave i Task Scheduler på controllere med Windows til at udføre replikationen med følgende parametre:
— Udfør for alle brugere
— Udløser til udførelse Dagligt hver 5. minut i løbet af dagen
— I handlingerne angiver vi stien til robocopy-værktøjet, og bl.a. angiver vi argumenterne:DC1SYSVOLtest.local DC2SYSVOLtest.local /mir /secI dette tilfælde kopierer vi indholdet af SysVol-kataloget fra DC1 til DC2.
- Bærbare brugermapper ved hjælp af pam_mount-konfigurationenJeg har gennem erfaring fundet to levedygtige løsninger på denne opgave ved hjælp af det.
- Fuld montering af mappen med profilen fra netværket i sektionen /home. Enkel løsning. Fungerer glimrende, hvis navne på mapperne Mine dokumenter, Downloads og Skrivebordet er ens i begge operativsystemer. Det forudsættes, at PC'en på Linux allerede er blevet introduceret i domænet, og brugerne logger ind med deres domænebrugerkonti, ved hjælp af sssd som autentificerings- og autorisationsmekanisme.
# vim /etc/security/pam_mount.conf.xml<volume uid="100000000-2000000000" fstype="cifs" server="dfs" path="Profile_Users/%(USER)" mountpoint="~" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>hvor:
- uid="100000000-2000000000" — UID-område, der tildeles domænebrugere fra SSSD
- server="dfs" — navnet på filserveren
- path="Profile_Users/%(USER)" — ressource på filserveren, hvor brugerens profil er placeret
- mountpoint="~" — monteringspunkt i brugerens hjemmemappe
Brugerens login overføres til makrovariablen «%(USER)», som bruges af pam_mount til at forbinde vores netværksressource i den form, den er indtastet i displaymanageren. Derfor er det vigtigt, at login i DM indtastes uden at angive domænenavnet eksplicit.
I sssd.conf løses dette ved at kommentere eller sætte værdien False i indstillingen use_fully_qualified_names, som aktiverer tilstanden for fulde navne (herunder domænenavne) for brugere og grupper.
- Den anden metode er mindre ligetil og grov, og efter min mening mere praktisk og foretrukken. Forskellen fra den første er kun i konfigurationen af pam_mount.
# vim /etc/security/pam_mount.conf.xmlDet vil sige, at vi blot monterer hver af vores mapper separat i den tilsvarende katalog
- Fuld montering af mappen med profilen fra netværket i sektionen /home. Enkel løsning. Fungerer glimrende, hvis navne på mapperne Mine dokumenter, Downloads og Skrivebordet er ens i begge operativsystemer. Det forudsættes, at PC'en på Linux allerede er blevet introduceret i domænet, og brugerne logger ind med deres domænebrugerkonti, ved hjælp af sssd som autentificerings- og autorisationsmekanisme.
Konklusioner
I løbet af et og et halv måneders arbejde på testmiljøet har denne opsætning overlevet flere vekslende langvarige og kortvarige afbrydelser af begge controllere, næsten uden konsekvenser for kunderne (én gang mistede en kunde på Windows7 de betroede relationer).
Overordnet set har jeg stadig en ganske positiv oplevelse med at arbejde med dette produkt, på trods af de nuancer, jeg stødte på både i artiklen og "bag kulisserne".
Der er mange faldgruber, og under arbejdet med Samba skal man forvente at finde dem i stort antal. Ikke desto mindre findes der i dag ingen andre løsninger, der muliggør organisering af en hybrid miljø ved hjælp af en katalogtjeneste uden at anvende Windows.
Kilde: habr.com
