- Ubuntu в сети Windows
- Пользователи
- Работа в сети
- Принтер и МФУ
- Доступ к сетевым приложениям с помощью WSL
- Доступ к сетевым приложениям Linux из Windows (localhost)
- Доступ к сетевым приложениям Windows из Linux (IP-адрес основной системы)
- Подключение через удаленные IP-адреса
- Доступ к дистрибутиву WSL 2 из локальной сети (LAN)
- Доступ по протоколу IPv6
Ubuntu в сети Windows
В разных компаниях чаще всего компьютерные сети построены с использованием серверных версий Windows. Работать в таких сетях на компьютере с Ubuntu вполне можно. В этой статье полезная информация, описание настроек.
В статью внесены правки, всё сказанное актуально для Ubuntu версии 20.04.
Пользователи
При таком раскладе будет как минимум два вида пользователей:
- Пользователи непосредственно у вас на компьютере. Вы создаёте первого пользователя, когда устанавливаете Ubuntu. Под ним вы работаете у себя на компьютере.
- Пользователи сети Windows. Для вас такого пользователя заводит системный администратор компании. Используя данные этого пользователя вы получаете доступ к сети компании. Уровень доступа этого пользователя в сети определяется администратором. Кроме каких-то общих сетевых ресурсов у вас скорее всего будет личный каталог и т.д.
Пользователь сети Windows заводится для определенного домена. Например, WORKGROUP или что-то более осмысленное. Название домена тоже необходимо будет указывать при доступе к сетевым ресурсам. В больших компаниях может использоваться несколько доменов, тогда и пользователей второго вида может быть несколько.
Работа в сети
Полное правильное название сетей Windows – это «Microsoft Windows Network», в русском языке – «Сети Microsoft Windows». Работа с такими сетями осуществляется с использованием протокола SMB (Server Message Block). Ранее протокол имел название CIFS (Common Internet File System). С его помощью можно получить удалённый доступ не только к файлам, но и принтерам.
Файловый менеджер Ubuntu под названием «Файлы» довольно функционален. Он умеет работать по протоколу SMB. Для открытия сетевого ресурса нажмите «Другие места» и внизу вы увидите поле, куда нужно ввести адрес для подключения, можно ввести например:
В случае необходимости у вас будут запрошены данные для доступа — имя пользователя, пароль, домен.
Обычно в компаниях организованы какие-то общие хранилища, куда имеют доступ пользователи и где находится личный каталог. Такие хранилища удобно монтировать сразу при запуске Ubuntu. Тогда во всяких файловых менеджерах, вроде «Файлы», Double Commander и т.д. вы будете сразу видеть эти ресурсы. С ними удобно будет работать. Также, как и с обычным каталогами на локальном диске. Не надо будет вводить пароль и прочее.
Монтировать сетевые ресурсы лучше через файл /etc/fstab . Здесь всё это можно настроить один раз и забыть. Работает очень стабильно. Я у себя на рабочем компьютере последний раз открывал этот файл более года назад.
Пример подключения сетевого каталога:
//company-diskstation/dir /mnt/company/diskstation cifs credentials=/home/kornev/.smbuser,uid=1000 0 0
- //company-diskstation/dir — сетевой ресурс SMB вместе с подкаталогом.
- /mnt/company/diskstation — каталог на локальном диске, куда он будет смонтирован.
- /home/kornev/.smbuser — файл, в котором записаны данные для доступа (см. ниже).
- uid=1000 — id пользователя у вас на компьютере (см. ниже).
Файл /home/kornev/.smbuser не является обязательным. Это для удобства. Чтобы не писать каждый раз одни и те же данные. Ведь подобных строчек для подключения сетевых ресурсов может быть много. А еще этот же файл можно будет использовать из разных скриптов, которые тоже подключаются к SMB-ресурсам. Понадобится потом изменить данные доступа, это придется сделать только один раз, в этом файле.
Файл может иметь любое имя и расположение, внутри:
username=имя_пользователя_windows password=пароль_пользователя_windows domain=WORKGROUP
Что касается id пользователя. Это необходимо, чтобы сетевой ресурс монтировался в нормальном режиме, чтобы мы могли с ним полноценно работать. Без этого у меня получался режим «только чтение». Есть ещё gid=1000 – параметр id группы, который тоже можно добавить. Но у меня и без него все работало.
Узнать uid и gid для пользователя kornev можно командами:
Пример скрипта script.sh , с подключением и отключением ресурса SMB:
#!/bin/bash # Переменные dir_local=/mnt/work_dir dir_smb=//remote/dir/in/windows/network # Подключение /sbin/mount.cifs $dir_smb $dir_local -o credentials=/home/kornev/.smbuser,uid=1000 0 0 # Запуск некой обработки # Отключение umount $dir_local
Принтер и МФУ
С сетевыми принтерами всё очень просто. Доступные в сети принтеры у вас сами появятся в настройках. Необходимо только выбрать, какой из них вы хотите использовать по умолчанию.
У меня компьютер работает без выключения днями, иногда неделями. При этом часто бывает, что я отправляю на печать, но печать не идёт. В активных заданиях видно, что печать документов приостановлена. Иногда видно сообщение «No suitable destination host found by cups-browsed». Не знаю, связанно ли это как-то с проблемой.
Для быстрого решения можно перезапустить компьютер и тогда печать сразу будет работать. Если не торопиться, то можно подождать, через некоторое время документы все же распечатаются. Ещё одно быстрое решение:
sudo systemctl stop cups-browsed sudo systemctl start cups-browsed
sudo systemctl restart cups-browsed
Если принтер — это МФУ и требуется на нём сканировать, то необходимо выполнить дополнительные настройки. Суть в том, что после сканирования готовые документы должны куда-то складываться. Обычно это настраивается через веб-интерфейс МФУ. Куда складывать?
- Это может быть каталог вашего пользователя в сети. Тогда вам ничего делать не нужно, настройка такой работы – это забота администратора. Вы только можете смонтировать свой каталог, как было описано выше, чтобы вам проще было работать с отсканированными документами.
- Второй вариант – это настроить у себя на компьютере каталог с доступом по SMB или FTP. Мне больше нравится вариант с SMB. Не использую FTP нигде очень давно.
Устанавливаем Samba, если ещё не установлена:
Лучше создать нового отдельного пользователя специально для этих нужд, данные которого потом сообщить администратору. Он внесёт их в МФУ.
Назовём этого пользователя share-user :
sudo useradd -d /dev/null share-user
Задаём пароль этому пользователю, иначе он будет недоступен:
Пользователя и пароль также внесём в базу данных Samba:
sudo smbpasswd -a share-user
Каталог у себя на компьютере, например /mnt/company/kornev_share , создавайте от имени и группы этого пользователя.
Пример конфига /etc/samba/smb.conf :
[global] security = user passdb backend = tdbsam workgroup = WORKGROUP server min protocol = NT1 server string = MyPC Samba [kornev_share] path = /mnt/company/kornev_share valid users = @share-user force group = share-user create mask = 0771 directory mask = 0771 writable = yes
Здесь стоит обратить внимание на параметр server min protocol = NT1 . Дело в том, что есть разные версии протокола SMB. Часто бывает, что даже не сильно старые МФУ не поддерживают новые версии протокола. Данным параметром мы разрешаем подключение с использованием SMB v1. Попробуйте. Если без этого параметра у вас всё будет работать, то лучше не ставить его.
Перезапуск Samba для применения изменений:
sudo service smbd restart
Если администратор со свой стороны все настроил, то можно пользоваться:
Доступ к сетевым приложениям с помощью WSL
При работе с сетевыми приложениями (будь то получение доступа к сетевому приложению Linux из приложения Windows или получение доступа к сетевому приложению Windows из приложения Linux) необходимо учитывать несколько моментов. Вам может потребоваться определить IP-адрес используемой виртуальной машины, который будет отличаться от IP-адреса локального физического компьютера.
Доступ к сетевым приложениям Linux из Windows (localhost)
Если вы создаете сетевое приложение (например, приложение, работающее на NodeJS или SQL Server) в дистрибутиве Linux, вы можете получить к нему доступ из приложения Windows (например, используя Microsoft Edge или Chrome) с помощью localhost (как обычно это и происходит).
Доступ к сетевым приложениям Windows из Linux (IP-адрес основной системы)
Если вы хотите получить доступ к сетевому приложению, работающему в Windows (например, к приложению, работающему на NodeJS или SQL Server) из дистрибутива Linux (напр., Ubuntu), необходимо использовать IP-адрес основной системы. Хотя это происходит и нечасто, для этого можно выполнить следующие действия.
- Получите IP-адрес основной системы, выполнив следующую команду из дистрибутива Linux: cat /etc/resolv.conf
- Скопируйте IP-адрес в строке, начинающейся с nameserver .
- Подключитесь к любому серверу Windows, используя скопированный IP-адрес.
На изображении ниже показан пример подключения к серверу Node.js под управлением Windows через cURL.
Подключение через удаленные IP-адреса
При использовании удаленных IP-адресов для подключения к приложениям они будут рассматриваться как подключения из локальной сети (LAN). Это означает, что необходимо убедиться, что приложение может принимать подключения по локальной сети.
Например, может потребоваться привязать приложение к 0.0.0.0 вместо 127.0.0.1 . В примере приложения Python, использующего Flask, это можно сделать с помощью команды app.run(host=’0.0.0.0′) . При внесении этих изменений не забывайте о безопасности, так как это позволит устанавливать подключения из вашей локальной сети.
Доступ к дистрибутиву WSL 2 из локальной сети (LAN)
При использовании дистрибутива WSL 1, если к компьютеру можно получить доступ из локальной сети, то приложения, работающие в WSL, могут быть также доступны в локальной сети.
Это нетипичная ситуация в WSL 2. В WSL 2 имеется виртуализированный адаптер Ethernet с собственным уникальным IP-адресом. В настоящее время для включения этого рабочего процесса необходимо выполнить те же действия, что и для обычной виртуальной машины. (Мы ищем способы улучшить это взаимодействие.)
Ниже приведен пример команды Windows для добавления прокси-сервера порта, который прослушивает порт 4000 на узле и подключает его к порту 4000 к виртуальной машине WSL 2 с IP-адресом 192.168.101.100.
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100
Доступ по протоколу IPv6
В настоящее время дистрибутивы WSL 2 не могут обращаться к IPv6-адресам. Мы работаем над добавлением этой возможности.