Openwrt монтирование сетевого диска
Для полного понимания процедур крайне желательно ознакомится с темами приведенными ниже:
This article relies on the following:
Так же необходимо отметить что механизм конфигурирования extroot существенно зависит от версии OpwnWrt и в меньшей степени зависит от типа вашего устройства. Данная русскоязычная версия документации будет отталкиваться от версии OpwnWrt 18.06. В качестве аппаратной платформы будет использоваться роутер TP-LINK TL-WDR4300/3600.
У многих роутеров существенно ограничено размер дискового пространства для хранения файлов и данных (встроенная flash-память). Но, в тоже время, роутеры могут быть оборудованы портами USB или SATA, что позволяет подключить к ним внешние устройства хранения, такие, как диски USB-flash и USB-HDD. В более экзотических случаях могут быть подключены даже mini PCI-E или сетевые диски. Подключение подобных устройств позволяет расширить “дисковую” память роутера, в том числе и его корневую файловую систему, rootfs для хранения как дополнительного программного обеспечения, так и дополнительных настроек. В большинстве поддерживаемых устройств OpenWrt разбивает внутреннее хранилище на разделы rootfs и rootfs_data , которые объединяются в одну перезаписываемую файловую систему наложения overlay .
Partition(раздел) | Mount point(точка монтирования) | Compression(сжатие) | Writable(записываемый) |
---|---|---|---|
rootfs | /rom | Yes(Да) | No(Нет) |
rootfs_data | /overlay | No(Нет) | Yes(Да) |
overlay | / | Unmodified files(Не модифицированные файлы) | Yes(Да) |
Таким образом, OpenWrt помещается даже в крошечные объемы внутренней памяти (всего 4 МБ), но все же позволяет записывать настройки и устанавливать некоторые пакеты в доступный для записи раздел без изменения всех используемых программ Linux.
Extroot работает, устанавливая другой overlay раздел на внешнем устройстве хранения, и во время загрузки этот новый overlay раздел будет смонтирован поверх overlay раздела внутреннего хранилища. Этот подход позволяет легко откатиться в случае удаления внешнего устройства хранения, поскольку ваше устройство по-прежнему будет иметь свой собственный overlay раздел и, следовательно, будет загружать всю конфигурацию оттуда.
Это означает, что он будет вести себя точно так же, как и перед настройкой extroot.
Дополнительные сведения
2. Installing samba
To find out, if samba is already installed on your device, try to query the samba version:
if this fails, you have to install samba. To do so, first identify the samba version available for your installation:
In our example the available version is “samba36”:
Mandatory: Now install the samba server package:
Optional: if you need a command line samba client for debugging problems, also install:
Optional: If you want a simple LuCi GUI config for samba, also install:
Через командную строку
Раздел на внешнем USB устройстве должен быть подмонтирован как overlay Свободное пространство в корневом разделе / должно быть равно пространству на /overlay .
Extroot на карту памяти в слоте USB-модема
В статье Использование 3g/UMTS USB модема для WAN соединений рекомендуют добавить в образ прошивки утилиту usb-modeswitch .
Использование данной утилиты имеет особенности: если /overlay расположить на карте памяти, находящейся в слоте USB-модема, то даже при совершенно правильных настройках внешнего overlay , работоспособных при любом другом размещении оверлея, в данном случае будут наблюдаться неполадки файловой системы, возникающие на завершающей стадии загрузки ОС. Неполадки вызваны тем, что утилита usb-modeswitch , отключая CDROM и подключая модем, попутно на некоторое время отключает и считыватель карт памяти, нарушая работу файловой системы.
Избежать этого можно заранее настроив USB-модем так, чтобы usb-modeswitch не потребовался вообще: устройство должно сразу представляться ОС как модем или сетевой адаптер со считывателем карт памяти включенными по-умолчанию.
Подключите USB-модем к компьютеру и с помощью терминала отправьте на модем соответствующие AT-команды.
Проверяем исходную конфигурацию USB-модема:
Расшифровать данный ответ модема можно с помощью следующей команды:
В данном примере у нас USB-модем, в котором в первой конфигурации (слева от символа ; ) включены CDROM и считыватель карт, во второй конфигурации (справа от символа ; ) включен модем, управляющий и диагностический интерфейсы, и считыватель карт памяти. Именно между двумя этими конфигурациями утилита usb-modeswitch переключает USB-модем на роутере.
Ваша цель - оставить только одну конфигурацию, в которой по-умолчанию включен модем (см. 1 выше) или сетевой адаптер (см. 16 выше), присутствует считыватель карт памяти (см. A2 выше), но при этом выключен CDROM.
ВНИМАНИЕ: Нельзя отключать интерфейс PCUI (см. 2 выше) - вы потеряете возможность управлять USB-модемом!
Некоторые USB-модемы принимают параметр 'выключить всё' (см. FF ниже).
Перечислите все необходимые вам по-умолчанию функции модема в списке справа от символа ; по их кодам из ответа модема вверху:
Данная последовательность команд выключила CDROM и оставила единственную конфигурацию, в которой по-умолчанию присутствуют модем, интерфейсы и считыватель карт памяти - без необходимости пользоваться утилитой usb-modeswitch на роутере. Обратите внимание на символ ; - слева от него пусто.
Иногда в домашней сети нужен сетевой диск, который будет воткнут именно в роутер, к которому будут иметь доступ все устройства в локальной сети. Роутер то у нас, как правило всегда включен, так почему бы не создать бесплатное, тихое сетевое хранилище из того, что есть. А нужно то нам для этого всего ничего - роутер с OpenWrt на борту и флешка требуемого объема под ваши нужды. В моем случае, рассмотрим процесс создания сетевого диска в OpenWrt 18.06.1 на роутере TP-Link WR842N, а качестве носителя будет использована usb флешка на 128гб.
2. Форматирование Usb флешки на роутере
Вы, конечно, можете отформатировать флешку из под Windows, например, при помощи Minitool Partition Wizard для быстрой разметки флешки. Или в другой Linux машине. Либо как я прямо на роутере, в моем случае это диск /dev/sda1:
mkf2s.f2fs -l NAS /dev/sda1
1.2. Устройства более чем с 8 МБ флеш памяти
На этих устройствах должно быть достаточно места для установки необходимых нам пакетов. Удалите все пакеты, которые вы установили, чтобы добавить функциональность, так как они теперь только используют место во встроенной флеш памяти. После того, как вы сделаете extroot, у вас будет все необходимое пространство.
Из интерфейса командной строки напишите (в одну строку):
Это установит пакеты, необходимые для раздела с файловой системой ext4.
Пользователи, подверженные риску, могут захотеть создать собственный образ (как описано в предыдущем разделе), содержащий эти инструменты и особенно модули ядра, которые соответствуют ядру прошивки, чтобы они были доступны в отказоустойчивом режиме(failsafe mode).
3. Настройка extroot
Посмотрите, какие есть у вас разделы:
Здесь мы видим mtdblock устройства (разделы во внутренней флеш памяти), и раздел /dev/sda1 это ваш USB флеш диск.
Отформатируйте раздел /dev/sda1 в ext4 если это необходимо:
Сейчас мы от конфигурируем /dev/sda1 как новый overlay через подсистему fstab uci:
Если у вас есть раздел подкачки, он также будет распознан и добавлен автоматически.
Troubleshooting
check that the mountpoint (e.g. ls -l /mnt/sha3 has “rwx” bits set. chmod can be used to change that if in doubt.
it seems like if the samba share name equals the mountpoint name that that triggers a readonly mode. E.g. avoid naming your samba share “sha3” if your mountpoint is named ”/mnt/sha3“
If you have problems to access your shared directory via Samba Win10 Client and you get the error code 0x80004005; you should be take a look into this solution Microsoft-Forum: Viewing Network Error 0x80004005
Press Windows key + R Type: optionalfeatures.exe Hit Enter Scroll down to SMB 1.0/CIFS File Sharing Support Tick the SMB 1.0/CIFS Client Untick SMB 1.0/CIFS Automatic Removal and Untick SMB 1.0/CIFS Server Click OK and restart if prompted.
- Last modified: 2021/08/16 17:07
- by vgaetera
Self-registration in the wiki has been disabled.
If you want to contribute to the OpenWrt wiki, please post HERE in the forum or ask on IRC for access.
Except where otherwise noted, content on this wiki is licensed under the following license:
CC Attribution-Share Alike 4.0 International
Принт-сервер p910nd OpenWRT на примере Samsung SCX-3400
До недавних пор нам хватало обычного USB подключенного принтера Samsung SCX 3400 для всех наших нужд. Но с ростом количества компьютеров, ноутбуков и даже смартфонов, которые им пользуются, было принято решение сделать из обычного USB принтера беспроводной, а на помощь нам как раз подоcпела одна из моих любимых коробочек TP-Link MR3020 с OpenWRT на борту. Тем самым отпала необходимость держать свой ноутбук, к которому был подключен принтер ранее, постоянно включенным, дабы другие участники сети имели к нему доступ. Ну и, конечно, освободил USB порт на ноутбуке для других задач.
1.1. Для устройств менее чем с 4 МБ флеш памяти
В образах прошивки OpenWrt по умолчанию нет инструментов для создание extroot, так как система сборки в настоящее время создает только barebone-образы.
Единственный способ использовать эти устройства - перестроить образ прошивки с нужными пакетами с помощью Image Builder.
Image Builder может работать только в 64-битной операционной системе Linux, поэтому, если у вас нет системы Linux, посмотрите инструкции по установке Ubuntu 64bit в VirtualBox.
Затем перейдите на ту же страницу загрузки, где вы можете загрузить прошивку для своего устройства, и прокручивать вниз, пока не найдете файл, начинающийся с “ OpenWrt-imagebuilder ”.
Загрузите его и распакуйте в папку в системе Linux.
Откройте терминал в этой папке и напишите:
Это выведет на экран все возможные имена профилей для устройств, поддерживаемых этим Image Builder, чтобы мы могли создать образ для нужного устройства. Каждая запись будет выглядеть так:
Первая строка - это имя профиля, вторая строка - полное имя вашего устройства, третья строка - список пакетов по умолчанию для этого устройства, и в нем должны быть перечислены некоторые пакеты с USB или Sata или любым другим устройством хранения.
В нашем случаи это TP-LINK TL-WR1043N/ND v1, поэтому имя профиля этого устройства tl-wr1043nd-v1 Теперь нам нужно написать команду, чтобы начать сборку образа (обратите внимание, что имя после PROFILE= является именем профиля данного устройства, обязательно используйте имя профиля для своего устройства):
Это создаст образ прошивки, который может прочитать раздел, отформатированный в файловой системе ext4 на внешних устройствах хранения подключенных через USB.
К сожалению, пакет e2fsprogs с инструментами для файловой системы ext4 слишком велик, чтобы поместиться в 4 МБ. Если кто-то может отделить mke2fs и инструменты проверки файловой системы от него, то можно сделать отделенные инструкции по использованию файловой системы ext4.
После этого откройте папку bin внутри папки Image Builder, затем откройте папку target, затем папку, в которой вы ее найдете (она имеет имя, зависящее от типа устройства), а затем внутри папки. называется generic , и вы должны добраться образа для прошивки. Выберите правильный образ (factory или sysupgrade) и установите его.
Затем вам нужно будет отформатировать USB-накопитель в файловую систему ext4, и для этого вам потребуется использовать Linux LiveCD или gparted диск.
К сожалению, это неудобно, но, как сказано выше, мы не можем разместить инструменты форматирования на устройствах с 4 МБ флэш-памяти.
Samba 3 server - Before you start
It's important before beginning samba setup that you get your disks sorted.
Installing filesystem support, mounting, basic os level permissions are all something Samba sits on top of.
Beginning the setup of the Samba server before mounting and verifying a working disk setup will make things much harder in the long run.
( : Add links to various usb / filesystem setup guides )
Samba share config when using "user level" access
Make sure that guest ok is set to no and allow your created user to access the fileshare with the option users by adding the usernames.
If you want to add more than one user, use a comma separated list.
In the following example we will allow newuser to access the share.
4. Перенос данных
Теперь мы перенесем содержимое текущего оверлея на наш новый оверлей на внешнем диске:
Сохранение списков программных пакетов при загрузке
Сохранение статуса установленных пакетов opkg в /usr/lib/opkg/lists хранящемся в extroot, а не в RAM, экономит некоторую оперативную память и сохраняет списки пакетов доступными после перезагрузки.
4. Включение сетевого хранилища
Далее переходим в меню Services - Network Shares. Включаем обнаружение нашего сетевого диска. Тут все просто - вписываете название диска, а также путь, куда замонтирована наша флешка. Я назвал диск UsbStorage, а путь соответственно указал просто /mnt.
Сохраняемся и применяем изменения. Далее подцепляем диск на машинах клиента.
Расширяем дисковую память Chaos Calmer 15.05.1 OpenWRT на USB флешку
После установки скомпилированной разработчиками OpenWRT прошивки Chaos Calmer 15.05.1 на ваш роутер с 4мб дисковой памяти вы обнаружите, что у вас осталось всего навсего 300кб для прочих нужд. Для решения одной задачи этого может и хватит, как например, для организации принт-сервера посредством OpenWRT, но никак не более. Поэтому логично первым делом заняться увеличением дискового пространства для маневров. И все это без компиляции собственной прошивки и прочих танцев с бубном. Когда нужно решать задачу быстро из того что имеем.
Имея доступ в интернет с нашего роутера, авторизуемся на нем через SHH соединение при помощи программы PuTTY и последовательно начнем:
Сначала обновляем список пакетов
Далее устанавливаем поддержку USB устройств на нашем роутере
opkg install kmod-usb-storage
Далее нам нужна флешка, где вы заранее cоздали бы хотя бы 2 раздела, основной (пока не важно какой файловой системы) и так называемый раздел подкачки (стандартный linux swap). На моей 16Gb флешке я создал 3 раздела: первый на 1gb без файловой системы для расширения встроенной памяти устройства - собственно под overlay, второй самый большой раздел на 13gb тоже пока без файловой системы буду монтировать как отдельный том, и третий раздел на сотню с лишним мегабайт как файл подкачки linux. Разбить флешку на разделы через fdisk роутера не получится - не хватит памяти для установки нужных пакетов пока, поэтому сделать это придется на другой Linux машине или из под Windows, например, при помощи программы Minitool Partition Wizard.
После чего готовую к форматированию вставляем в usb разъем и вводим команду:
[ 2598.210000] usb 1-1.4: new high-speed USB device number 4 using ehci-platform
[ 2598.330000] usb-storage 1-1.4:1.0: USB Mass Storage device detected
[ 2598.340000] scsi host1: usb-storage 1-1.4:1.0
[ 2599.340000] scsi 1:0:0:0: Direct-Access SanDisk Ultra Fit 1.00 PQ: 0 ANSI: 6
[ 2599.350000] sd 1:0:0:0: [sda] 30031250 512-byte logical blocks: (15.3 GB/14.3 GiB)
[ 2599.350000] sd 1:0:0:0: [sda] Write Protect is off
[ 2599.360000] sd 1:0:0:0: [sda] Mode Sense: 43 00 00 00
[ 2599.360000] sd 1:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 2599.380000] sda: sda1 sda2 sda3
[ 2599.390000] sd 1:0:0:0: [sda] Attached SCSI removable disk
Флешка у меня определилась как sda1, sda2 и sda3. Все верно, 3 раздела.
Ну есть одно НО, которое я еще решил стандартными средствами OpenWRT. Мы не можем создать разделы и отформатировать флешку в файловой системе f2fs при помощи утилит f2fs-tool – mkfs.f2fs потому , что в прошивке не рабочая версия 1.4.0 данной программы. Некий бонус от сборщика прошивки так сказать. Поэтому создать разделы, отформатировать ее придется на другой Linux машине или приложении Windows.
Далее устанавливаем собранный мной пакет f2fs-tools версии 1.4.1 для ветки 15.05.1, который поможет нам отформатировать флешку прямо с нашего роутера, вдруг даже виртуальной Linux машины нет под рукой. Cначала ставим утилиту форматирования в файловой системе F2FS:
Затем обновленную библиотеку поддержки файловой системы F2FS.
Далее форматируем первый раздел нашей флешки в F2FS.
mkfs.f2fs -l overlay /dev/sda1
И в моем случае еще и второй раздел
mkfs.f2fs -l data /dev/sda2
Далее удаляем не нужные нам теперь libf2fs f2fs-tools
opkg remove f2fs-tools libf2fs
Устанавливаем поддержку файловой системы F2FS ядра. Не то, чтобы я ее ярый фанат, но она единственная - установочный модуль которой весит всего ничего и не тянет за собой кучу зависимостей. И разработана была специально для флеш носителей информации.
opkg install kmod-fs-f2fs
Уже можем проверить как она монтируемся
mount /dev/sda1 /mnt
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 512 408 104 80% /
/dev/root 2304 2304 0 100% /rom
tmpfs 14288 640 13648 4% /tmp
/dev/mtdblock3 512 408 104 80% /overlay
overlayfs:/overlay 512 408 104 80% /
tmpfs 512 0 512 0% /dev
/dev/sda1 1021952 143368 860152 14% /mnt
После того, как флешка смонтировалась, копируем на нее исходные данные для его последующего монтирования как доп память:
tar -C /overlay -cvf - . | tar -C /mnt -xf -
дабы не записалось ничего лишнего отмонтируемся
Далее нам нужно установить пакет block-mount, который занимается монтированием дисков туда, куда ему укажут на этапе загрузки устройства. Но и тут подкралась вторая засада – пакет block-mount который предлагает репозитарий OpenWrt для ветки Chaos Calmer 15.05.1 – не поддерживает указание дисков в файловой системе f2fs как overlay устройств. Просто забыли прописать в данном пакете ее поддержку. Поэтому придется поставить усовершенствованную версию пакета block-mount, предоставленную мной, которая кстати сгодится для всех у кого ветка Chaos Calmer 15.05.1 и устройство на архитектуре ar71xx.
block detect > /etc/config/fstab
У меня после команды block detect файл fstab выглядит так
Открываем файл fstab в текстовом редакторе vi
Жмем букву i переходим в режим редактирования и приводим его к виду
То есть мы включили монтирование разделов на этапе загрузки системы, а также подмену внутренней памяти ( /overlay) на 1 раздел на флеш накопителе по его уникальному uuid номеру. Дальше жмем ESC, вводим символы
Что в Vi означают выйти записав изменения и жмем enter. Файл fstab перезаписался. Перезагружаем конфиги fstab:
Наконец-то перегружаем наш роутер
После перезагрузки смотрим команду
и если все прошло как надо вы увидите что-то наподобие
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 1021952 144408 859112 14% /
/dev/root 2304 2304 0 100% /rom
tmpfs 14288 76 14212 1% /tmp
/dev/sda1 1021952 144408 859112 14% /overlay
overlayfs:/overlay 1021952 144408 859112 14% /
tmpfs 512 0 512 0% /dev
Где вы видим, что раздел /dev/sda1 теперь и есть наша дисковая память. То же самое можно проверить зайдя в Luci на вкладку Software и увидеть, что для дальнейших извращений мы теперь готовы:
Таким образом мы расширили дисковую память нашего 4 мб OpenWRT роутера без каких-либо компиляций собственной прошивки и без внешней Linux машины под рукой.
Комментарии
Отдельное спасибо за пропатченный block mount под f2fs собрать сам не мог, и нигде найти тоже. Проверил на моем TP-LINK 3040 с простой стоковой 15.05 отлично монтирует диски в этой фс
1. Установка необходимых пакетов
Для начала нужно установить поддержку usb носителей информации в ядре OpenWrt. Авторизуемся на роутере через SSH и начинаем:
opkg update
opkg install kmod-usb-storage
Автоматом также подтянется kmod-scsi-core.
Также нам необходима поддержка файловой системы для нашей сетевой флешки или диска. Я со времен Chaos Calmer использую f2fs которая была создана для usb и ssd носителей одним инженером из Samsung, но тут кому что больше нравится. Можете хранить в Linux native файловой системе, либо вообще в Fat. Независимо от файловой системы сетевого диска, он будет доступен даже из-под Windows систем.
opkg install kmod-fs-f2fs
Раньше данный пакет был очень легким, теперь же он тянет за собой еще 2 пакета шифрования.
Если у вас нет под рукой Linux машины, то нужно будет отформатировать флешку в нужную для вас файловую систему. Либо поставить пакет инструментов файловой системы для последующего форматирования прямо на роутере. В моем случае, я поставил инструменты для f2fs.
opkg install f2fs-tools
Для автоматического монтирования usb флешки полезно установить пакет block-mount
opkg install block-mount
Ну и конечно, нам нужно приложение, которое сделает наш сетевой диск "доступным" в локальной сети. Это проще всего организовать при помощи Samba.
opkg install samba36-server luci-app-samba
Troubleshooting
Add option force_space in /etc/opkg.conf to allow installation of packets bigger than your /rom partitions free space:
Do not use vfat (FAT/FAT32); it does not work. If you have a FAT preformatted USB drive, you cannot use it for extroot without reformatting. Use e.g. ext4 (install e2fsprogs, then format your FAT formatted USB drive using mkfs.ext4 /dev/sda1 as per the example, also see storage).
On Barrier Breaker, block-mount will create a file /etc/.extroot-uuid on extroot filled with uuid of mtd partition rootfs . At boot time when trying to do extroot, block-mount would try to check the actual uuid with the content of .extroot-uuid . If they did not match, extroot would fail. So if you want to continue use extroot after flashing a new firmwre, /etc/.extroot-uuid needs to be deleted first.
If the partition containing your extroot isn't mounted during boot, but you can mount it without problems from a shell, you should try to increase config 'global' / option delay_root . On my system I had to set it to 15 to get extroot working. Another hint to this being the culprit is having a working swap or other partitions mounted after booting, but not your extroot.
Через Web интерфейс
1. LuCI → System → Software → Configuration
это должно выглядеть примерно так:
2. LuCI → System → Software → Actions → Update lists производит первоначальное обновление списка пакетов на extroot
———–Перевод и обновление статьи продолжается! ———— далее идет старая версия!
5. Adding samba user(s)
To access a samba share with user level access there must be users added to the system by editing /etc/passwd .
Add a line for each required user. Choose a unique user id (the first number in the line) of 1000 or higher that does not exist yet. Set the group identification number (the second number) to '65534' (the same number as the user nobody). Copy the rest.
e.g. to create a user:
user in this example will be called 'newuser'“ (this is the loginname you need to enter, when Windows pops up the authentication dialogue)
keep in mind that the user(s) and group(s) utilized by Samba need to have the proper permissions for their shares, i.e. they need write access in order to write via smb.
For seamless access from Windows Clients use the same username as for your login on your Client. If you use an Microsoft Account to login just use a random username without an @ in the name, “newuser” will work!
regardless the filename (which is like this for historic Linux reasons), the actual user passwords are stored separately and will be added in the next step
For seamless access when using Microsoft Online accounts in Windows 8/10, edit /etc/samba/smb.conf.template and add username map = /etc/samba/username.map:
Then create /etc/samba/username.map which links the Linux User loginname to your Microsoft Account loginname:
Настройка сетевого принтера в Windows 10
Комментарии
Дабы не следить за порядковыми номерами, удобнее давать секциям осмысленные имена:
uci set firewall.PrintServer=rule
- при этом будет создана секция firewall.PrintServer с типом rule (вместо безликой firewall.@rule[n]). Ну а делее - "по тексту":
uci set firewall.PrintServer.name='PrintServer'
uci set firewall.PrintServer.src='*'
uci set firewall.PrintServer.dest_port='9100'
.
OpenWrt ( 2019-2 ) supports two versions of Samba. Samba3 and Samba4. Many of the existing guides are based on Samba3.
Настройка Принт-сервера при помощи веб-интерфейса LuCI
После установки необходимых пакетов, указанных в начале статьи, у нас появится пункт меню Сервисы – p910nd сервер печати. Открываем его и переходим к настройке:
Если бывает, что вас принт-сервер не отвечает после одной печати, можно отключить двунаправленный режим, бывает спасает от забитого порта. Ну и конечно, можно выбрать интерфейс с какого можно будет отправлять вам на печать документы, у меня например он не определен - документы на печать прилетают и из локальной сети, так же от устройств подключенных к Wi-Fi сети. Но для этого нужно открыть порт принтера в межсетевом экране OpenWRT.
1. Mounting storage
see: Setting up storage devices
When done setting up your mount point, verify (e.g. with ls /mnt in the command line) that at least one mount point exists, before continuing.
Настройки межсетевого экрана OpenWRT в uCI для корректной работы Принт-сервера p910nd
uci add firewall rule
uci show firewall
Смотрим порядковый номер правила, которое только что создалось:
У меня допустим это 10. Далее задаем собственно само правило, начнем с названия:
uci set firewall.@rule[10].name='PrintServer'
Потом указываем зз каких интерфейсов чтобы был доступен принтер, * - из любых, lan - только локальная сеть, wwan - только wifi и т.д.
uci set firewall.@rule[10].src='*'
Какой порт открыть для доступа
uci set firewall.@rule[10].dest_port='9100'
uci set firewall.@rule[10].target='ACCEPT'
Внести изменения в конфиги
Перезагрузить конфиги в фаерволл
3. Configuring the samba service: "config samba" section of /etc/config/samba
Usually you will not have to change defaults provided in this section. In some cases, you may want to adapt the “interface” parameter, in case the samba service should listen on different interfaces.
This config section determines values and options relevant to the overall operation of samba. The following table lists all available options, their default value and respectively a short characterization. See smb.conf man page for further details. These are the default settings for the common options:
Name | Type | Required | Default | Option | Description |
---|---|---|---|---|---|
name | string | no | hostname or lede | Name of the Server | |
workgroup | string | no | hostname or lede | Name of the Workgroup | |
description | string | no | Samba on hostname or lede | Description of the Server | |
charset | string | no | UTF-8 | Display charset & unix charset | |
homes | boolean | no | 0 | 0, 1 | Share the user directory |
interface | string | no | loopback lan | Interfaces samba should listen on. |
In the following example, the SMB sharename Sharename is mapped to a connected drive that is mapped to /mnt/sda3.
you may need to adapt “create mask” and “dir mask” in case vFAT/FAT32 or exFAT is used as file system on the external drive. It is recommended to try EXT4 first in case of problems.
Name | Type | Required | Default | Option | Description |
---|---|---|---|---|---|
name | string | yes | (none) | Name of the SMB file share. Will be shown in the filebrowser of the client. | |
path | file path | yes | (none) | The complete path of the directory. path | |
users | string | no | guest account or from global template | the samba-users allowed access to this entry; use smbpasswd to create a user-pwd combination! Several users can be specified, separated by a coma (ex : option users root,nobody ). Translated to valid users | |
read_only | string | no | yes or from global template | no, yes | no allows for read/write, else only read access is granted; (for rw, you also need to mount fs rw!). read only |
guest_ok | string | no | no or from global template | no, yes | Specifies if you need to login via samba-username and password to access this share. guest ok. |
create_mask | integer | no | 0744 or from global template | chmod mask for files created (needs write access). create mask | |
dir_mask | integer | no | 0755 or from global template | chmod mask for directories created (need write access). directory mask. |
Each samba share can be configured at either share level access or user level access.
At share level access all users on the network can access the share, and all files are shared with all users.
By default Samba is configured for user level access (this is also the recommended way).
3. Монтирование Usb флешки
mount /dev/sda1 /mnt
Я смонтировал ее в раздел /mnt, так как больше у меня никаких других накопителей на роутере не будет. Для автоматического монтирования устройства при загрузке роутера добавим его в конфиг fstab при помощи block mount в Luci. Заходим в меню System - Mount Points. Добавляем новую точку монтирования, выбираем диск и вписываем путь к каталогу для монтирования, перегружаем роутер.
Filesystem Size Used Available Use% Mounted on
/dev/root 2.5M 2.5M 0 100% /rom
tmpfs 29.5M 948.0K 28.5M 3% /tmp
/dev/mtdblock3 12.3M 4.8M 7.5M 39% /overlay
overlayfs:/overlay 12.3M 4.8M 7.5M 39% /
tmpfs 512.0K 0 512.0K 0% /dev
/dev/sda1 114.7G 476.0M 112.8G 0% /mnt
Через Web интерфейс
LuCI → System → Mount Points должен быть показан раздел на внешнем USB устройстве подмонтированный как overlay .
Optional config: /etc/samba/smb.conf.template
In addition to the UCI file (/etc/config/samba), modifications can be made to the /etc/samba/smb.conf.template file.
In usual default operation, this configuration can be left untouched.
e.g. to allow users with null password (can authenticate without providing a password), edit /etc/samba/smb.conf.template and add null passwords = yes:
7. Restarting samba
Reload samba by issueing the following command
Настройка Принт-сервера при помощи UCI
Настроить все можно из под встроенной командной оболочки BusyBox – Ash Shell. Актуально для тех, кто борется за размер прошивки и уже давно вырезал LuCI и настраивает все при помощи команд UCI. Сначала заходим по сетевому протоколу SSH на наш роутер при помощи, например, программы PuTTY. Вводим IP роутера, протокол SSH и жмем соединиться. Вводим логин root, пароль и получаем доступ к оболочке. Для начала втыкаем наш принтер в USB порт роутера и смотрим, определился ли он:
dmesg | grep printer
Если все хорошо, в ответ получаем что-нибудь типа этого:
usblp 1-1:1.1: usblp0: USB Bidirectional printer dev 4 if 1 alt proto 2 vid 0x04E8 pid 0x344F
Таким образом OpenWRT видит наш USB принтер и назначило ему устройство usblp0. Далее
uci show p910nd
Получим список конфигов нашего демона принт-сервера, что-то типа такого:
p910nd.@p910nd[0]=p910nd
p910nd.@p910nd[0].device='/dev/usb/lp0'
p910nd.@p910nd[0].port='0'
p910nd.@p910nd[0].bidirectional='1'
p910nd.@p910nd[0].enabled='0'
4й параметр bidirectional указывает на то, что принтер может обмениваться информацией с инициатором печати, а 5й параметр enabled собственно и включает всю нашу сборную солянку в работу. Таким образом, нам надо было только изменить последний параметр, а сделать это можно следующей командой:
uci set p910nd.@p910nd[0].enabled=1
и подтвердить изменение в конфигах
после чего запустить наш принт-сервер:
Ну и добавить его в автозагрузку:
Дальше открываем любой браузер, в адресной строке вводим 192.168.1.1:9100 и наблюдаем как Samsung SCX – 3400 моргает нам зеленым глазком состояния. Перегружаем роутер чтобы закрепить результат:
2. Настройка rootfs_data
Подключитесь через ssh к устройству.
Сконфигурируйте /etc/config/fstab для монтирования rootfs_data в другой каталог на тот случай, если вам понадобится получить доступ к исходному оверлею root для изменения настроек extroot:
Или вы можете определить раздел rootfs_data вручную:
Каталог /rwm будет содержать исходный корневой overlay, который используется в качестве основного корневого overlay до тех пор, пока extroot не будет поднят и запущен. Позже вы можете отредактировать /rwm/upper/etc/config/fstab , чтобы изменить вашу конфигурацию extroot (или временно отключить ее), если вам это когда-либо понадобится.
Проверка
Настройки межсетевого экрана OpenWRT в LuCI для корректной работы Принт-сервера p910nd
Переходим в меню Сеть -> Межсетевой экран, вкладка Правила траффика и создаем правило:
Таким вот макаром отроем порт 9100 принтера всем из любой сети, кто захочет им воспользоваться. Незабываем сохраняться и применять правила межсетевого экрана.
6. Adding a password for each samba user
samba does not rely on passwords stored in /etc/shadows. By adding the following, you will only enable users for SMB file share access. With these passwords, your users will not get SSH or LuCi access to your LEDE system (unless you give them another additional password in the file /etc/shadows)
For seamless access from Windows Clients, preferrably use the same password as also used for your login on your Client. (This also applies to Microsoft Online Accounts)
5. Подключение сетевого диска на примере Windows 10.
Этот компьютер - Компьютер - Подключить сетевой диск. Выбираем букву для диска, вписываем адрес хоста и нашей сетевой папки, в моем примере это \\openwrt\UsbStorage
Жмем готово и пользуемся.
Бывает, что при попытки записать что-то на диск появляется ошибка прав доступа:
Тогда вам нужно задать права на монтируемую папку. Разрешим все действия для всех пользователей:
Устанавливаем необходимые пакеты
opkg update
opkg install kmod-usb-printer
Пакет kmod-usb-printer собственно обеспечивает нам поддержку самого USB принтера в OpenWRT.
opkg install p910nd
А пакет p910nd представляет собой небольшой демон сервера печати, который копирует любую информацию, которая поступает через указанный порт на принтер, работая в фоновом режиме.
Если будите настраивать все используя веб-интерфейс LuCI, то нужно еще установить:
opkg install luci-app-p910nd
Ну а если еще ваша душа желает, чтобы все было в настройках по-русски:
opkg install luci-i18n-p910nd-ru
Если ваш OpenWRT роутер жалуется, что у вас не хватает дисковой памяти, то можете ее расширить имея под рукой флешку и немного времени.
Инструкции
Samba share config when using "share level" access
To set share level access
Decide for your self, if you want to set option 'read_only' 'yes ' to 'no ', to enable unrestricted anonymous access including write permission.
Читайте также: