Чаму Samba адхіляе VPN-кліентаў, якія дасягаюць сервера
VPN-кліент можа дасягнуць сервера Samba і ўсё роўна атрымаць адмову ад hosts allow. Праверце крыніцу, якую бачыць smbd, і палітыку на ўзроўні абагульвання перад зменамі.
VPN-кліент пінгуе файлавы сервер, развязвае яго імя і ўсё роўна не можа адкрыць абагульванне. Хост-палітыка Samba — адзін з чатырох слаёў, якія могуць адхіліць гэта злучэнне, і яе людзі звычайна правяць апошняй. Спіс дазволеных адрасоў правяраецца супраць адрасу крыніцы, які smbd фактычна атрымлівае, і гэта можа быць не той адрас, які кліент лічыць сваім. Калі вызначыць гэтую крыніцу правільна, расплыўчатая праблема правоў ператвараецца ў змену канфігурацыі ў адзін радок.
Чатыры слаі, якія падаюць з аднолькавым паведамленнем
Адмова можа прыйсці ад маршруту, хост-файрвола, хост-палітыкі Samba або ідэнтычнасці SMB. Кожны слой стварае ў кліента паведамленне, якое кажа прыкладна адно і тое ж, таму здагадкі каштуюць паловы дня. Калі ўпарадкаваць праверкі ад сеткі ўнутр, большая частка здагадак знікае.
Пачніце з транспарту. Калі порт 445 ніколі не дасягае сервера, ніводная налада Samba не мае значэння, і перахоп на інтэрфейсе сервера вырашае гэта за секунды. Далей ідзе хост-файрвол на самім серверы, які можа адкінуць дазволеную крыніцу яшчэ да таго, як smbd яе ўбачыць. Толькі пасля таго, як гэтыя два пункты пройдзены, спіс дазволеных адрасоў становіцца кандыдатам. Аўтэнтыфікацыя ідзе апошняй, бо няўдача ўваходу і адмова хоста выглядаюць у серверным журнале па-рознаму, нават калі кліент паведамляе пра абодва як пра адмову ў доступе. Парадак важнейшы за інструменты, бо кожны слой мае каманду, якая на яго адказвае.
Знайдзіце адрас крыніцы, які smbd фактычна бачыць
Пры маршрутызаваным доступе сервер звычайна бачыць адрас кліента з пулу VPN. Пры трансляцыі крыніцы на шлюзе ён бачыць замест гэтага LAN-адрас шлюза, і кожны кліент за гэтым шлюзам робіцца неадрозным.
Гэтая розніца вырашае, ці запіс у спісе дазволеных адрасоў ёсць палітыкай, а ці дзіркай. Дазволіць трансляваны адрас шлюза — значыць прыняць усіх за ім, што рэдка адпавядае правілу для асобнага кліента. Чытайце крыніцу з сервера, а не з уяўлення кліента пра свой адрас. Перахоп на інтэрфейсе сервера — самы танны спосаб яе ўбачыць, і той жа перахоп даказвае, ці пакет наогул прыйшоў. Абмяжуйце перахоп колькасцю пакетаў і дадайце фільтр хоста, калі даведаецеся, за якім кліентам ідзяце. Табліца сеансаў Samba — другая палова адказу: у smbstatus -b слупок кліента ў кожным радку сеансу — гэта партнёр, якога запісаў smbd, і гэта найхутчэйшае пацверджанне адрасу, які фактычна дасягнуў службы.
sudo tcpdump -ni any -c 20 'tcp port 445'
sudo smbstatus -b
ss -tnp | grep ':445'
Чытайце спіс дазволеных адрасоў так, як яго чытае Samba
Налада hosts allow прымае спіс адрасоў, сетак або імёнаў і можа стаяць глабальна або ўнутры абагульвання. Два запісы, якія вам здаюцца роўнымі, могуць быць не роўнымі для парсера, таму правяраць трэба менавіта дзейсную канфігурацыю. Гэта значыць зведзены выгляд, а не файл, які вы выпадкова правілі.
Ілюстратыўная пара прэфіксаў выглядае як радок ніжэй, і гэта прыклад, а не замена ўжо наяўных запісаў. Пакіньце адміністрацыйных і прыкладных кліентаў, якія законна падключаюцца сёння, і прачытайце любы спіс забарон у тым жа праходзе. Ці будзе хост прыняты, залежыць ад палітыкі ў цэлым, таму тэстуйце дакладнага кліента, а не разважайце пра прыярытэт. Дазвол хоста таксама нічога не кажа пра правы на абагульванне або рэжымы файлавай сістэмы, якія ёсць асобнымі брамамі. Поспех тэставых інструментаў азначае, што хост-палітыка прымае гэтую крыніцу, і нічога больш.
hosts allow = 192.168.50.0/24 10.90.0.0/24
testparm -s
testparm -s /etc/samba/smb.conf client.example 10.90.0.14
Змяніце файл, які перажыве перазапуск
На звычайным хосце Linux шлях канфігурацыі фіксаваны, і служба чытае яго зноў пры перазапуску. На маршрутызатары або прыладзе працоўны smb.conf часта генеруецца пры загрузцы, і ручная праўка знікае пры наступным перазапуску. Выкарыстоўвайце падтрымліваны механізм налады прылады, які звычайна ўяўляе сабой уласны файл канфігурацыі.
Спакуса на гэтым этапе — перапрашыць альтэрнатыўную прашыўку, бо адзін допіс паведаміў, што гэта працуе. Гэта вялікая змена для маленькай праблемы палітыкі, і яна выводзіць прыладу з падтрымліванага стану. Спачатку вызначце падтрымліваны элемент кіравання, бо большасць прылад паказваюць спіс дазволеных адрасоў праз уласны інтэрфейс. Калі яны сапраўды гэтага не робяць, гэтае абмежаванне — аргумент за іншае абсталяванне, а не за непадтрымліваную зборку.
Запішыце, які файл вы змянілі і што яго аднаўляе, каб наступны чалавек не паўтараў дыягностыку.
Праверце аднаго дазволенага і аднаго выключанага кліента
Праверце абодва вынікі, а не толькі жаданы. Дазволены кліент, які падключаецца, даказвае, што змена працуе; выключаны кліент, якому ўсё яшчэ адмаўляюць, даказвае, што правіла не проста адкрыла ўсё.
smbclient -L //fileserver -U alice
sudo testparm -s /etc/samba/smb.conf alice-laptop 10.90.0.14
sudo tail -n 40 /var/log/samba/log.smbd
Калі злучэнне ніколі не дасягае smbd, адказ у маршрутызацыі або ў серверным файрволе. Калі хост дазволены, а ўваход не ўдаецца, праблема ў ідэнтычнасці, і пашырэнне спісу дазволеных адрасоў зноў не дапаможа. Трымайце дыягнастычны вывад прыватным, бо падрабязны журнал Samba можа выкрыць шляхі абагульванняў і імёны ўліковых запісаў. Змяняйце адзін слой за спробу, інакш наступны вынік вам нічога не скажа.