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 може розкрити шляхи спільних ресурсів та імена облікових записів. Змінюйте по одному рівню за спробу, інакше наступний результат вам нічого не скаже.

Схожі статті