Разворачивание тестовой сетевой инфраструктуры предприятия.
Тестовый стенд локальной сети и входящих в неё хостов.
Тестовая сеть состоит из компьютера на которой установлен гипервизор VirtualBox, виртуальных машин "gate", "server", "client1" на основе операционной системы Debian и виртуальной машины client2 на основе операционной системы Microsoft Windows 10.
Как показала практика для моделирования этого стенда хватает процессора на 4 ядра и оперативной памяти от 6 гигабайт если исключить из него машину на windows 10, машинам "gate" и "server" можно выделить по одному ядру и по 1024 гб оперативной памяти, виртуальной машине "client1" два ядра и 2048 гб оперативной памяти.
Для моделирования сети понадобится установленная ос debian на виртуальную машину(пример установки здесь).
Внутренняя виртуальная сеть имеет доступ в глобальную сеть через виртуальную машину "gate", которая выполняет роль маршрутизатора. Домашняя локальная сеть 192.168.1.0 будет считаться внешней сетью для машин "gate", "server", "client1", "client2".
Router — домашний маршрутизатор-router предоставляющий доступ в глобальную сеть, с локальной сетью 192.168.1.0/24 и ip адресом шлюза LAN 192.168.1.1/24.
HostSystemVirtualBox — компьютер на который установлен гипервизор VirtualBox, у меня с статическим ip 192.168.1.3 который можно не настраивать, а оставить ip динамическим (Пример установки VirtualBox на компьютер).
gate — виртуальная машина выполняющая роли шлюза, с технологией NAT, между внутренней сетью 172.16.1.0/24 и внешними сетями, dns сервера, dhcp сервера.
server — виртуальная машина выполняющая роль сервера предприятия с статичным ip адресом 172.16.1.2/24, предназначается для установки и настройки сервисов, таких как файловый сервер, почтовый сервер, веб сервер и так далее.
client1 — виртуальная машина выполняющая роль компьютера "для сотрудников" с установленным графическим окружением и динамическим ip адресом.
client2 — виртуальная машина выполняющая роль компьютера "для сотрудников" с установленной операционной системой windows 10 и динамическим ip адресом.
Устанавливаем и настраиваем гипервизор Virtualbox, устанавливаем linux debian с минимальными ресурсами, без графического окружения(галку на какое либо графическое окружение при установке debian не ставим) и с установленным сервером ssh как в примере здесь.
Кому лень, или нет времени, настраивать виртуальную машину вручную, здесь скрипт по автоматическому конфигурированию виртуальной машины "gate".
Создание и настройка виртуальной машины "gate".
Выделяем выключенную виртуальную машину левой кнопкой мыши, далее кликаем правой кнопкой мыши по выделенной машине и в появившемся меню выбираем пункт "клонировать..."
В появившемся окошке прописываем:
Имя: gate_corp1 (Можно прописать любое, это имя относится только к визуальному отображению виртуальной машины в списке virtualbox).
Путь: можно оставить по умолчанию или перенести в отдельную папку или жёсткий диск.
Политика MAC-адреса: выбираем пункт "Сгенерировать новые MAC-адреса всех сетевых адаптеров", тем самым мы сгенерируем MAC адреса на всех сетевых адаптерах и исключим возможность ошибок сети. Нажимаем кнопку "Далее".
Следующим шагом выбираем тип клонирования, тут стоит так как нас устраивает, поэтому просто жмём кнопку "Готово".
Запускается процесс клонирования виртуальной машины, остаётся дождаться его завершения.
После завершения клонирования, виртуальная машина с именем gate_corp1 должна появиться в списке виртуальных машин VirtualBox.
Выбираем нашу машину из списка левой кнопкой мыши и нажимаем кнопку "Настроить".
В открывшейся вкладке выбираем пункт меню "Сеть" ==> "Адаптер 1". По умолчанию он может быть включен, проверяем галку в пункте "Включить сетевой адаптер", она должна стоять.
По умолчанию имя этого сетевого адаптера в debian будет enp0s3, что соответствует на схеме внутренней сети.
Поэтому далее в пункте "Тип подключения" выбираем "Внутренняя сеть".
Имя: можно придумать любое, это виртуальная сеть куда будут подключаться остальные хосты из этой сети, я назвал corp1.
Далее проверить наличие галки в пункте "Подключить Кабель".
Так как это пограничное устройство между сетями, необходимо включить второй сетевой адаптер.
Переходим во вкладку "Адаптер 2", ставим галку в пункте "Включить сетевой адаптер", по умолчанию в virtualbox адаптер 2 именуется как enp0s8, по схеме он "смотрит" во внешнюю сеть, поэтому в типе подключения ставим "Сетевой мост", внизу проверяем наличие галки в пункте "Подключить кабель" и нажимаем кнопку "ОК".
"Адаптеры 3 и 4" отключены.
Предварительные настройки завершены, нажимаем кнопку "Запустить".
После загрузки операционной системы вводим логин и пароль пользователя указанного при установке о.с. У меня это:
log: ivan
pass: linux
Если левой кнопкой мыши нажать внутрь окна, то может захватиться курсор авто-захватом виртуальной машины, выйти от туда как правило правый Ctrl.
Посмотрим присутствие сетевых интерфейсов командой ip a .
Сетевые интерфейсы enp0s3 и enp0s8 присутствуют.
В данном cлучае внешний сетевой интерфейс( enp0s8 )по каким-то причинам не получил динамический ip от роутера по протоколу dhcp.Если остро необходимо получить ip в данный момент, то можно попытаться сделать это вручную командой dhclient -v enp0s8 или просто dhclient -v, чтобы отказаться от назначенного ip адреса dhclient -r, так как подключение в данный момент не особо и нужно идём дальше.
Далее открываем файл конфигурации сети редактором текста, я буду использовать vim.tiny в последствии просто vim, так-же можно использовать nano, так как vim.tiny и nano установлены уже из коробки.
vim.tiny /etc/network/interfaces
нажимаем "i" и прописываем новые настройки сетевых интерфейсов:
auto enp0s8
iface enp0s8 inet static
address 192.168.1.31/24
gateway 192.168.1.1
auto enp0s3
iface enp0s3 inet static
address 172.16.1.1/24
Если вы в vim.tiny нажимаем Esc потом : wq и Enter.
При этом надо закоментировать прежние настройки сетевых интерфейсов, если они есть, поставив перед каждой строкой # .
Не трогая loopback интерфейс.
Перезапускаем сетевой сервис.
sudo systemctl restart networking.service
Проверяем сетевые настройки командой ip a.
Надо сказать что ip адреса для виртуальных тестовых машин можно выбирать из вашей сети какие нравятся, я выбрал этот ip 192.16.1.31, так как у меня домашний роутер раздаёт динамические ip начиная с адреса 192.168.1.100
Так-же можно взять любой не занятый ip из диапазона для данной подсети 192.168.1.2 — 192.168.1.254 (192.168.1.1 у меня занят роутером).
Далее проверим статус сервиса ssh, он должен быть установлен и работать.
systemctl status ssh
Теперь переходим к подключению по ssh через putty(установка putty).
В настройках подключения вводим ip адрес внешнего адаптера виртуальной машины gate: 192.168.1.31
Далее можно сохранить настройки подключения и открываем сессию нажав на кнопку "Open".
Как настроить палитру в putty.
Вводим логин и пароль и нажимаем Enter.
Станем супер пользователем root на продолжительное время (на рабочих серверах лучше так не делать).Вводим команду:
sudo -i
Обновляем систему командой
root@debian12:~# apt update && apt upgrade
Для своего удобства я установлю текстовый редактор vim и буду работать в нём.
Что-бы скопировать текст и вставить в vim-e(Ctrl+c Ctrl+v не работает в виме) копируете текст привычным образом, или Ctrl+Insert, в vim-e вставляем Shift+Insert.
root@debian12:~# apt install vim -y
Теперь поменяем имя хоста, открываем файл настройки на редактирование, стираем всё что там есть и прописываем туда полное доменное имя gate.corp1.un
где:
gate — имя хоста
corp1 — вымышленное имя домена второго уровня в который входит хост "gate"(можно придумать какое вам нравиться, для тестов я придумал corp1, что значит корпорация1, если мне понадобится повторить инфраструктуру тестового стенда и чтобы стенды между собой взаимодействовали, для простоты, следующий стенд будет называться corp2 и т.д. , это необходимо для корректной работы локальных dns серверов).
un — вымышленное имя домена первого уровня(так-же можно придумать названия своего домена, здесь домен un, что значит unix).
root@debian12:~# vim /etc/hostname
И прописываем туда полное доменное имя хоста, для этого в vim нажать i.
gate.corp1.un
Записываем файл и выходим из редактора, для этого в vim нажимаем Esc :wq и Enter.
Далее редактируем файл hosts, когда-то этот файл использовался для сопоставления имён хостов к ip адресам(предтеча dns).
root@debian12:~# vim /etc/hosts
Приводим его к такому виду:
Далее прописываем ip адрес dns сервера в файле конфигурации resolv.conf. На данный момент настрою resolv на dns сервер провайдера, это ip моего роутера, так-же можно использовать ns сервера от google, это 8.8.8.8 или 8.8.4.4 и т.д. В последствии у нас будет собственный локальный dns сервер и мы переключим resolv на себя. Открываем файл на редактирование и приводим его к ниже следующему состоянию.
root@debian12:~# vim /etc/resolv.conf
search corp1.un
nameserver 192.168.1.1
Перезагружаем систему командой reboot или init 6.
После повторного подключения видим, что имя хоста поменялось на нужное.
Обновляем систему и устанавливаем dns сервер bind9
root@gate:~# apt update
root@gate:~# apt install bind9 -y
Открываем на редактирование конфигурационный файл named.conf.options и прописываем туда следующие настройки:
root@gate:~# vim /etc/bind/named.conf.options
// Раскомментировать блок forwarders и прописать туда имя dns сервера провайдера(у меня прописан ip адрес шлюза, домашний роутер), либо 8.8.8.8
forwarders {
192.168.1.1;
};
//Вписать строку, тем самым включив рекурсию из данных сетей, по умолчанию рекурсия включена только из внутренней //сети 172.16.1.0/24 и localhost
allow-recursion { 192.168.1/24; 172.16.1/24; 127/8; };
//Отключить проверку валидности dns серверов, поменяв опцию с yes на no
dnssec-validation no;
//Отключить resolv ipv6 поменяв опцию any на :: (два двоеточия, что означает ноль)
listen-on-v6 { ::; };
Следующим шагом создаём файл зоны для внутренней сети. То есть нам надо сделать так что-бы на запросы из внутренней и внешней сети наш сервер отвечал по разному, например на запрос о адресе www.corp1.un для хоста client1 он выдавал адрес 172.16.1.2, а на точно такой-же запрос из внешней сети, ответ должен быть 192.168.1.31, (свой внешний ip), потому как о адресе 172.16.1.2 "ничего не знают" во внешней сети и связаться с веб сервером не смогут.
Создаем новый файл с именем corp1.un и записываем туда строки настроек, этот файл зоны для внутренних запросов.
root@gate:~# vim /etc/bind/corp1.un
$TTL 3h
@ IN SOA ns admin 2024012801 1d 12h 1w 3h
NS ns
A 172.16.1.2
MX 9 mx
ns IN A 172.16.1.1
gate IN A 172.16.1.1
server IN A 172.16.1.2
mx IN A 172.16.1.2
www IN A 172.16.1.2
Разберёмся в внесённых записях dns зоны.
$TTL 3h – сколько данный сервер рекомендует хранить полученные от него ответы другим серверам и клиентам, измеряется в часах
@ IN SOA ns admin 2024012801 1d 12h 1w 3h
@ – знак в начале записи означает, что далее к остальным записям нужно подставлять имя файла зоны, а как мы помним имя файла у нас corp1.un
IN – означает что эта запись из пространства INTERNET (на заре dns думали, что будет много сетевых технологий и им возможно понадобятся отдельные пространства имён, поэтому заранее разделили записи на разные пространства имён).
SOA – данная запись отвечает на запрос о домене и технической информации которая прописана справа
ns – сервер отвечающей за домен
admin – ответственный(владелец) данного сервера
2024012801 – серийный номер изменения записей в файле зоны, важен для slave dns серверов, так-как подчинённые dns сервера сверяют серийные номера перед скачиванием файла зоны и если они совпадают, то файл зоны не скачивается и соответственно получается рассинхронизация записей зоны, у нас вторичного сервера не будет поэтому это не так важно, но вне зависимости от этого хорошим тоном прописывать серийный номер таким порядком: 2024 – год изменения; 01 – месяц изменения; 28 – число дня изменения; 01 – порядковый номер изменения в этот день, хотя вместо такой длинной записи можно поставить цифру 1 и потом увеличивать её по мере изменения в файле зоны.
1d 12h 1w 3h – далее идёт техническая информация для подчинённых серверов где: 1d – c какой переодичностью slave сервер будет обращаться к master за обновлением(один раз в сутки), 12h – если мастер не доступен, то slave попытается связаться с master через 12 часов, 1w – если мастер не будет доступен,то через сколько удалить информацию о зоне из кэша(одна неделя), 3h – время жизни негативного ответа(три часа).
NS ns – эта запись отвечает какой сервер обслуживает данную зону домена
A 172.16.1.2 – запись сопоставления имени corp1.un и ip адреса, если одно имя сопоставляется с несколькими ip то и записей должно быть несколько, так как у нас нет каких либо других серверов пропишем сюда ip адрес нашего сервера.
MX 9 mx – MX означает что эта запись для почтового сервера, 9 означает приоритет, если серверов несколько(но если даже сервер один, приоритет всё равно надо прописывать, любой начиная с 1), mx имя хоста почтового сервера.
ns IN A 172.16.1.1 – запись сопоставления имени и ip адреса dns сервера
gate IN A 172.16.1.1 – запись сопоставления ip адреса хоста с именем gate
server IN A 172.16.1.2 – запись сопоставления ip адреса хоста с именем server
mx IN A 172.16.1.2 – запись сопоставления ip адреса хоста с именем mx, заготовка для почтового сервера(хоста с таким именем и не будет, но все почтовые запросы пойдут на хост с именем server, где будет установлен почтовый сервер)
www IN A 172.16.1.2 – запись сопоставления ip адреса хоста с именем www, так-же заготовка как и в строке выше, для веб сервера.
Сохраняем файл и выходим из редактора.
Теперь необходимо создать файл зоны для внешних запросов(которые будут прилетать из сети 192.168.1.0/24).
Для этого создаём ещё один новый файл с названием corp1.un.out и делаем туда похожие записи:
root@gate:~# vim /etc/bind/corp1.un.out
$TTL 3h
@ IN SOA ns admin 2024012801 1d 12h 1w 3h
NS ns
A 192.168.1.31
MX 9 mx
ns IN A 192.168.1.31
mx IN A 192.168.1.31
www CNAME ns
Принцип записей остался прежний, что и в ранее созданном файле, поменялись только ip адреса зоны, тут мы прописали внешний ip адрес шлюза и на все запросы "gate" будет выдавать свой-же внешний ip(чуть позже мы пробросим порты на хосты внутренней сети и "gate" уже будет "понимать" какой порт на какой хост маршрутизировать.
Появилась только одна запись сделанная по новому www CNAME ns она указывает, что хост www это тот-же хост что и ns, а ns имеет адрес 192.168.1.31, это ещё один вариант записей, через канонические имена и псевдонимы(aliases).
Сохраняем файл и выходим из редактора.
Далее в настройках dns сервера подключаем файл зоны , созданный для внутренней сети:
root@gate:~# vim /etc/bind/named.conf.local
zone "corp1.un" {
type master;
file "/etc/bind/corp1.un";
};
zone "corp1.un" – с фигурными скобками, говорит о том, что это блок с настройками зоны и именем corp1.un.
type master; – эта настройка говорит о том, что этот сервер является первичным(основным).
file "/etc/bind/corp1.un"; – тут прописан полный путь к файлу и название файла с зоной.
Идём далее и "разграничиваем" сети на внешние и внутренние и тут-же подключаем файл зоны созданный для внешних сетей.
Открываем на редактирование файл named.conf и приводим его в такой вид:
root@gate:~# vim /etc/bind/named.conf
include "/etc/bind/named.conf.options";
view "inside" {
match-clients {
172.16.1/24;
127/8;
};
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
};
view "outside" {
zone "corp1.un" {
type master;
file "/etc/bind/corp1.un.out";
};
};
Разберёмся в сделанных настройках.
include "/etc/bind/named.conf.options"; – подключение файла настроек к серверу, он подключен по умолчанию, его не трогаем.
view "inside" с фигурными скобками – означает что это блок настроек с именем inside.
match-clients с фигурными скобками – внутри них перечисляем сети относящиеся к внутренним сетям.
172.16.1/24; – все адреса начиная с 172.16.1.
127/8; – все сети с адресом начинающимся с 127(localhost).
После закрывающей фигурной скобки с точкой запятой идут подключение дефолтных файлов настроек(а как мы помним в файле named.conf.local подключен файл нашей зоны для внутренних сетей corp1.un.
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
Ниже находится блок с именем outside, в нём мы прописываем зону и путь к файлу зоны для внешних сетей.
Теперь надо, чтобы сервер "перечитал" настройки и применил их.
Перечитать файлы с зонами:
root@gate:~# named-checkconf -z
Обратим внимание, что среди прочих дефолтных зон загрузились наши зоны с серийными номерами и нет сообщений об каких либо ошибках.
Далее применяем настройки.
root@gate:~# rndc reload
Переходим к тестированию работы dns сервера.
Посмотрим ответ на запрос о записи типа A (адрес) для домена corp1.un, и запрос направим на ip адрес 192.168.1.31
root@gate:~# nslookup -q=A corp1.un 192.168.1.31
Так как мы послали запрос на внешний ip адрес, то и ответ получили о внешнем ip адресе шлюза, то что и настраивали ранее в файлах зоны.
Запрос ушёл на адрес 192.168.1.31 и ответ пришёл с адреса 192.168.1.31 53-го порта
Это уже хорошо, дальше проверяем ответы с внутренней сети 172.16.1.0 послав запрос на внутренний адрес шлюза 172.16.1.1
root@gate:~# nslookup -q=A corp1.un 172.16.1.1
И проверим ответ с интерфейса localhost послав запрос на ip адрес 127.0.0.1, а как помним все сети начинающиеся с 127, у нас относятся к внутренним сетям.
root@gate:~# nslookup -q=A corp1.un 127.0.0.1
Отлично, логика работы сервера правильная, теперь остаётся перевести resolving виртуальной машины "gate" на себя.
Для этого открываем на редактирование уже знакомый файл resolv.conf и вместо ip адреса роутера прописываем туда локальный ip адрес: 127.0.0.1
root@gate:~# vim /etc/resolv.conf
Сохраняем и выходим из редактора.
Проверяем ответ без указания ip адреса dns сервера:
root@gate:~# nslookup -q=A corp1.un
Далее нужно проверить отвечает-ли наш dns сервер на запросы с других компьютеров.
Для этого открываем на любом домашнем компьютере под управлением операционной системы windows, находящимся в одной локальной сети что и машина "gate", командную строку, я открою её на том компьютере где установлен virtualbox.
В поиске пишем cmd и нажимаем на появившейся значок с именем "Командная строка".
Далее прописываем команду как на машине с linux и не забываем указать внешний ip адрес виртуальной машины "gate":
nslookup -q=A corp1.un 192.168.1.31
Подробнее про настройку dns серверов здесь и здесь.
Теперь протестируем ответы и на другие запросы типа A.
Запрос на А запись хоста ns (name server) сервера:
nslookup -q=A ns.corp1.un 192.168.1.31
Запрос на А запись веб сервера:
nslookup -q=A www.corp1.un 192.168.1.31
Запрос на A запись почтового сервера mx:
nslookup -q=A mx.corp1.un 192.168.1.31
Для выдачи динамических ip адресов во внутренней сети 172.16.1.0, установим и настроим dhcp сервер.
Обновим список установочных пакетов репозитория и установим isc-dhcp-server.
root@gate:~# apt update && apt install isc-dhcp-server -y
Сервер установится но не сможет запустится автоматически из за неправильных настроек по умолчанию, они и не могут быть правильные, так-как его необходимо настроить конкретно под наши сети и сетевые интерфейсы.
root@gate:~# systemctl status isc-dhcp-server.service
Выход из отчёта "q".
Если посмотреть логи, то будет понятна причина ошибки, а именно не настроены сетевые интерфейсы и подсети для работы.
В debian 11 и ниже посмотреть ошибку в логах можно с помощью команды: grep dhcp /var/log/syslog
В данном случае используется debian 12, по умолчанию система логирования syslog не установлена и считается устаревшей, вместо неё используется systemd-journald, посмотреть ошибку можно командой:
root@gate:~# journalctl --unit isc-dhcp-server.service
Выход из журнала так-же кнопкой "q".
Приступим к настройке сервера.
Открываем файл конфигурации на редактирование и прописываем туда следующие настройки:
в строку INTERFACESv4="" для ip версии 4 вписываем сетевой интерфейс внутренней сети, по схеме он имеет имя enp0s3,
а ip версии 6 у нас использоваться не будет, поэтому закомментируем эту строку поставив знак # в начале.
root@gate:~# vim /etc/default/isc-dhcp-server
INTERFACESv4="enp0s3"
#INTERFACESv6=""
Сохраним оригинальный конфигурационный файл dhcpd.conf в текущий каталог и удалим его содержимое в ветке /etc/dhcp/ , так как большая часть строк там закомментирована и используются в качестве примера, они нам не понадобятся.
root@gate:~# cp /etc/dhcp/dhcpd.conf .
root@gate:~# :> /etc/dhcp/dhcpd.conf
Далее вносим в конфигурационный файл необходимые записи настроек:
root@gate:~# vim /etc/dhcp/dhcpd.conf
ddns-update-style none;
log-facility local7;
authoritative;
default-lease-time 600;
max-lease-time 7200;
option domain-name "corp1.un";
option domain-name-servers 172.16.1.1;
shared-network LAN1 {
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.101 172.16.1.254;
option routers 172.16.1.1;
}
}
Сохраняем и выходим.
Подробно не будем расписывать каждую строку настроек, они пояснены здесь и здесь.
Коротко скажу о том, что мы выделили под выдачу динамических ip, адреса с 172.16.1.101 по 172.16.1.254, сервером dns и шлюзом по умолчанию 172.16.1.1, что является ip внутреннего сетевого интерфейса виртуальной машины "gate".
Проверяем правильность синтаксиса внесённых записей:
root@gate:~# dhcpd -t
Запускаем сервис isc-dhcpd-server и смотрим статус его работы:
root@gate:~# systemctl start isc-dhcp-server
root@gate:~# systemctl status isc-dhcp-server
Выход из журнала "q".
На данном этапе настройка dhcp сервера завершена, протестируем его работу немного позже, так-как у нас во внутренней сети нет ещё ни одной виртуальной машины.
Теперь необходимо включить маршрутизацию пакетов с технологией NAT, для трафика из внутренней сети во внешние и наоборот.
Для этого включаем forward в модуле ядра:
Находим строку в файле конфигурации sysctl.conf, #net.ipv4.ip_forward=1 и раскомментируем её убрав знак # в начале строки.
root@gate:~# vim /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
Сохраняем настройки и выходим.
root@gate:~# sysctl -f
Следующим шагом установим вспомогательные утилиты для создания правил маршрутизации.
root@gate:~# apt update && apt install iptables iptables-persistent -y
iptables – используется для создания правил.
iptables-persistent – используется для автоматического применения правил после перезагрузки системы.
На вопросы о сохранении правил, при установке этих утилит, можно нажимать Enter(по умолчанию), никаких настроек у нас всё равно пока нет.
Добавляем первое правило маршрутизации в таблицу NAT:
root@gate:~# iptables -t nat -A POSTROUTING -o enp0s8 -s 172.16.1.0/24 -j MASQUERADE
iptables -t nat – добавить правило для пакетов, в таблицу nat
-A POSTROUTING – в конец цепочки POSTROUTING
-o enp0s8 – с выходным сетевым интерфейсом enp0s8
-s 172.16.1.0/24 – из сети 172.16.1.0/24
-j MASQUERADE – то сделать действие MASQUERADE
То есть, если пакет прилетит из внутренней сети 172.16.1.0/24 с запросом на внешний сетевой ресурс, например с ip адреса 172.16.1.102, то его следует передать на сетевой интерфейс enp0s8, предварительно заменив(MASQUERADE) ip адрес 172.16.1.102 на 192.168.1.31 (ip адрес внешнего интерфейса),при этом этот пакет записывается в таблицу маршрутизации и если на него придёт ответный пакет, то его переправят на внутренний адрес 172.16.1.102 согласно таблице.
Проверим добавление правила в таблицу.
root@gate:~# iptables-save
Как видим правило добавилось и применилось, но несмотря на название утилиты iptables-save, она ничего не сохраняет и созданное правило будет существовать только до момента перезагрузки системы, что-бы оно применилось и после перезагрузки, его надо добавить в конфигурационный файл rules.v4 в правильном порядке, а при помощи утилиты iptables-save это очень легко сделать, надо просто перенаправить с перезаписью результат её работы в этот файл.
root@gate:~# iptables-save > /etc/iptables/rules.v4
Теперь правило не пропадёт и будет применено при загрузке системы.
Ну и сразу пробросим порты для будущих серверов электронной почты и веб сервера. Для этих сервисов у нас будет применяться виртуальная машина "server" и ip адрес у неё будет 172.16.1.2 согласно схеме в начале страницы.
Пробросим 80 и 443 порты для web сервера, соответственно для http и https протоколов, они работают по умолчанию на этих портах.
root@gate:~# iptables -t nat -A PREROUTING -i enp0s8 --destination 192.168.1.0/24 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.2:80
root@gate:~# iptables -t nat -A PREROUTING -i enp0s8 --destination 192.168.1.0/24 -p tcp --dport 443 -j DNAT --to-destination 172.16.1.2:443
iptables -t nat – добавить правило для пакетов, в таблицу nat
-A PREROUTING – в конец цепочки PREROUTING(обратим внимание что цепочка поменялась)
-i enp0s8 – с входным сетевым интерфейсом enp0s8
--destination 192.168.1.0/24 – прибывающих из сети 192.168.1.0/24
-p tcp --dport 80 – по протоколу tcp на порт 80
-j DNAT --to-destination 172.16.1.2:80 – заменить ip адрес источника на 172.16.1.2 и порт назначения 80.
Для 443 порта правило то-же самое, только порт прибытия изменён на 443.
Далее добавим правило для 25 порта, на этом порту работает протокол smtp сервиса электронной почты.
root@gate:~# iptables -t nat -A PREROUTING -i enp0s8 --destination 192.168.1.0/24 -p tcp --dport 25 -j DNAT --to-destination 172.16.1.2:25
Сохраняем
root@gate:~# iptables-save > /etc/iptables/rules.v4
Теперь просмотрим добавленные правила таким способом, где будет видно все номера правил, протоколы, порты и т.д.
root@gate:~# iptables -t nat -L -v --line-numbers
Подробнее про маршрутизацию пакетов здесь и здесь.
На этом настройку виртуальной машины "gate" пока закончим, нашим минимальным требованиям по моделированию сети предприятия она отвечает. Если понадобится что-то добавить в настройки этой машины, то сделаем это позже. И следует отметить, что она не обладает полноценным сетевым экраном(Firewall-ом), любой хост из сети 192.168.1.0 может попасть во внутреннею сеть 172.16.1.0, если добавит маршрут в эту сеть у себя в таблицу маршрутизации. В конце настроек всех сетевых машин мы это сделаем и проверим легко доступность внутренних ресурсов из внешней сети. По хорошему виртуальная машина "server" должна находиться в отдельной от остальных хостов демилитаризованной сети. Но для упрощения настроек она включена в общую локальную сеть.
Виртуальная машина выполняющая роль компьютера "для сотрудников" с установленным графическим окружением и динамическим ip адресом. Скрипт для автоматической настройки виртуальной машины "client1" здесь.
Следующим шагом перейдём к созданию и настройке виртуальной машины "client1". Она настраивается очень просто и это не займёт много времени, к тому-же при создании этой машины, мы проверим правильность настроек машины "gate".
Создание и настройка виртуальной машины "client1".
Для создания машины "client1" нам понадобится тот-же образ операционной системы Debian, из которого мы создавали машину "gate".
У меня эта виртуальная машина называется debian12, нажимаем на неё правой кнопкой мыши и в появившемся меню выбираем пункт "клонировать".
Имя виртуальной машины: client1_corp1
Политика MAC-адреса: сгенерировать новые MAC-адреса всех сетевых адаптеров
Нажимаем кнопку "Далее".
В следующем пункте оставляем всё как есть и просто нажимаем кнопку "Готово".
Начнётся клонирование виртуальной машины, остаётся дождаться его завершения.
После завершения копирования, выбираем левой кнопкой мыши нашу машину "client1_corp1" и нажимаем кнопку "Настроить"
Во вкладке система, материнская плата, установим 2048 МБ оперативной памяти.
Во вкладке процессор установим 2 процессора, тут подразумевается 2 ядра.
Далее во вкладке сеть, Адаптер 1, снимаем галку с пункта "Включить сетевой адаптер".
Тем самым мы отключим сетевой адаптер с именем enp0s3, так-как у нас будет задействован адаптер с именем enp0s8, а это адаптер номер 2.
В пункте Адаптер 2: ставим галку на "Включить сетевой адаптер", далее Тип подключения: "выбираем внутренняя сеть", Имя: выбираем corp1 (если настраивали машину gate, то сеть с таким именем существует и есть в списках, если нужен просто хост с графическим окружением, то можно выбрать Тип подключения: "Сетевой мост"). Нажимаем кнопку "ОК".
Если машина "gate" не запущена запускаем сначала её, а потом машину "client1".
Входим в аккаунт пользователя, который создавали при установке операционной системы, у меня это
log: ivan
pass: linux
Далее переходим в работу из под root-a командой:
sudo -i
проверяем получения ip по протоколу dhcp от виртуальной машины "gate", командой:
ip a
В моём случае ip адрес не был получен
Делаем запрос на получение ip адреса командой:
dhclient -v
После чего сетевые настройки были получены от сервера dhcp и виртуальная машина "client1" получила ip адрес 172.16.1.101 на сетевом интерфейсе enp0s8.
И тут видно диалог запросов и ответов клиент-сервер.
Теперь "пропингуем" любой сайт по доменному имени, тем самым мы проверим сразу две вещи, это работоспособность маршрутизации и работу dns сервера на машине "gate".
Я буду "пинговать" сайт ya.ru, набираем в командной строке:
ping -c4 ya.ru
Отлично, связь есть и dns сервер работает корректно.
Что-бы убедится в том, что на dns запросы отвечает именно "gate" можно набрать в командной строке уже знакомую команду:
nslookup -q=A ya.ru
И будет видно какой ip отвечает на dns запросы, это 172.16.1.1, адрес шлюза.
Существует много вариантов как подключится по ssh из внешней сети к хосту во внутренней сети.
Рассмотрим пару вариантов:
Первый вариант через машину "gate", для этого открываем putty и подключаемся к "gate" обычным способом. Как мы помним внешний ip у этой машины 192.168.1.31
Подключение по ssh к машине "client1" c авторизацией на машине "gate".
После ввода логина и пароля, в командной строке набираем:
ivan@gate:~$ ssh ivan@172.16.1.101
То-есть подключаемся как пользователь ivan к хосту с ip 172.168.1.101 по ssh
На вопрос о добавлении ключа пишем "yes" и нажимаем Enter
Таким образом мы попадаем на машину "client1".
Следующий вариант подключения, состоит в добавлении маршрута во внутреннюю сеть на хосте во внешней сети, как мы помним что по сути межсетевой экран на машине "gate" настроен таким образом, что любой может подключится к внутренним ресурсам сети.
Подключение по ssh к машине "client1" через маршрутизацию машины "gate".
Для этого добавим маршрут в таблицу маршрутизации, в сеть 172.16.1.0/24 и подключимся к клиенту с помощью putty.
На хосте с windows, где установлен virtualbox, откроем "Командную строку"(в поиске набираем cmd, нажимаем правой кнопкой мыши на появившееся приложение "Командная строка" и нажимаем "Запуск от имени администратора").
В появившемся окне набираем инструкцию:
route ADD 172.16.1.0/24 192.168.1.31
либо:
route ADD 172.16.1.0 MASK 255.255.255.0 192.168.1.31
что по сути одно и то-же.
Как мы помним "client1" получил настройки сети по dhcp с ip адресом 172.16.1.101( посмотреть ip адрес на клиенте можно командой: ip a ). Сразу "пропингуем" этот ip адрес набрав команду в командной строке:
ping 172.16.1.101
Этот маршрут будет добавлен в таблицу маршрутизации на машине с windows, до момента презагрузки, чтобы добавить его "на постоянку" нужно добавить к инструкции ключ -p.
route -p ADD 172.16.1.0/24 192.168.1.31
Что-бы посмотреть существующие маршруты в windows:
route PRINT
И среди прочих маршрутов будет присутствовать и наш добавленный маршрут
Удалить маршрут можно командой:
route DELETE 172.16.1.0
справка по командам route
route /?
или просто:
route
Далее запускаем putty и прописываем в строке подключения ip машины "client1", у меня это 172.16.1.101 и нажимаем "Open"
После ввода логина и пароля мы оказываемся на машине "client1"
Сохранять профиль в putty для этого подключения не имеет смысла, так-как ip у машины "client1" будет меняться из-за получения его по dhcp, а привязку по MAC адресу мы не будем делать, потому что эта машина нам нужна будет для работы именно в графике а не в терминале.
Итак приступим к основным настройкам виртуальной машины "client1".
Станем рутом на продолжительное время
ivan@debian12:~$ sudo -i
Обновляем репозиторий и я установлю текстовый редактор vim для своего удобства и буду работать в нём.
root@debian12:~# apt update && apt install vim -y
Меняем имя хоста на client1.corp1.un прописав его в конфигурационном файле /etc/hostname
root@debian12:~# vim /etc/hostname
client1.corp1.un
Напомню для выхода из vim с сохранением изменений сделанных в файле, нажимаем Esc : прописываем wq и нажимаем Enter
Идём далее и меняем имя хоста в файле /etc/hosts
root@debian12:~# vim /etc/hosts
127.0.0.1 localhost
127.0.1.1 client1.corp1.un client1
Конфигурационный файл resolv.conf оставляем по умолчанию, так как эту настройку машина будет получать по dhcp.
Файл interfaces так-же можно оставить по умолчанию, но лучше явно прописать инструкцию о получение сетевых настроек по dhcp.
Что-бы скопировать текст и вставить в vim-e(Ctrl+c Ctrl+v не работает в виме) копируете текст привычным образом, или Ctrl+Insert, в vim-e вставляем Shift+Insert.
root@debian12:~# vim /etc/network/interfaces
allow-hotplug enp0s8
iface enp0s8 inet dhcp
Устанавливаем минимальное графическое окружение, браузер firefox и почтовый клиент thunderbird.
root@debian12:~# apt -y install xorg xdm xfce4 xfce4-terminal xfce4-xkb-plugin firefox-esr thunderbird dbus-x11
При вопросе какой использовать дисплей выбираем lightdm нажимаем "OK"(чтобы попасть на кнопку ок нажимаем Tab и Enter).Дожидаемся установки П.О.
Далее стартуем сервис lightdm
root@debian12:~# service lightdm start
После запуска lightdm видим форму входа в аккаунт, на данном этапе настройка виртуальной машины "client1" завершена.
Виртуальная машина выполняющая роль сервера предприятия с статичным ip адресом 172.16.1.2/24, предназначается для установки и настройки сервисов, таких как файловый сервер, почтовый сервер, веб сервер и так далее.
Создание и настройка виртуальной машины "server".
Итак приступим к настройке виртуальной машины, повторяем шаги по клонированию виртуальной машины из установленной операционной системы debian, как мы это делали для машины "client1".
Выбираем выключенную виртуальную машину с установленной о.с. нажимаем на неё правой кнопкой мыши и в появившемся меню нажимаем левой кнопкой мыши на значок "Клонировать...".
Прописываем имя виртуальной машины server_corp1. В политике MAC-адреса выбираем "Сгенерировать новые MAC-адреса всех сетевых адаптеров, нажимаем кнопку "Далее".
Следующим шагом оставляем всё по умолчанию и нажимаем "Готово".
После окончания клонирования виртуальной машины, выбираем её из списка и нажимаем кнопку "Настроить".
В настройках виртуальной машины созданных при установке операционной системы меня всё устраивает, тут применяется: Жёсткий диск 8 Гб; Оперативная память 2048 Мб; Процессор 2 ядра, таких ресурсов вполне хватит для тестовых задач, но можно и урезать ресурсы до 1024 Гб оперативной памяти и 1 ядра процессора, без графического окружения, которое на сервере и не будет, этого то-же будет достаточно. Единственное надо поменять сетевой адаптер и включить эту машину во внутреннюю сеть corp1. Во вкладке "Сеть", "Адаптер 1" снимаем галку в пункте "Включить сетевой адаптер".
Переходим во вкладку "Адаптер 2", ставим галку в пункте "Включить сетевой адаптер", ниже в пункте "Тип подключения" выбираем "Внутренняя сеть". В пункте Имя: выбираем corp1(если настраивали "gate" то имя сети corp1 есть в списке). Нажимаем "ОК".
Запускаем виртуальную машину.
Так как у нас связь из внутренней сети с внешним миром идёт через машину "gate", то необходимо запустить и её, если она выключена.
После входа в аккаунт на виртуальной машине "server", и ввода команды для работы из под root
ivan@debian12:~$ sudo -i
Внесём сетевые настройки в файл interfaces
root@debian12:~# vim.tiny /etc/network/interfaces
auto enp0s8
iface enp0s8 inet static
address 172.16.1.2/24
gateway 172.16.1.1
Не забыв закомментировать прежние настройки поставив в начале строк этих настроек знак # (если конечно они были).
Выходим из редактора и перезапускаем сетевой адаптер
root@debian12:~# systemctl restart networking.service
Смотрим применились-ли настройки сети, из скриншота ниже видно, что у меня всё в порядке и на сетевом адаптере назначен правильный ip адрес 172.16.1.2
root@debian12:~# ip a
Далее подключаемся к машине "server" по ssh, либо через машину "gate", либо через добавление маршрута, на хостовый компьютер, как было описано выше.
Заходим в аккаунт у меня это ivan с паролем linux, переходим в работу из под root
ivan@debian12:~$ sudo -i
Обновляем пакеты установщика из репозитория и я установлю текстовый редактор vim
root@debian12:~# apt update && apt install vim -y
Поменяем имя хоста на "server", для этого, как мы делали раньше, откроем конфигурационный файл hostname любым текстовым редактором и внесём необходимую запись
root@debian12:~# vim /etc/hostname
server.corp1.un
Далее поменяем настройки в файле resolv.conf
root@debian12:~# vim /etc/resolv.conf
search corp1.un
nameserver 172.16.1.1
По сути предварительная настройка машины "server" завершена, что-бы применились все настройки окончательно перезагрузим систему командой
root@debian12:~# reboot
или
root@debian12:~# init 6
На этом можно было-бы завершить настройки виртуальной машины "server", но установим пару сервисов на будущее, заранее.
Устанавливаем web сервер apache2
root@server:~# apt install apache2 -y
После установки можно сразу проверить доступность технической страницы установленного веб сервера, так как мы прокидывали 80 порт на виртуальной машине "gate" во внутреннею сеть, то при обращении к ip адресу 192.168.1.31(внешний ip "gate") по http а это порт 80 по умолчанию, запрос будет перенаправлен на ip 172.16.1.2(ip сервера), а ответ от сервера будет направлен обратно на ip откуда пришёл запрос. В любом интернет браузере, например на компьютере где установлен virtualbox,в верхней строке набираем
http://192.168.1.31
И нажимаем "Enter"
Как видим мы зашли на техническую страницу web сервера apache2
Хотя сервер настроен на дефолтную директорию из коробки, и для того что-бы поменять стартовую страницу на свою, необходимо всего лишь заменить файл index.html по пути /var/www/html/ ,на свой ,но настроим сервер на сайт домена corp1, для этого отключим дефолтный сайт и создадим свой.
Отключаем дефолтный сайт:
root@server:~# a2dissite 000-default.conf
Создаём конфигурационный файл сайта и прописываем туда необходимые настройки:
root@server:~# vim /etc/apache2/sites-available/default.conf
<VirtualHost *:80>
ServerName corp1.un
ServerAlias www.corp1.un
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Скопируем техническую страницу сервера apache2 в текущую директорию
root@server:~# cp /var/www/html/index.html .
Сотрём всё её содержимое
root@server:~# :> /var/www/html/index.html
И создадим свою простую html страницу:
root@server:~# vim /var/www/html/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Простая HTML-страница</title>
</head>
<body>
<h1>Welcome to Corp1</h1>
<p>You are on the www.Corp1.un website</p>
<!-- <img src="image.jpg" alt="Изображение"> -->
</body>
</html>
После этого подключаем конфигурационный файл default.conf к настройкам сервера:
root@server:~# a2ensite default.conf
И перезагружаем сервер apache2:
root@server:~# systemctl reload apache2
Проверяем работоспособность страницы, набираем в интернет браузере, в верхнем окошке:
http://192.168.1.31
Теперь проверим доступность страницы из внутренней сети 172.16.1.0, с виртуальной машины "client1". Для этого запускаем машину "client1", заходим в аккаунт в графике, запускаем браузер, и так-же в верхнем окошке пишем адрес сайта, только уже по доменному имени, так как у нас работает dns сервер на машине "gate" и мы вносили соответствующие записи в файл зоны.
http://www.corp1.un
http://corp1.un
На этом настройку веб сервера завершим и перейдём к настройке следующего сервиса, а именно электронной почты.
Кратко по настройке apache2 здесь.
Настраивать сервер будем по так называемой модели "lamp".
LAMP (Linux+Apache+MySQL+PHP):
В роли МТА SMTP сервера будет выступать postfix.
В роли IMAP сервера будет выступать dovecot и IMAP клиента thunderbird.
Для доступа к почте через web, будут настроены сервисы mariadb; apache2; roundcube.
Итак для начала устанавливаем postfix:
root@server:~# apt install postfix -y
После начала установки последуют некоторые вопросы по поводу параметров установки.
Первый вопрос(разъяснение), нажимаем кнопку "Tab" подсветится кнопка "OK" на экране и нажимаем "Enter".
Второй вопрос, тут предлагается выбрать установку из 5 главных конфигураций, оставляем по умолчанию второй пункт "Internet Site", нажимаем "Tab" и "Enter".
Следующим шагом предлагается ввести полное доменное имя почтового сервера, то-есть у нас будет один главный почтовый сервер, поэтому сюда вводим строку corp1.un и адреса почтовых ящиков будут такими: ivan@corp1.un .
В принципе postfix минимально настроен из коробки, пока подправим только одну запись в конфигурационном файле а именно в файле main.cf исправим строку mayhostname = server.corp1.un . Так-как в записях dns зоны у нас написано, что за электронную почту отвечает хост "mx".
root@server:~# vim /etc/postfix/main.cf
mayhostname = mx.corp1.un
Записи в файле dns зоны, для почтового сервера.
Перезагружаем postfix.
root@server:~# service postfix reload
или так:
root@server:~# systemctl reload postfix
Далее устанавливаем dovecot-imapd:
root@server:~# apt install dovecot-imapd -y
Опять-же dovecot минимально настроен из коробки, поэтому при правильной настройке dns зоны он заработает сразу, тем более, что dovecot, что postfix установлены на одну машину, поэтому перемещаемся на машину "client1" и попробуем подключить thunderbird к нашим smtp и imap серверам.
Захожу на "client1" как пользователь ivan.
После входа в аккаунт нажимаем левой кнопкой мыши на "Applications" и в выпавшем меню на пункт "Mail Reader".
При первом запуске thunderbird мы попадаем в меню настройки почтового аккаунта. Вводим имя пользователя, я ввёл просто "ivan", далее адрес почтового ящика: ivan@corp1.un и пароль, тут важно что-бы этот пользователь с паролем существовал на машине "server", как мы помним пользователь "ivan" у нас существует на всех виртуальных машинах, так как он был добавлен при установке операционной системы Debian, а все остальные виртуальные машины это клоны той машины.
Нажимаем кнопку "Continue".
Пройдёт первоначальный тест конфигурации и загорится зелёная табличка, а под ней параметры входа в аккаунт.
Нажимаем кнопку "Done".
После нажатия кнопки "Done" нас предупредят о ненадёжном сертификате на сервере, это потому что там используется само-подписаный сертификат безопасности, сформированный в процессе установки. Другого сертификата у нас нет, поэтому жмём кнопку "Confirm Security Exception".
Далее нажимаем кнопку "Finish"
И вот мы оказываемся в настроенном аккаунте thunderbird, теперь попробуем послать кому-нибудь письмо, а так-как других пользователей кроме этого и root у нас нет, пошлём письмо root-y. Нажимаем кнопку " New Message".
Кому: root@corp1.un
Заголовок: Test
Тело письма: Test mail system.
И нажимаем Отправить(Send).
И тут нас встречает снова это предупреждение, потому что мы до этого подключились к dovecot по протоколу imap, а к postfix по протоколу smtp не были подключены, а за отправку почты отвечает именно postfix. Нажимаем кнопку "Confirm Security Exception" и подключаемся к серверу.
Письмо должно уйти на почтовый ящик root-a.
Теперь посмотрим пришло-ли письмо к пользователю root, самый простой способ это сделать, это зайти на машину "server", стать рутом sudo -i и просмотреть почтовый ящик рута командой cat, так как почтовый ящик это просто текстовый файл ASCII:
root@server:~# cat /var/mail/root
Как видим письмо дошло и его можно прочитать. Далее необходимо прикрутить веб доступ к почте, так как веб сервер уже установлен, устанавливаем базу данных необходимую для работы Roundcube.
root@server:~# apt install mariadb-server -y
И устанавливаем сам Roundcube плюс дополнение для работы с базами данных mysql.
root@server:~# apt install roundcube roundcube-mysql -y
В процессе установки последуют пару вопросов, первый вопрос о базе данных выбираем "yes" и нажимаем "Enter".
Второй вопрос о вводе пароля к базе данных, дело в том что мы не формировали базу данных для Roundcube и не задавали никаких паролей, в процессе установки, если Roundcube устанавливается на ту-же машину где установлен mariadb-server, то база данных и пароль к ней сформируется автоматически, поэтому на этом шаге не вводим пароль, оставляем поле пустым, выбираем "OK" и жмём "Enter".
Минимально всё настроено из коробки поэтому должно заработать сразу, единственное надо подправить адрес веб страницы входа, для этого открываем конф. файл на редактирование и снимаем комментарий с этой строки:
root@server:~# vim /etc/apache2/conf-enabled/roundcube.conf
Alias /roundcube /var/lib/roundcube/public_html
И перезапускаем веб сервер.
root@server:~# systemctl restart apache2
Идём в браузер на компьютере где установлен virtualbox, вводим адрес веб сервера с стартовой страницей roundcube.
http://192.168.1.31/roundcube
Вводим логин и пароль существующего в системе пользователя, у меня это ivan с паролем linux.
Ну и попадаем в почтовый аккаунт пользователя.
Теперь надо подправить учётную запись в настройках аккаунта, потому что по умолчанию почтовый адрес стоит ivan@localhost, надо его исправить на наш почтовый ящик домена, для этого заходим в "Настройки", "Профили", "ivan@localhost" и в графе E-Mail прописываем правильный адрес почтового ящика "ivan@corp1.un". Сохраняем.
Но при попытке отправить письмо, например на адрес рута повторив ранее проделанный тест, мы увидим ошибку "Сбой соединения с сервером".
Дело в том, что roundcube настроен по умолчанию на подключение к серверу smtp к 587 порту, а postfix по умолчанию не слушает этот порт, переведём roundcube на подключение к smtp серверу на 25 порт.
root@server:~# vim /etc/roundcube/config.inc.php
$config['smtp_host'] = 'localhost:25';
Сохраняем изменения и выходим из редактирования, перезапускаем apache2.
root@server:~# systemctl restart apache2
Однако при попытке снова отослать письмо возникнет другая ошибка "Ошибка авторизации".
Postfix по умолчанию не настроен на авторизацию пользователей. Её имеет смысл настраивать только на рабочих серверах и то через пограничный smtp сервер на котором нет авторизации, иначе при доступе к серверу из интернета, боты вычислят этот сервер, что на нём есть авторизация и будут пытаться ломать аккаунты при помощи подбора паролей, а так изначально postfix настроен таким образом, что он не является открытым релеем и на нём выключена авторизация, так как боты постоянно мониторят ip адреса на открытые 25 порты и пытаются пересылать спам через сервера которые нашли.
Поэтому отключаем авторизацию в настройках roundcube, стираем всё внутри одинарных кавычек в строках:
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
root@server:~# vim /etc/roundcube/config.inc.php
$config['smtp_user'] = '';
$config['smtp_pass'] = '';
Перезапускаем веб сервер.
root@server:~# systemctl restart apache2
Теперь при попытке отправить письмо, оно ушло без проблем.
На этом настройку почты закончим, надо отметить что с этого тестового сервера могут уходить письма и на реальную электронную почту, но она всеми фильтрами будет восприниматься как спам, чем письма с такового ящика и являются, естественно прислать письмо с реального почтового ящика из внешнего интернета не получится, что-бы пересылать письма между серверами и доменами, в дальнейшем будет настроена тестовая инфраструктура между двумя предприятиями и там пересылка почты будет возможна в обе стороны. Кратко настройка почты здесь.
Варианты настроек сервера samba здесь и здесь.
Развернём файловый сервер samba в простой конфигурации, со входом в общую шару по паролю.
Установка:
root@server:~# apt install samba -y
Так как на сервере у меня пока один пользователь ivan, он-же администратор(не считая рута), задаю для него пароль для входа в общую шару.
root@server:~# smbpasswd -a ivan
Последует строка с предложением ввести пароль для этого пользователя, у меня будет пароль linux12345, отмечу что при вводе пароля, как это принято в linux, не появляется никаких символов или звёздочек, после ввода нажимаем "Enter" и следующим шагом повторяем ввод пароля.
Посмотреть краткую справку по команде smbpasswd можно так:
root@server:~# smbpasswd -h
Итак пользователя мы добавили в базу данных samba, теперь отконфигурируем основной файл настройки.
Сохраняем оригинальный конфиг в текущую директорию и стираем всё содержимое файла в директории /etc
root@server:~# cp /etc/samba/smb.conf .
root@server:~# :> /etc/samba/smb.conf
открываем файл на редактирование и прописываем туда свои настройки
root@server:~# vim /etc/samba/smb.conf
[global]
unix charset = UTF-8
dos charset = cp866
workgroup = CORP1
passdb backend = tdbsam
security = user
log file = /var/log/samba/log.%m
max log size = 1000
panic action = /usr/share/samba/panic-action %d
[storage]
comment = Corporate file storage
path = /var/samba
guest ok = no
read only = no
force user = games
[printers]
comment = All Printers
browseable = no
path = /var/tmp
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
Разберём внесённые настройки:
[global] – квадратные скобки означают, что ниже внесённые строки относятся к этому блоку, до следующих квадратных скобок, в данном случае блок с именем global означает общие настройки сервера.
unix charset = UTF-8 – кодировка создания имён файлов, от клиентов samba как правило получает имена файлов в Unicode. В современных samba серверах она включена по умолчанию, поэтому этот пункт можно и не прописывать.
dos charset = cp866 – кодировка для dos, применяется для очень старых машин, включён здесь для совместимости, сейчас почти не используется и поэтому этот пункт аналогично можно не прописывать.
workgroup = CORP1 – для windows, можно участвовать в рабочей группе(WORKGROUP), либо в домене, можно оставить как есть или прописать рабочую группу WORKGROUP.
passdb backend = tdbsam – включает передачу и приём хеш паролей понятный для операционной системы на базе windows.
security = user – политика безопасности user, далее в отдельных блоках её можно менять на основе групп и т.д.
log file = /var/log/samba/log.%m – путь для записи файлов логов.
max log size = 1000 – максимальный размер одного файла лога.
panic action = /usr/share/samba/panic-action %d – действия при краше samba, это просто путь до скрипта, на отправку письма администратору.
[storage] – блок с настройками расшариваемой директории и название расшариваемой директории, то есть в проводнике мы будем видеть папку именно с этим названием, можно придумать любое имя.
comment = Corporate file storage – это просто комментарий, при наведении мышки на папку в проводнике windows, будет показываться всплывающее окошко с этим текстом.
path = /var/samba – путь к расшариваемой директории(далее мы её создадим).
guest ok = no – запрещает вход пользователей проваливших аутентификацию.
read only = no – говорит о том что в шаре пользователь сможет открывать файлы как на чтение так и на запись.
force user = games – при входе в шару, при пройденной аутентификации всех пользователей будут приравнивать к пользователю games, этот пользователь уже существует в debian и ubuntu по умолчанию и для простоты используем его в данном случае.
Далее идут настройки для принтеров, они нам тут не понадобятся, поэтому их можно вообще не прописывать. Сохраняем изменения и выходим из редактирования. Напомню что в vim это "Esc" :wq и "Enter".
Посмотрим а существует пользователь games в системе на самом деле
root@server:~# id games
Как видим пользователь такой есть, дальше создаём расшариваемую папку и меняем у неё владельца и права.
root@server:~# mkdir /var/samba
root@server:~# chown games /var/samba
root@server:~# chmod 755 /var/samba
Ну и пробуем зайти в шару по ip адресу, напомню что сервер samba у меня находится в другой сети доступ к которой происходит через шлюз "gate" c внешним ip адресом 192.168.1.31, но так как я добавил маршрут в эту сеть на компьютер на котором установлен virtualbox и на машине "gate" по сути нет меж сетевого экрана, то я могу обращаться на сервер samba по ip внутренней сети сервера 172.16.1.2 на прямую с этого компьютера.
В проводнике в верхнем окошке набираем
\\172.16.1.2 если у вас другой ip адрес сервера то набираем его.
Нажимаем "Enter", появится окно для ввода логина и пароля, у меня логин ivan, пароль linux12345
Нажимаем "OK" и попадаем к папке которую расшаривали
Заходим в неё и тут уже можем создавать и выкладывать файлы.
Этот логин и пароль можно раздать всем пользователям, кто будет пользоваться шарой или для каждого пользователя завести отдельные аккаунты в системе linux можно без пароля и без shell но обязательно внести пароль и пользователя в базу данных samba командой smbpasswd -a имя пользователя. Просмотр базы данных samba:
root@server:~# pdbedit -w -L
Удалить пользователя и пароль из базы данных samba:
root@server:~# smbpasswd -x ivan
Хорошо, мы настроили доступ к шаре и подключились к ней с компьютера на базе операционной системы windows, но у нас есть пользователи которые работают за компьютерами на базе операционной системы linux(виртуальная машина "client1") и им тоже нужен доступ к этому файловому хранилищу.
Возвращаемся на виртуальную машину "client1", что-бы было удобней работать подключусь к ней не в графике а по ssh.
Так-как машина "client1" получает динамический ip то для того что-бы узнать её ip адрес можно зайти в графике и в терминале набрать команду
ivan@client1:~$ ip a
Как видно из скриншота, у меня машина "client1" получила ip адрес 172.16.1.101
Подключаемся к ней по ssh, либо напрямую если настроен маршрут в эту сеть, либо сначала подключаемся к машине "gate" по ip 192.168.1.31 а с него уже к машине "client1". Все действия будут выполняться из под рута
ivan@client1:~$ sudo -i
Устанавливаем П.О:
root@client1:~# apt install smbclient cifs-utils gvfs-backends gvfs-fuse -y
Далее создаём директорию куда будем монтировать шару
root@client1:~# mkdir /mnt/corp_storage
После этого прописываем в fstab параметры монтирования
root@client1:~# vim /etc/fstab
//172.16.1.2/storage /mnt/corp_storage cifs rw,user,user=ivan,pass=linux12345,noauto 0 0
где:
//172.16.1.2/storage – откуда монтируем
/mnt/corp_storage – куда монтируем
cifs rw, – тип файловой системы, в режиме чтения и записи.
user, – этот параметр нужен для того что-бы любой пользователь мог примонтировать эту директорию, по умолчанию монтировать может только root.
user=ivan, – логин аккаунта монтируемой директории(логин который мы добавляли на сервере командой smbpasswd -a).
pass=linux12345 – пароль от логина на сервере.
noauto – не монтировать автоматически при загрузке системы.
0 0 – первая цифра отвечает за дамп, вторая цифра отвечает за проверку файловой системы на наличие ошибок, оба параметра ставим в 0.
Так как на виртуальной машине "gate" работает dns сервер зоны, то эта запись могла быть и такая:
//server.corp1.un/storage /mnt/corp_storage cifs rw,user,user=ivan,pass=linux12345,noauto 0 0
Сохраняемся и выходим. Перезагружаем системный демон, чтобы настройки вступили в силу.
root@client1:~# systemctl daemon-reload
Заходим на машину "client1" в графике, пользователем ivan и в терминале монтируем шару командой
ivan@client1:~$ mount /mnt/corp_storage/
Монтирование должно пройти без сообщений об ошибках, после этого заходим в шару, для этого закрываем терминал, нажимаем на иконку любого файлового менеджера, в данном случае это "File System" двойным щелчком левой кнопкой мыши.
Ну и идём по пути нашего монтирования, ищем папку mnt, corp_storage, и т.д.
Ну вот вобщем-то и всё, минусы такого подхода, пользователю всё равно надо набирать в терминале команду на монтирование, но это можно исправить, например написать простейший скрипт, а пользователям объяснить, что для того что-бы попасть в шару надо с начала два раза клацнуть на файл в документах. И ещё один большой минус, это в том что на этом компьютере кто первый шару примонтирует того и тапки, то есть если пользователь ivan примонтирует эту шару, то он должен и отмонтировать её, а если он этого не сделает, то когда он выйдет из аккаунта и за этот компьютер сядет другой пользователь например user1 и войдёт в свой аккаунт, то шара будет смонтирована с владельцем ivan, по умолчанию пользователь user1 сможет читать файлы в шаре но изменять их и записывать нет.
Для работы операционной системы windows на virtualbox понадобятся значительные ресурсы основного компьютера, если железо не позволяет использовать эту операционную систему на виртуалке, то лучше для тестирования взаимодействия хостов linux с windows использовать подход, когда основной хост является и клиентом на windows, то есть добавить маршрут во внутреннюю сеть на компьютер на котором установлен virtualbox, как это было сделано выше.
Итак приступим к настройке виртуальной машины. Для этого нам понадобится установленная операционная система windows. Пример установки здесь.
Клонируем виртуальную машину из установленной операционной системы. Для этого как мы и делали раньше выделяем левой кнопкой мыши виртуальную машину с установленной windows, нажимаем правой кнопкой мыши на неё и в выпавшем меню выбираем пункт "Клонировать".
В открывшемся окне в графе
Имя: назову client2_corp1
Путь: Или по умолчанию, или прописать свой путь.
Политика MAC-адреса: выбираем Сгенерировать новые MAC-адреса всех сетевых адаптеров.
Нажимаем "Далее".
Следующим шагом оставляем всё по умолчанию и нажимаем кнопку "Готово".
Начнётся процесс клонирования, который займёт некоторое время. После его завершения заходим в настройки клонированной машины и меняем сеть с сетевого моста на внутреннею сеть, так ка внутренняя сеть у нас называется corp1 прописываю её. Нажимаем "ОК" и запускаем виртуальную машину.
После запуска и загрузки, машина должна получить ip по dhcp.
На этом создание тестовой сетевой инфраструктуры завершено, в дальнейшем создадим домен первого уровня un и точно такую-же инфраструктуру только corp2.un для взаимодействия между ними.
Хотя настраивать вручную виртуальные машины интересно и полезно, но на десятый раз, порядком надоедает. Поэтому напишем простейшие скрипты по автоматическому конфигурированию виртуальных машин. Понятно, что для этих задач идеально подходит язык программирования ansible, но для разворачивания этой тестовой инфраструктуры вполне подойдёт и bash.
Клонируем свеже-установленную виртуальную машину Linux Debian без графического окружения, как мы это делали со всеми В.М. в примерах выше. Назову эту виртуалку gate_corp1.un, сгенерирую новые мак адреса и т.д. вообщем выполню стандартные операции по копированию.
После завершения клонирования идём в настройки сетевых адаптеров, ставим у первого адаптера тип подключения "Внутренняя сеть", так как этот адаптер будет с именем enp0s3 и прописываем любое имя этой сети, у меня будет corp1_un, а у Адаптера 2 ставим "Сетевой мост" и незабываем его включить. На этом шаге необходимо включить адаптеры так как показано, иначе настройки после отработки скрипта будут некорректные и сети не заработают.
Далее запускаем виртуальную машину, заходим в неё в терминале и смотрим ip адрес командой ip a
Если по каким-то причинам она не получила ip по dhcp от роутера, то пробуем получить его вручную
sudo dhclient enp0s8 -v
или просто
sudo dhclient -v
Как видно после запроса, моя виртуальна машина получила ip адрес 192.168.1.137
Подключаюсь по ssh через putty к этому ip. Скрипт работает из под root`a поэтому можно сразу перейти в работу из под рута командой sudo -i или запускать его через sudo. Я перейду в работу из под root.
ivan@debian12:~$ sudo -i
Далее копируем текст скрипта, от края до края в буфер обмена, как вам удобно(выделяем весь текст и нажимаем Ctrl+C или Ctrl+Insert или мышкой "Копировать..."
В удалённом терминале putty прописываем
root@debian12:~# vim.tiny gate.sh
что-бы вставить текст из буфера обмена нажимаем Shift+Insert, сохраняем и выходим из vim.tiny, для этого нажимаем :wq
#!/bin/bash
echo 'Enter the hostname(example gate):'
read HOSTNAME
echo 'Enter the domain(example corp1.un):'
read DOMAIN
echo 'Enter the fourth octet of the external ip address(example 31):'
read EXTERNAL_OCTET
echo "$HOSTNAME.$DOMAIN" > /etc/hostname
echo "127.0.0.1 localhost
127.0.1.1 $HOSTNAME.$DOMAIN $HOSTNAME" > /etc/hosts
echo "# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp0s8
iface enp0s8 inet static
address 192.168.1.$EXTERNAL_OCTET/24
gateway 192.168.1.1
auto enp0s3
iface enp0s3 inet static
address 172.16.1.1/24" > /etc/network/interfaces
apt update&&apt install isc-dhcp-server sed vim -y
systemctl stop isc-dhcp-server
sed -i'' 's/^INTERFACESv4=""/INTERFACESv4="enp0s3"/g' /etc/default/isc-dhcp-server
sed -i'' 's/^INTERFACESv6=""/#INTERFACESv6=""/g' /etc/default/isc-dhcp-server
echo "ddns-update-style none;
log-facility local7;
authoritative;
default-lease-time 600;
max-lease-time 7200;
option domain-name \"$DOMAIN\";
option domain-name-servers 172.16.1.1;
shared-network LAN1 {
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.101 172.16.1.254;
option routers 172.16.1.1;
}
}" > /etc/dhcp/dhcpd.conf
DEBIAN_FRONTEND=noninteractive apt install iptables iptables-persistent -y
sed -i'' 's/^#net.ipv4.ip_forward=*/net.ipv4.ip_forward=/g' /etc/sysctl.conf
sysctl -f
iptables -t nat -A POSTROUTING -o enp0s8 -s 172.16.1.0/24 -j MASQUERADE
iptables -t nat -A PREROUTING -i enp0s8 --destination 192.168.1.0/24 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.2:80
iptables -t nat -A PREROUTING -i enp0s8 --destination 192.168.1.0/24 -p tcp --dport 443 -j DNAT --to-destination 172.16.1.2:443
iptables -t nat -A PREROUTING -i enp0s8 --destination 192.168.1.0/24 -p tcp --dport 25 -j DNAT --to-destination 172.16.1.2:25
iptables-save > /etc/iptables/rules.v4
apt install bind9 -y
sed -i'' '13,$s/?*\/.*forwarders/forwarders/g' /etc/bind/named.conf.options
sed -i'' 's/?*\/.*0.0.0.0/\t192.168.1.1/' /etc/bind/named.conf.options
sed -i'' 's/?*\/.*};/};/' /etc/bind/named.conf.options
sed -i'' '16a\ \ \ \ \ \ allow-recursion { 192.168.1\/24; 172.16.1\/24; 127\/8; };' /etc/bind/named.conf.options
sed -i'' 's/dnssec-validation auto;/dnssec-validation no;/' /etc/bind/named.conf.options
sed -i'' 's/any/::/' /etc/bind/named.conf.options
echo '$TTL 3h
@ IN SOA ns admin 2024012801 1d 12h 1w 3h
NS ns
A 172.16.1.2
MX 9 mx
ns IN A 172.16.1.1
gate IN A 172.16.1.1
server IN A 172.16.1.2
mx IN A 172.16.1.2
www IN A 172.16.1.2' > /etc/bind/$DOMAIN
echo "\$TTL 3h
@ IN SOA ns admin 2024012801 1d 12h 1w 3h
NS ns
A 192.168.1.$EXTERNAL_OCTET
MX 9 mx
ns IN A 192.168.1.$EXTERNAL_OCTET
mx IN A 192.168.1.$EXTERNAL_OCTET
www CNAME ns" > /etc/bind/$DOMAIN.out
echo "zone \"$DOMAIN\" {
type master;
file \"/etc/bind/$DOMAIN\";
};" >> /etc/bind/named.conf.local
sed -i'' '9,$d' /etc/bind/named.conf
echo "include \"/etc/bind/named.conf.options\";
view \"inside\" {
match-clients {
172.16.1/24;
127/8;
};
include \"/etc/bind/named.conf.local\";
include \"/etc/bind/named.conf.default-zones\";
};
view \"outside\" {
zone \"$DOMAIN\" {
type master;
file \"/etc/bind/$DOMAIN.out\";
};
};" >> /etc/bind/named.conf
named-checkconf -z
rndc reload
echo "search $DOMAIN
nameserver 127.0.0.1" > /etc/resolv.conf
init 6
И запускаем файл на выполнение, его не обязательно даже делать выполняемым.
root@debian12:~# bash gate.sh
Последует просьба ввести имя хоста, домен и четвёртый октет ip адреса сети 192.168.1.[сюда будет подставлена цифра которую введём].
имя хоста, пишем: gate и жмём Enter
домен: corp1.un и Enter
четвёртый октет ip адреса: 31 и Enter
Это сделано для более лучшей масштабируемости. Далее начнётся отработка скрипта с настройкой виртуальной машины.
После перезагрузки, переподключаемся по ssh уже на ip 192.168.1.31 (если четвёртый октет вводили цифру 31).Машина будет полностью настроена.
Как и ранее клонируем виртуальную машину linux debian из чистого установленного дистрибутива, без графической оболочки. Я назову эту машину для списка в virtualbox client1_corp1.un, далее проходим стандартные шаги по копированию виртуальной машины.
После того как машина скопируется, идём в настройки сетевых адаптеров и отключаем Адаптер 1 если он включен. Далее включаем Адаптер 2, в типе подключения выбираем "Внутренняя сеть". Имя прописываем той сети, название которой придумывали при создании машины "gate", у меня это corp1_un.
Применяем настройки и запускаем виртуальную машину. Настроенная виртуальная машина "gate" должна быть запущена. После запуска, заходим на неё в терминале и смотрим ip командой ip a, если ip нет, то пытаемся получить его: sudo dhclient -v
Подключаемся по ssh например при помощи putty к машине "gate", на её "внешний" ip. И с неё на виртуальную машину "client1", так как пользователь ivan существует на обеих машинах, то указывать пользователя при подключении не требуется.
ivan@gate:~$ ssh 172.16.1.102
Последует вопрос о добавлении ключа, пишем yes и жмём Enter.
После подключения перехожу в работу из под рута sudo -i, так-же как и на машине "gate" создаём файл с именем например client1.sh при помощи vim.tiny и вставляем туда текст комбинацией клавиш Shift+Insert, далее сохраняем файл и выходим из редактора :wq и Enter.
#!/bin/bash
echo 'Enter the hostname(example client1):'
read HOSTNAME
echo 'Enter the domain(example corp1.un):'
read DOMAIN
echo "$HOSTNAME.$DOMAIN" > /etc/hostname
echo "127.0.0.1 localhost
127.0.1.1 $HOSTNAME.$DOMAIN $HOSTNAME" > /etc/hosts
echo "# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp0s8
iface enp0s8 inet dhcp" > /etc/network/interfaces
apt update
DEBIAN_FRONTEND=noninteractive apt -y install xorg xdm dbus-x11 xfce4 xfce4-terminal firefox-esr thunderbird
init 6
В результате создастся текстовый файл с именем client1.sh, его и запускаем на выполнение
root@debian12:~# bash client1.sh
Последуют две просьбы ввести имя хоста и домен у меня это client1 и corp1.un ,далее начнётся установка графического окружения и остального п.о.
Ну и на этом настройка закончена, после перезагрузки системы появится графический интерфейс на этой машине и установленный браузер с почтовым клиентом. Единственное надо будет настроить доступ к файловому серверу samba вручную.
Клонируем виртуальную машину из ранее установленного дистрибутива Linux Debian, как мы делали для виртуальной машины "client1". В настройках отключаем сетевой адаптер 1, если он включен, и включаем сетевой адаптер 2. Выбираем пункт "подключения - внутренняя сеть". Имя сети, то которое придумывали для машины "gate", у меня это corp1_un.
Применяем настройки и запускаем виртуальную машину. При этом машина "gate" должна быть запущена. Заходим в терминал виртуальной машины и смотрим ip адрес.
ivan@debian12:~$ ip a
Если ip адрес не получен по dhcp от "gate" пробуем сделать запрос вручную.
ivan@debian12:~$ sudo dhclient -v
Как видно у меня полученный ip это 172.16.1.106
Так как маршрут во внутреннею сеть у меня не настроен подключаюсь при помощи ssh клиента putty сначала на внешний ip адрес(192.168.1.31) машины "gate", а с неё на эту машину.
Пользователь ivan существует на обоих машинах, поэтому подключение можно осуществить без имени пользователя
ivan@gate:~$ ssh 172.16.1.106
Если подключение осуществлять к другому аккаунту или с другого аккаунта, то запись выглядела-бы вот так:
ivan@gate:~$ ssh userX@172.16.1.106
Итак далее копируем текст скрипта от края, до края.
#!/bin/bash
echo 'Enter the hostname(example server):'
read HOSTNAME
echo 'Enter the domain(example corp1.un):'
read DOMAIN
echo 'Enter the fourth octet of ip address(example 2):'
read FOURTH_OCTET
echo "$HOSTNAME.$DOMAIN" > /etc/hostname
echo "127.0.0.1 localhost
127.0.1.1 $HOSTNAME.$DOMAIN $HOSTNAME" > /etc/hosts
echo "search $DOMAIN
nameserver 172.16.1.1" > /etc/resolv.conf
echo "# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto enp0s8
iface enp0s8 inet static
address 172.16.1.$FOURTH_OCTET/24
gateway 172.16.1.1" > /etc/network/interfaces
apt update&&DEBIAN_FRONTEND=noninteractive apt install vim sed apache2 postfix dovecot-imapd mariadb-server roundcube roundcube-mysql samba -y
a2dissite 000-default.conf
echo "<VirtualHost *:80>
ServerName $DOMAIN
ServerAlias www.$DOMAIN
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>" > /etc/apache2/sites-available/default.conf
echo "<!DOCTYPE html>
<html>
<head>
<meta charset=\"utf-8\">
<title>Простая HTML-страница</title>
</head>
<body>
<h1>Welcome to $DOMAIN</h1>
<p>You are on the www.$DOMAIN website</p>
<!-- <img src=\"image.jpg\" alt=\"Изображение\"> -->
</body>
</html>" > /var/www/html/index.html
a2ensite default.conf
sed -i'' "/^myhostname*/cmyhostname = mx.$DOMAIN" /etc/postfix/main.cf
sed -i'' "/^mydestination*/cmydestination = \$myhostname, $HOSTNAME.$DOMAIN, localhost.$DOMAIN, $DOMAIN, localhost" /etc/postfix/main.cf
sed -i'' 's/localhost:587/localhost:25/' /etc/roundcube/config.inc.php
sed -i'' 's/%u//' /etc/roundcube/config.inc.php
sed -i'' 's/%p//' /etc/roundcube/config.inc.php
sed -i'' "s/^#\ *Alias/\tAlias/" /etc/apache2/conf-enabled/roundcube.conf
mkdir /var/samba
chown games /var/samba
chmod 755 /var/samba
echo '[global]
unix charset = UTF-8
dos charset = cp866
workgroup = WORKGROUP
passdb backend = tdbsam
security = user
log file = /var/log/samba/log.%m
max log size = 1000
panic action = /usr/share/samba/panic-action %d
[storage]
comment = Corporate file storage
path = /var/samba
guest ok = no
read only = no
force user = games
[printers]
comment = All Printers
browseable = no
path = /var/tmp
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no' > /etc/samba/smb.conf
init 6
Создаём файл при помощи любого текстового редактора, я использую vim.tiny, так-как он установлен по умолчанию, с именем например server.sh
ivan@debian12:~$ vim.tiny server.sh
И вставляем текст из буфера обмена при помощи Shift+Insert, нажимаем :wq и "Enter".
В результате у нас появится текстовый файл с именем server.sh, в Linux нет понятия расширения файлов, с точки зрения операционной системы все файлы одинаковые, они отличаются друг от друга только способом обработки, а расширения ставятся в основном для людей, чтобы было примерно понятно, что это за файл, а операционная система на расширения никак не ориентируется.
ivan@debian12:~$ ls
Запускаем его на выполнение
ivan@debian12:~$ sudo bash server.sh
Так как этой командой мы явно указываем интерпретатор bash, для выполнения этого файла, то его не обязательно делать исполняемым. А вот если запускать его по другому, например:
ivan@debian12:~$ sudo ./server.sh
То его сначала надо сделать исполняемым
ivan@debian12:~$ sudo chmod +x server.sh
После запуска последуют три просьбы:
Ввести имя хоста: server и нажимаем "Enter"
Ввести суффикс доменного имени: corp1.un и нажимаем "Enter"
Ввести четвёртый октет ip адреса, то-есть эта цифра будет подставлена в конец ip 172.16.1.[цифра]: 2 и нажимаем "Enter".
Начнётся процесс установки и настройки П.О.
После перезагрузки виртуальной машины, необходимо будет добавить пользователя ivan в базу данных samba, для этого снова подключаемся к уже настроенной машине "server"с "gate", можно и по имени хоста:
ivan@gate:~$ ssh server
И добавляем пользователя ivan в samba
ivan@server:~$ sudo smbpasswd -a ivan
Придумываем м вводим пароль на вход в шару, у меня будет linux12345
Ну и далее можно проверить работоспособность настроенных сервисов. Почты, файлового сервера, веб сервера. Как мы делали выше, при ручной настройке машины "server".
Проверка samba сервера.
Проверка страницы сайта.
Проверка веб страницы почты.
Проверка оправки письма пользователю root.
Чтение письма от пользователя ivan: sudo cat /var/mail/root
Website Builder Software