Szamba kínjaim

Fórumok

Csináltam gépen samba szervert. Tűzfalon beengedtem, amit be kell (139,445 tcp, 137,138 udp). Fut az smbd, az nmbd, a samba share alkönyvtárára, s azon belül mindenre rekurzívan lefelé megcsináltam, hogy a SELinux beállítások system_u:object_r:samba_share_t:s0 legyenek.Saját gépről Thunar filemanager fel is tudja csatolni a localhost-on lévő samba share-t. Másik gép ugyanazon az alhálózaton van, látja a Thunar, hogy van ilyen nevű gép, majd amikor rákattintok, egy undok

Failed to retrieve share list from server: Connection refused.

üzenetet dob.

Ráadásul emlékeim szerint ez egyszer már működött. Mik azok a sarokpontok, amelyekre feltétlenül oda kell figyelni egy samba szerver elindításakor? Tudom, hogy nem elég pontos a probléma felvetésem, de fogytán a türelmem, bosszant, hogy mindig csak majdnem jó. Az ssh, scp, effélék mindig működnek, fel sem vetődik, hogy nem, samba-val pedig nekem mindig volt valami misztikum.

További kérdésem, hogy amennyiben a gép dinamikusan kap IP-t dhcp-től, akkor hogyan kell ezt a vackot konfigolni, hogy mások el tudják érni.

Hozzászólások

Saját gépről Thunar filemanager fel is tudja csatolni a localhost-on lévő samba share-t.

1) Egy testparm -v -t futtass, nézd meg, nincs-e van-e interfaces/bind interfaces only beállítva (ha bind interfaces only = yes, akkor az interfaces-ben legyen ott a megfelelő if és a loopback is).
2) Próbáld ki, hogy telnettel be tudsz-e csatlakozni a 445-re, a Connection refused gyanús, hogy TCP szinten volt. [ha nem, nézd át a tűzfalat]
3) Ha nincs tartományod és a belső hálón dinamikus DNS-ed, akkor marad a NetBIOS [IPv6 kiesik], Wines gépekről \\[NETBIOSNÉV]\[MEGOSZTÁSNÉV]-vel tudsz rá hivatkozni, mindenhol máshol az nsswitch-be kell a hosts-hoz a wins, futnia kell az nmbd-nek, akkor ott is tudod a netbios névvel használni (bár az eléggé katasztrófa úgy, ahogy van)

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Jaja, lehetőleg a végére, különben sokat fogsz várni :)

De ez csak a névfeloldáson fog segíteni (ha pl. konzolról kiadsz egy ping netbiosnev parancsot), a Thunar (az a Gnome-os fájlkezelő? Passz, hogy hogyan dolgozik, gondolom mint a KDE-s Dolphin közvetlenül az nmbd-től kérdezgeti a hostlistát) ezt a részét már megoldotta... a csatlakozás valszeg. nem ezért bukik, ott valami tűzfal gond lehet.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Mottó: „Unatkozik? Vásároljon mosómedvét! Telepítsen Samba szervert!”

Most foglakoztam vele, megcsináltam, működik, senki ne kérdezze, mitől. Ami az elmúlt másfél nap tömény sz.pásából eszembe jut, arról írok, a többit feledje jótékony homály, a titkot őrizzék a backup-ok. :)

Kezdjük azzal, hiányolt valami library-t, így eleve nem tudott elindulni. Valamiféle ösztönös megérzésből létrehoztam a /etc/ld.so.conf.d/samba-x86_64.conf file-t az alábbi tartalommal:

/usr/lib64/samba/wbclient

Aztán persze ldconfig. Nagyszerű, ezek után már képes volt elindulni az smb, nmb. Az nmb - az itt offtopic vsftpd-hez hasonlóan - boot alkalmával néha nem indult el, szerintem azért, mert a hálózat később éledt fel, mint ahogyan a szerver indult. Így aztán létrehoztam egy /usr/local/lib/systemd/system/nmb.service.d/config_nmb.conf file-t, melybe ezt írtam:

[Service]
RestartSec=10
Restart=on-failure

Utána systemctl daemon-reload.

Tudom, ronda workaround, de hány olyan dolog van, amit szigszalaggal javítanak meg... :)

Aztán olvastam a man smb.conf-ot, s ezt találtam:

       When Samba is functioning in ADS security mode (security = ads) it is
       advised to use following settings for name resolve order:

       name resolve order = wins bcast

       DC lookups will still be done via DNS, but fallbacks to netbios names
       will not inundate your DNS servers with needless querys for
       DOMAIN<0x1c> lookups.

Azt nem állítom, hogy átéreztem a mondanivalót, de isteni erők arra vezették az ujjaimat, hogy copy-paste-eljem az smb.conf-ba a

        name resolve order = wins bcast

bejegyzést.

A tűzfalon az smb-client beállítás kevés volt a kliensen, gondolom, az nmb miatt, amit el kellett indítanom, mert attól táltosodott meg a névfeloldás. Szóval a szervernek megfelelő tűzfalbeállítások vannak most. Meg hozzáadtam a 135-ös TCP portot ez alapján. Ezen felül a 137-es UDP-t a source portok közé felvettem. Nem tudom miért, lehet, hogy nem kell, valahol olvastam.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Lehet, hogy az egyszerűtől kellene a bonyolult felé haladni: statikus IP-vel és SeLinux nélkül működik? (Ha igen, akkor legegyszerűbb lenne ennél maradni.)

Statikus IP-t még nem próbáltam ki, de a selinux=0 kernelparaméterrel boot-olva ugyanúgy nem megy. Próbáltam smbclient-tel is:

smbclient -U anonymous -L KRAFTWERK
Enter anonymous's password:
Connection to KRAFTWERK failed (Error NT_STATUS_UNSUCCESSFUL)

Ezzel szemben a localhost-on lévő samba szervert el tudom érni. Ez nem tűzfal probléma, egyrészt ez az üzenet szerintem már a samba-tól jön, másfelől a telnet 192.168.0.153 445 sikerült. Túl közlékeny nem volt, de gondolom, nem is kell annak lennie.

Ha leállítom a gépet, tehát már egészen biztosan nem tud válaszolni, akkor is ugyanez az smbclient válasza, így aztán még bármi is lehet ez.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Egy smb.conf-ot / testparm -v kimenetet küldhetnél.

Ez még mindig lehet névfeloldási gond is ill. magyar postás tűzfal (drop és nem reject), de akár samba-n belüli hosts deny is.

ping KRAFTWERK fel tudja oldani a címet?

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

testparm -v &>testparm.txt

ping KRAFTWERK
ping: KRAFTWERK: No address associated with hostname

Az igazsághoz hozzátartozik, hogy az nsswitch.conf-ból végül kivettem a hosts: végéről a wins bejegyzést, mert nem láttam a valid entries között, valamint attól sem javult meg, ha odaírtam. Igaz, a gépet nem indítottam újra. A doksi alapján kellene lennie valami /lib/libnss_wins.so, vagy valami hasonló file-nak, de nincs. A lib64-ben megvannak a többiek, de wins nyomaiban sincs.

Szerk 1.:
Ugyanakkor az smbtree valamint a Thunar filemanager honnan tudja a gép netbios nevét? Mert azt azért tudja. De, ha már tudja, akkor csak beszerezte valahogyan, tehát nyilván tudja az IP-címet is. Ha ez így van, miért nem használja?

Szerk 2.:
Szűkítettem a kört, biztos, hogy névfeloldással függ össze a probléma, tudniillik az

smbclient -U anonymous -I 192.168.0.153 -L KRAFTWERK

parancs működik. Félve kérdezem meg: mire való az lmhosts file? Kell-e ez nekem, valamint dinamikus IP-cím esetén valmiféle scripttel dinamikusan kellene módosítanom a tartalmát?

Szerk3.:
Ha IP-címmel hivatkozok - smb://192.168.0.153/ - a Thunar is beenged, megmutatja a samba megosztást.

Hogyan tovább?

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ugyanakkor az smbtree valamint a Thunar filemanager honnan tudja a gép netbios nevét?

Gondolom közvetlenül az nmb-től kérdezgetik le (nmbstatus-szal neked is kiírja, hogy kikről tud), az meg folyamatosan követi (meglehetősen katasztrofális a protokoll, a bekiabálásos broadcasttól kezdve a szépen demokratikusan szavazgatunk [és itt akkor mindent néznek, hogy milyen verziójú Windows fut rajta, mekkora az uptime-ja stb.], hogy ki legyen a mester és csak ő kiabálhassonig minden van benne).
Ha a Thunarból akarod megnyitni, akkor milyen url-lel próbálkozik? Simán bennehagyja a netbios nevet, hogy valami majd feloldja neki vagy önmaga átírja IP-re (igazából egyik rosszabb, mint a másik)?

Szűkítettem a kört, biztos, hogy névfeloldással függ össze a probléma ... Félve kérdezem meg: mire való az lmhosts file? Kell-e ez nekem

Kb. mint a sima hosts fájl, egy egyszerű fallback, úgyhogy nem kell.
Nézegettem kicsit a Fedora csomagarchívumokat, ha jól látom a libnss-winbind-modules csomagban ott van a libnss_winbind (user és group lookup) és a libnss_wins (host lookup) is.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Jogos, azt éppen megint a Winbind csinálja :) Legalábbis a libnss_wins a Winbind-nak küldi a WINS kéréseket... lusta vagyok most packet capture-t csinálni, de gyanús, hogy nem kiküldi a broadcast packetet, ahelyett, hogy a mester tallózótól kérdezi le unicasttal.

(csak egyszer jönne már el az IPv6, hogy ezek végleg eltűnjenek :) )

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

:)

Nmb support már - ha minden igaz - nem lesz rá, legalábbis a Samba dev-ek a "tisztán IPv6 AD domain" előadásukban évek óta ezt írják (mmint. protokoll szinten nem, nagyon v4-centrikus és gyanús, hogy már az MS se akarja bottal se megpiszkálni ezt a rettenetet, ha már a fontosabb funkcióit felvitték az AD-ba és "le" a HomeGroup-ba [*])

[*]: Bár beleolvasva az MS-HGRP, MS-PPSEC és MS-PNRP doksik bevezetőibe, ahogy elnézem eljátszák ugyanazt, mint annó a NetBIOS-szal, csak most már cloud méretekre lőve és leválasztva a címzést a lookuptól (bár a "All members of the homegroup are required to have an IPv6 address" viccess lesz, amikor jön az IPv8 :D)

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

> Félve kérdezem meg: mire való az lmhosts file?

SMB-s névfeloldásra. Leggyakrabban a /etc/samba/lmhosts-ra van egy symlink /etc/lmhosts néven, nem tudom, melyik a "hivatalos".

> Kell-e ez nekem

Nem kell, csak gyorsítja/lehetővé teszi a nevek címekre fordítását.

> valamint dinamikus IP-cím esetén valmiféle scripttel dinamikusan kellene módosítanom a tartalmát?

Ne legyen már a szervernek dinamikus IP-je... Az az ad-hoc igényekre (vendégek telefonja, pl) való.

Ha van egy céges hálózaton egy windowsos gép, amelyik dhcp-től kap címet, azon pedig filemegosztás, az nem ekvivalens azzal, mint amikor ugyanezen a hálózaton egy linuxos gép dhcp-től kap címet, s fut rajta egy samba szerver?

Úgy könnyű, ha az lmhosts-ba bedrótozom minden host-on a gépek neveit és IP-címeit. Akkor viszont mi a fenének a bohóckodás az nmbd-vel, meg mindenféle névfeloldásokkal? Mondom mindezt úgy, hogy elég homályos nekem ez a netbios-os névfeloldás, meg samba témakör, szóval nevetni csak csendben ér! ;)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Na jó, de viccet félretéve valljuk be, nem volna túl ergonomikus, ha nem lenne DNS, hanem a hosts file-ba vennénk fel manuálisan az általunk látogatott oldalak IP-címeit, s igény szerint bővítenénk a listát. Igaz, megvan az az előnye, hogy legalább gyors lenne. Na, nem az adminisztrálása. :)

Szóval itt sem elfogadható szerintem, hogy ha egy céges hálózatban van mondjuk 20 db gép, akkor minden gépen az lmhosts file-ba vigyük fel az összes gép IP-címét és nevét. Valamire csak való az nmbd, biztos be is lehet konfigurálni normálisan, csak egyelőre nekem okoz nehézséget, mert még a fogalmakkal sem vagyok teljesen tisztában. Ezért fordultam ide segítségért.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ja, igen:

rpm -q samba
samba-4.4.5-1.fc24.x86_64

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Milyen DNS szerverhez kapcsolódik a kliens, amiről próbálod elérni a szervert?

Üdv,
Marci

Van egy kis SMC, 10+ éves soho router. Ez oszt IP-t. Aztán fut a gépeken NetworkManager, azoknak beállítottam, hogy a dnsmasq-ot indítsa caching only name serverként, valamint beállítottam, hogy noha dhcp-től kapok IP-t, kiegészítésként a 127.0.0.1 és a 8.8.8.8 legyen a DNS-ek között. Működik, mert a dig bix.hu parancs egyfelől mondja, hogy a nevet a 127.0.0.1#53-ról kérte, másfelől a válaszidő először 15 ms, míg másodjára a cache-elés miatt 0 ms volt.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Mondjuk ez is érdekes:
nmblookup MUNKACSOPORT
192.168.122.1 MUNKACSOPORT<00>

Ez a virbr0 interface /24-es címe a virtuális gép számára. Igen, neki is el kell érnie a samba szervert, de kívülről is jó volna. A fizikai interface címe 192.168.0.153/24.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nem kell rajz, elmesélem. Piciny otthonomban telepítek egy linuxos gépet ismerősnek. Mindössze két gépről van szó. A másik a sajátom. Mindkettőn futtatok egy-egy samba szervert, hogy mindkettőn legyen filemegosztás. A probléma viszont általánosabban is érdekel, mert a munkahelyemen van egy linuxos gépem, míg van egy rakás windows-os is, a kollégáké.

Az én gépem statikus címe 192.168.0.12, míg a kraftwerk nevű gép wifi interface-e az otthoni soho router dhcp szerverétől kapta a 192.168.0.153-as címet. A hálózat /24-es.

Ugyanakkor mindkét gépen van qemu-kvm virtualizáció is. A host és a guest-ek közti filecserét szintén a windows-os samba protokollal gondolom megoldani, mert így a guest lehet Windows is, Linux is, a host által felkínált megosztáson keresztül lehet file-t cserélni.

A virtuális interface-ek virbr0 és virbr1. Ezek címei 192.168.122.1/24 és 192.168.100.1/24. Ha jól gondolom, bridge-ek, de a hálózati ismereteim szerények, szóval ezen utóbbi kijelentésemet olvasd fenntartással.

A samba share loopback interface-en biztosan megy, mert a filemanager gond nélkül fel tudja csatolni a saját gépen futó szervert. A probléma az, hogy a két gép között nem megy ez. Pontosabban szólva megy, ha IP-címmel hivatkozom rá, például smb://192.168.0.153/ módon. Így elérem a megosztást a másik gépen, tehát egészen biztos, hogy működik a samba szerver. Valamit a névfeloldással szúrok el, de azt nagyon, viszont ebben nincs tapasztalatom, nem látok tisztán. Itt tartok.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

2 wins szerver egymásról mit sem tudva pl nem túl jó ötlet

Ezt én minden kétséget kizáróan elhiszem, de ismereteim hiányából fakadóan mindig párhuzamosan egyformán konfiguráltam a két samba szervert, szóval valószínűleg megvalósítottam ezt a nem túl áldott állapotot. Bár nekem elég terhes. :D

Másként kérdezek. Ha vannak simán windows-os gépek egy hálózaton, mindegyik gépen megosztanak egy-egy alkönyvtárat, az hogyan működik? Lényegében ezt szeretném elérni, csak linuxos gépen, meg úgy, hogy a virtualizált guest-jeim is tudják használni a samba share-t.

Tehát az a cél, hogy a hálózaton bármelyik gép filemanageréből bármelyik másik gép megosztott alkönyvtárát meg tudjam nyitni, oda file-t tudjak másolni, valamint onnan file-t tudjak elhozni. Mindezt persze úgy, hogy kényelmesen, névvel látva a gépeket a filemanagerben, nem pedig IP-címet csépelve a filemanager címsorába.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Fentről lefelé, nagyvonalakban, emlékezetből (ha valamelyik nem használható, akkor tovább):
0) Ha szerepel a hosts fájlban, móka vége
1) Ha van pont a névben, akkor DNS, móka vége
2) Ha hosszabb, mint 19 karakter (azt hiszem, lusta vagyok utánanézni :) ), akkor DNS, móka vége
3) DNS-kérés a beállított search suffixekkel
4) Ha van WINS szerver beállítva (statikusan vagy DHCP-n), annak a lekérdezése
5) A master browser lekérdezése
6) Broadcast lekérdezés
7) LMHOSTS fájl

+/- cache-ek és ahol rosszul emlékszem a sorrendre, az :) A 4-estől lefelé részletesebben lásd muszashi fenti prezijét vagy ezt: https://support.microsoft.com/en-us/kb/119493

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Haladjunk sorjában:
1) ahhoz, hogy a 192.168.0.12 gépről kraftwerk néven hivatkozni tudja a dinamikus IP-jű gépre, kell a wins az nsswitch fájlodba
2) ahhoz, hogy a kraftwerk lássa név szerint a statikus IP-s géped (felteszem kraftwek-en Windows fut) kell az, hogy az nmbd fusson a gépeden és helyes IP-t adjon vissza, amire tud útvonalat a kraftwerk. (lásd az mrceeka által írt linket vagy a lenti hozzászólást, az interfacesről és a bind interfaces only-ról)

A guestekhez való hozzáférés... van néhány megoldás: azt a két if-et is felveszed az interfaces sorba (_elvileg_ jó címet kellene visszaadnia, aztán persze ahogy lentebb látszik, van, hogy nem...), a guesteknek beállítod WINS szervernek a 192.168.0.12-t (isc dhcp-vel ő a netbios-name-servers opció), vagy akár teljesen külön samba példányokat húzol fel arra a két if-re (azt hiszem működhet, de nem mernék rá megesküdni)

---
Szerk.: oh, most látom muszashi fenti hozzászólása alapján, hogy a laptop is linux... akkor bizony wins server a nem fix IP-s gépek smb.conf-jába és/vagy szórd ki DHCP-vel a Wines gépeknek...

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Hamarosan aludnom kellene, már két hete 5 órai alvásokkal vagyok el, ami nem túl jó. Ezt a hozzászólásodat rágicsálom még.

felteszem kraftwek-en Windows fut

Nem. A saját gépemen is és a kraftwerk nevűn is Fedora 24 van. Meg ne kérdezd, minek sz.patom magam, miért nem nfs akkor már. Egyrészt, mert meg szeretném ezt tanulni, másrészt, a munkahelyemen vegyes a környezet, windows-os gépek fojtogatásában virágzik a linuxos gépem. :) Na, meg azért is, mert a kraftwerk nevű valójában dual boot-os, s nem bánnám, ha működne a dolog Linuxon, Windows-on egyaránt.

Nem laptop egyik sem, amolyan kőkorszaki technológia, mini torony házba raktam MSI A88XM E35 V2 alaplapot, AMD-A10 7800 APU-t, 16 GiB RAM-ot, meg még 120 GB SSD-t, 1 TB HDD-t, optikai drive-ot, meg ami még kell bele. :) Kár, hogy ez nem az én gépem lesz.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Én se vagyok túl kipihent, a wifiből azonnal laptopra asszociáltam :)

Ha nem Fedora lenne mondanám, hogy ne szívasd magad az nmb-vel, és csinálj egy Samba AD-t, az közelebb áll a mai Windowsok lelkivilágához, de RedHat vonalon az nem lesz, amíg nem tudják teljesen kilapátolni a Heimdal-t a szerverből (de évek óta dolgoznak rajta, már nemsokára :) ).

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

a wifiből azonnal laptopra asszociáltam :)

Nincs hosszú UTP kábelem, s ha lenne, sem nézne ki túl jól, ahogy keresztülvonul a hálószobán és a nappali egy részén, szóval feldugtam a gépre egy USB-s wifi interface-t.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Akkor az smb.conf-ba interfaces = -hez vedd fel az lo-t és a fizikai interfészt (mmint. amelyikhez ott van a cím, amit hirdetni akarsz) és egy bind interfaces only = Yes.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)