<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Debian &#8902; Clip-Clap</title>
	<atom:link href="https://clip-clap.ru/category/it/%D1%81%D0%BE%D1%84%D1%82-%D0%B8-%D0%BE%D1%81/linux/debian/feed/" rel="self" type="application/rss+xml" />
	<link>https://clip-clap.ru/category/it/софт-и-ос/linux/debian/</link>
	<description></description>
	<lastBuildDate>Mon, 16 Nov 2020 02:35:42 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.8</generator>

<image>
	<url>https://clip-clap.ru/wp-content/uploads/2020/07/cropped-favicon-32x32.png</url>
	<title>Debian &#8902; Clip-Clap</title>
	<link>https://clip-clap.ru/category/it/софт-и-ос/linux/debian/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Бэкап и перенос linux (centos, debian, ubuntu) сервера с помощью Veeam Agent for Linux</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf-%d0%b8-%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-linux-centos-debian-ubuntu-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf-%d0%b8-%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-linux-centos-debian-ubuntu-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 20:05:10 +0000</pubDate>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1581</guid>

					<description><![CDATA[<p>Есть множество способов выполнить резервное копирование отдельной информации или целых серверов. Я хочу рассказать о самом простом способе полного бэкапа</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf-%d0%b8-%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-linux-centos-debian-ubuntu-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c/">Бэкап и перенос linux (centos, debian, ubuntu) сервера с помощью Veeam Agent for Linux</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Есть множество способов выполнить резервное копирование отдельной информации или целых серверов. Я хочу рассказать о самом простом способе полного бэкапа сервера и переноса его на другое железо, если будет такая необходимость. Делается все это очень просто, без лишних телодвижений с помощью бесплатного Veeam Agent for Linux FREE.</p>


</br>



<p>Ранее я уже неоднократно рассматривал вопрос резервного копирования данных или целых серверов linux. Конкретно в этих статьях:</p>



<ul><li><a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/backup-linux-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-duplicity/" target="_blank" rel="noreferrer noopener">Бэкап сервера с помощью Duplicity</a>.</li><li><a href="https://clip-clap.ru/it/%d1%81%d0%b4%d0%b5%d0%bb%d0%b0%d1%82%d1%8c-%d1%80%d0%b5%d0%b7%d0%b5%d1%80%d0%b2%d0%bd%d1%83%d1%8e-%d0%ba%d0%be%d0%bf%d0%b8%d1%8e-%d1%81%d0%b0%d0%b9%d1%82%d0%b0-%d0%bd%d0%b0-%d1%8f%d0%bd%d0%b4%d0%b5/" target="_blank" rel="noreferrer noopener">Создание резервной копии на Яндекс.Диске</a>.</li><li><a href="http://Rsync настройка бэкапа на CentOS/Debian/Ubuntu" target="_blank" rel="noreferrer noopener">Настройка Rsync для бэкапа данных</a>.</li></ul>



<p>Забэкапить сразу весь сервер можно, например, с помощью Duplicity. Но вот восстановить его на другом железе будет не так просто. Помимо данных нужно будет, как минимум, позаботиться о разметке диска, установке загрузчика. На это необходимо затратить некоторые усилия и немного разбираться в теме&nbsp;initramfs и grub. Сам я не очень разбираюсь в нюансах работы этих инструментов и очень не люблю с ними возиться.</p>



<p>Некоторое время назад появился отличный бесплатный продукт для бэкапа всего сервера целиком. Речь идет о&nbsp;<a href="https://www.veeam.com/ru/linux-backup-free-download.html" target="_blank" rel="noreferrer noopener">Veeam Agent for Linux FREE</a>. С его помощью можно сделать полный backup сервера, положить его куда-нибудь по&nbsp;<strong>smb</strong>&nbsp;или&nbsp;<strong>nfs</strong>, потом загрузиться с live cd и восстановить из бэкапа на другом железе.</p>



<p>Сразу расскажу о некоторых нюансах работы бесплатной версии, с которыми столкнулся в процессе эксплуатации замечательного продукта от veeam.</p>



<ol><li>Бэкап можно сделать либо всего сервера сразу, либо отдельного диска, либо отдельных папок и файлов. При выборе бэкапа всего диска или сервера, нельзя задать исключения для отдельных папок или файлов. Это очень неудобно, но увы и ах, таков функционал. Исключения можно сделать только если вы делаете бэкап на уровне папок.</li><li>Бэкап можно положить локально на соседний раздел, если делаете резервную копию раздела, локально в папку &#8212; если делаете бэкап файлов и папок. Если бэкапите всю систему целиком, то удаленно по smb и nfs. К сожалению, по ftp или sftp программа не работает.</li></ol>



<p>В качестве хранилища для архивов может выступать репозиторий&nbsp;Veeam Backup &amp; Replication. Но я не рассматриваю этот вариант, так как в данном случае использую только бесплатное решение.</p>



<p>Мне очень хотелось настроить резервную копию всего сервера на Яндекс.Диск, но, к сожалению, у меня это не получилось из-за технических ограничений. Яндекс.Диск подключается к системе через&nbsp;<strong>webdav</strong>. Для того, чтобы сделать резервную копию всей системы, нужно бэкапить либо всю систему сразу, либо образ диска. Если у вас небольшой веб сервер, то скорее всего на нем только один раздел. На этом же разделе хранится кэш, который использует webdav для передачи файлов. Без кэша он работать не умеет.</p>



<p>Думаю вы уже поняли, в чем проблема сделать полный backup сервера с помощью Veeam Agent for Linux на Яндекс.Диск по webdav. Вы не сможете добавить в исключения папку с кэшом от webdav. В итоге, во время бэкапа с помощью veeam будет расти папка с кэшом webdav, которая, в свою очередь, будет бэкапиться. В итоге, свободное место на диске закончится, бэкап прервется.</p>



<p>Я подробно описал ситуацию с Яндекс.Диском, потому что пространство на нем не дорого стоит. Я часто его использую в повседневной жизни, настраиваю бэкапы, храню данные и т.д. В общем, мне он нравится по ряду причин. Для того, чтобы бэкапить весь сервер целиком, вам придется найти место для архивных копий с доступом по&nbsp;<strong>smb</strong>&nbsp;или&nbsp;<strong>nfs</strong>. Таких предложений не очень много на рынке. Практически не из чего выбирать, я специально искал.</p>


</br>



<p>Остановился вот на этом варианте &#8212; <a href="http://my.keyweb.ru/aff.php?aff=217&amp;page=keydisc" target="_blank" rel="noreferrer noopener nofollow">KeyDisk</a>. После оплаты, вам дают адрес сервера, логин и пароль. Вы можете сразу же подключаться по smb к хранилищу. Можно прям в windows через два обратных слеша зайти или подмонтировать хранилище к linux серверу.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-01.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-01.png" alt="Подключение сетевого диска keyweb в windows" class="wp-image-5549"/></a></figure></div>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-02.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-02.png" alt="Подключение сетевого диска keyweb в linux" class="wp-image-5550"/></a></figure></div>



<p><a href="https://my.keyweb.ru/aff.php?aff=182&amp;page=keydisc" target="_blank" rel="noreferrer noopener nofollow">KeyDisk</a> стоит примерно 350р. в месяц за 100 гигов. Не очень дешево, конечно, в сравнении с облачными сервисами, но все равно не дорого. Похожих предложений с доступом по smb я лично вообще не нашел в принципе. Этот объем позволит вам забэкапить небольшой веб сервер с глубиной архива в несколько недель или месяцев, в зависимости от того, сколько данных у вас на нем хранится.</p>



<p>Дальше я подробно на конкретном примере расскажу как все настроить и восстановить или перенести сервер целиком, если понадобится. Причем переносить буду вообще на другое железо. Но обо всем по порядку.</p>



<h2 class="wp-block-heading">Установка&nbsp;Veeam Agent for Linux</h2>



<p>Для установки&nbsp;Veeam Agent for Linux необходимо подключить репозиторий veeam под нужную вам систему. Это можно сделать либо руками, либо скачать файл с репозиторием в виде&nbsp;<strong>rpm</strong>&nbsp;или&nbsp;<strong>deb</strong>&nbsp;пакета. Сделать это можно на странице с описанием продукта.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-03.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-03.png" alt="Загрузка Veeam agent для linux" class="wp-image-5551"/></a></figure></div>



<p>Для того, чтобы получить доступ к разделу с загрузками, придется зарегистрироваться. Выбираете тип системы и скачиваете репу.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-04.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-04.png" alt="Выбор типа системы" class="wp-image-5552"/></a></figure></div>



<p>Чуть ниже рекомендую сразу же скачать&nbsp;<strong>Veeam Linux Recovery Media</strong>. Он нам понадобится, когда мы будем переносить сервер на другое железо или восстанавливать из бэкапа.</p>



<p>Копируем файл с репозиторием на сервер и устанавливаем его. На момент написания статьи, файл можно было скачать по прямой ссылке.</p>



<pre class="wp-block-preformatted"># cd /root
# wget https://download2.veeam.com/veeam-release-el7-1.0-1.x86_64.rpm
# rpm -Uhv veeam-release-el7-1.0-1.x86_64.rpm</pre>



<p>Обновляем репозитории и устанавливаем veeam.</p>



<pre class="wp-block-preformatted"># yum update
# yum install veeam</pre>



<p>Все,&nbsp;Veeam Agent for Linux установлен и готов к работе.</p>


</br>



<h2 class="wp-block-heading">Настройка полного бэкапа сервера</h2>



<p>Сделать бэкап с помощью&nbsp;Veeam Agent for Linux очень просто. Вариантов настроек не так много, можете сами все проверить и посмотреть. Я для примера рассмотрю вариант с созданием полного бэкапа всей системы и перенос ее на другое железо. Создаем задачу для резервного копирования сервера на наше хранилище по smb.</p>



<pre class="wp-block-preformatted"># veeam</pre>



<p>Нам сразу же предлагают указать файл с лицензией. Так как у нас лицензии нет, то отказываемся. Нас встречает главное окно программы.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-05.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-05.png" alt="Главный экран программы для бэкапа линукса" class="wp-image-5553"/></a></figure></div>



<p>Нажимаем&nbsp;<strong>C (configure)</strong>&nbsp;для настройки задания на backup. Задаем любое имя задания, затем указываем, что будем делать полный бэкап сервера.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-06.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-06.png" alt="Выбор режима резервных копий" class="wp-image-5554"/></a></figure></div>



<p>В качестве приемника для архива системы, указываем&nbsp;<strong>Shared Folder</strong>.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-07.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-07.png" alt="Место хранения бэкапа сервера" class="wp-image-5555"/></a></figure></div>



<p>Далее нужно ввести параметры доступа к хранилищу бэкапов. Я использую свои от системы&nbsp;<a href="https://my.keyweb.ru/aff.php?aff=182&amp;page=keydisc" target="_blank" rel="noreferrer noopener">KeyDisk</a>.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-08.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-08.png" alt="Параметры подключения диска для архивных копий по smb" class="wp-image-5556"/></a></figure></div>



<p>В пункте <strong>Restore Points</strong> указывается глубина архива. Это число копий, которые будут храниться на сервере. Если делать бэкап каждый день и указать число 14, то будут храниться резервные копии системы за последние 14 дней. Если делать будете через день, то за 28 дней и т.д.</p>


</br>



<p>Можно создавать несколько заданий с различной глубиной архива. Например, каждый день с глубиной 7 копий, раз в неделю с глубиной 4, и раз в месяц с глубиной в 12. Таким образом у вас всегда будут последние 7 бэкапов системы на этой неделе. Потом по одному бэкапу в неделю за последний месяц и 12 бэкапов по месяцам в течении последнего года.</p>



<p>Если получите ошибку:</p>



<pre class="wp-block-preformatted">Current system does not support cifs. Please install cifs client package.</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-09.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-09.png" alt="" class="wp-image-5557"/></a></figure></div>



<p>Установите пакет&nbsp;<strong>cifs</strong>. В CentOS вот так:</p>



<pre class="wp-block-preformatted">#&nbsp;yum install cifs-utils</pre>



<p>И так в Debian/Ubuntu:</p>



<pre class="wp-block-preformatted">#&nbsp;apt install cifs-utils</pre>



<p>Запускайте заново veeam и продолжайте. После настройки Destination, предлагается указать скрипты для выполнения перед и после бэкапа. Нам сейчас это не надо. Далее настраиваем расписание и запускаем задание на архивацию в конце настройки.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-10.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-10.png" alt="Расписание резервных копий" class="wp-image-5558"/></a></figure></div>



<p>Запустилась архивация. Можно следить за ее прогрессом.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-11.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-11.png" alt="Процесс резервного копирования сервера" class="wp-image-5559"/></a></figure></div>



<p>После завершения архивации системы, можно проверить содержимое сетевого хранилища, зайдя на него прямо из винды.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-12.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-12.png" alt="Проверка архива с бэкапами" class="wp-image-5560"/></a></figure></div>



<p>На этом настройку полного бэкапа сервера мы завершили. Резервная копия системы лежит в надежном месте. Попробуем теперь с нее восстановиться.</p>


</br>



<h2 class="wp-block-heading">Перенос или восстановление linux сервера</h2>



<p>Представим теперь ситуацию, что наш веб, или какой-нибудь другой сервер умер, и нам надо восстановить систему в другом месте. Выполним полное восстановление всего сервера с помощью созданной ранее резервной копии. Для этого нам понадобится&nbsp;<strong>Veeam Linux Recovery Media</strong>, который мы скачали ранее.</p>



<p>Для восстановления системы нужно соблюсти два обязательных условия:</p>



<ol><li>Готовим новый сервер с диском, который должен быть не меньше диска исходного сервера. Это обязательное условие, иначе восстановление системы даже не начнется. Veeam скажет, что размер диска недостаточный и не предложит больше никаких вариантов восстановления.</li><li>Оперативной памяти для системы должно быть не меньше 1024 Мб. Если меньше, то загрузка с диска не будет выполнена. Система скажет, что она не может развернуть корневой раздел.</li></ol>



<p>Загружаемся с диска. В разделе&nbsp;<strong>Configure network</strong>&nbsp;убеждаемся, что сеть настроена, получен ip адрес, который имеет доступ к интернету. Далее выбираем&nbsp;<strong>Restore volumes</strong>&nbsp;-&gt;<strong>&nbsp;Add shared folder</strong>. Заполняем параметры доступа к хранилищу архивов.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-13.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-13.png" alt="Подключение диска с бэкапом сервера" class="wp-image-5561"/></a></figure></div>



<p>Выбираем там директорию с нашим архивом системы, которую будем восстанавливать. Далее будет показан список задач в левом столбце и список резервных копий в правом.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-14.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-14.png" alt="Список заданий резервного копирования" class="wp-image-5562"/></a></figure></div>



<p>В моем случае там только одна копия. Выбираю ее. Дальше мы видим слева список дисков нашего сервера, справа диски резервной копии.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-15.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-15.png" alt="Список разделов для восстановления" class="wp-image-5563"/></a></figure></div>



<p>У меня слева чистый диск, справа тоже один диск, на который установлен загрузчик и есть один раздел с корнем системы. Выбираем справа наш диск (не раздел с корнем!!!) и жмем&nbsp;<strong>Restore whole disk to</strong>.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-16.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-16.png" alt="Меню восстановления образа диска" class="wp-image-5564"/></a></figure></div>



<p>В качестве приемника выбираем пустой диск на новом сервере.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-17.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-17.png" alt="Выбор диска для восстановления системы" class="wp-image-5565"/></a></figure></div>



<p>Нажимаем&nbsp;<strong>S ( Start restore )</strong>. Визард покажет список действий, которые будут выполнены и попросит их подтвердить, нажатием на Enter.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-18.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-18.png" alt="Подтверждение шагов восстановления" class="wp-image-5566"/></a></figure></div>



<p>Делаем это и наблюдаем за процессом восстановления сервера centos из бэкапа.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-19.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-19.png" alt="Восстановление системы centos из бэкапа" class="wp-image-5567"/></a></figure></div>



<p>Дожидаемся окончания переноса сервера, выбираем перезагрузку и извлекаем загрузочный CD. Грузимся с жесткого диска.</p>



<p>Дальше может быть много различных вариантов. Если вы переносите сервер на тот же гипервизор, то проблем скорее всего не будет, и все заведется сразу. Если же гипервизор другой, то могут быть варианты, в зависимости от ситуации.</p>


</br>



<h2 class="wp-block-heading">Перенос виртуальной машины с KVM на Hyper-V</h2>



<p>В моем случае я переношу сервер с KVM на Hyper-V. После загрузки системы я получаю такую картину.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-20.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-20.png" alt="Ошибка после переноса с kvm на hyper-v" class="wp-image-5568"/></a></figure></div>



<p>Сервер начинает бесконечно висеть в подобном состоянии с такими характерными ошибками:</p>



<pre class="wp-block-preformatted">Warning: dracut-initqueue timeout starting timeout scripts</pre>



<pre class="wp-block-preformatted">a start job is running for dev-disk-by ......</pre>



<p>Начинаю разбираться в чем может быть дело. Конечно, тут решение проблемы будет зависеть от конкретной ситуации. А успешность решения от квалификации сисадмина. Я уже немного повозился с подобными переносами и примерно представляю, в чем тут может быть проблема. Частично я эту тему затрагивал, когда делал&nbsp;<a href="https://clip-clap.ru/it/%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d1%85-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd-%d1%81-xenserver-%d0%bd%d0%b0-hyper-v/" target="_blank" rel="noreferrer noopener">перенос виртуальных машин с XenServer на Hyper-V</a>. Но там была другая проблема, связанная с кастомным ядром от Xen.</p>



<p>В нашей ситуации с переносом виртуальной машины с KVM на&nbsp;Hyper-V проблема в другом. У нас поменялось имя диска. Нам нужно изменить это имя в&nbsp;<strong>fstab</strong>&nbsp;и в конфиге&nbsp;<strong>grub</strong>. До кучи я еще собрал заново&nbsp;initramfs, но не уверен на 100%, что в данном случае это нужно было делать. Я сделал на всякий случай сразу все за один заход.</p>



<p>Итак, загружаемся с установочного диска CentOS 7 и выбираем режим&nbsp;<strong>Rescue a CentOS system</strong>. Подробно об этом рассказывал в упомянутой ранее статье с переносом от xen. Выбираем первый режим запуска.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-21.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-21.png" alt="Восстановление системы centos после переноса c kvm на hyper-v" class="wp-image-5569"/></a></figure></div>



<p>Дальше работаем в консоли. Смотрим, как называется наш диск.</p>



<pre class="wp-block-preformatted"># fdisk -l</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-22.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-22.png" alt="Список дисков" class="wp-image-5570"/></a></figure></div>



<p>У меня это&nbsp;<strong>sda</strong>, а на прошлом сервере он назывался&nbsp;<strong>vda</strong>. Нам нужно внести эти изменения в 2 файла:</p>



<ol><li>/etc/fstab</li><li>/boot/grub2/grub.cfg</li></ol>



<p>Диск восстановления в самом начале мог сам смонтировать системный раздел в директорию<em>/mnt/sysimage</em>. Если он этого не сделает по какой-то причине, то сделайте это сами:</p>



<pre class="wp-block-preformatted"># mount /dev/sda1 /mnt/sysimage</pre>



<p>Теперь нам надо сделать chroot в систему, предварительно смонтировав туда информацию о текущей системе. Выполняем команды:</p>



<pre class="wp-block-preformatted"># mount --bind /proc /mnt/sysimage/proc
# mount --bind /dev /mnt/sysimage/dev 
# mount --bind /sys /mnt/sysimage/sys 
# mount --bind /run /mnt/sysimage/run 
# chroot /mnt/sysimage</pre>



<p>Мы загрузились в окружение нашего сервера. Тут можете использовать установленный у вас на сервере текстовый редактор. С его помощью изменяете имена дисков в файлах&nbsp;<em>/etc/fstab</em>&nbsp;и&nbsp;<em>/boot/grub2/grub.cfg</em>. Можете просто автозаменой поменять имена.</p>



<p>Теперь соберем новый&nbsp;<strong>initramfs</strong>. Идем в директорию&nbsp;<em>/boot</em>&nbsp;и смотрим там последнюю версию ядра.</p>



<pre class="wp-block-preformatted"># cd /boot
# ls -l | grep initramfs</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-23.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2017/08/linux-backup-and-restore-23.png" alt="Генерируем новый initramfs" class="wp-image-5571"/></a></figure></div>



<p>В данном случае просто смотрим самые высокие цифры. Соберем новый initramfs в соответствии с версией ядра.</p>



<pre class="wp-block-preformatted">#&nbsp;dracut initramfs-3.10.0-514.26.2.el7.x86_64.img 3.10.0-514.26.2.el7.x86_64</pre>



<p>В завершении установим измененный загрузчик на наш диск:</p>



<pre class="wp-block-preformatted"># grub2-install /dev/sda</pre>



<p>Перезагружаем сервер. После этих изменений, у меня благополучно все загрузилось. Перенос виртуальной машины с KVM на Hyper-V выполнен полностью. Причем, у нас не было доступа к образу системы. Хотя подобная ошибка скорее всего все равно возникла бы, даже если бы мы конвертировали и переносили готовый образ.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Изначально планировал написать небольшую заметку на тему использования Veeam для бэкапа сервера. Но в процессе получилось разобрать еще и перенос сервера с одного гипервизора на другой. Еще раз повторюсь, кому показалось это слишком сложным. Если вы будете бэкапить и восстанавливать сервер в рамках одного и того же гипервизора, то описанных выше проблем у вас не будет. Все пройдет гладко.</p>



<p>При переносе с железа на виртуальную машину или наоборот, тоже скорее всего возникнут какие-нибудь проблемы. Не существует софта или готового решения, которое бы позволило все это выполнить в автоматическом режиме. &nbsp;С проблемами загрузки придется разбираться по ходу дела. Но две основные проблемы я разобрал:</p>



<ol><li>Неподходящие версии ядер. После переноса нужно будет переустановить или обновить ядро.</li><li>Разные имена дисков или меток разделов. Нужно будет их привести в соответствие с новым железом.</li></ol>



<p>Это наиболее популярные проблемы. С другими мне не приходилось сталкиваться. Хотя не сказать, что мне часто приходилось переносить сервера, но некоторый опыт есть. Думаю, эта статья будем многим полезна, так как подобный перенос не очень раскрыт в статьях в интернете. По крайней мере мне не попадались хорошие гайды на эту тему. Разбираюсь обычно сам с помощью гугления по англоязычному сегменту.</p>


</br>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf-%d0%b8-%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-linux-centos-debian-ubuntu-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c/">Бэкап и перенос linux (centos, debian, ubuntu) сервера с помощью Veeam Agent for Linux</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf-%d0%b8-%d0%bf%d0%b5%d1%80%d0%b5%d0%bd%d0%be%d1%81-linux-centos-debian-ubuntu-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Пошаговая настройка роутера на Debian</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%bf%d0%be%d1%88%d0%b0%d0%b3%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%80%d0%be%d1%83%d1%82%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-debian/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%bf%d0%be%d1%88%d0%b0%d0%b3%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%80%d0%be%d1%83%d1%82%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-debian/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 08 Aug 2020 22:19:36 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[роутер]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1479</guid>

					<description><![CDATA[<p>Ранее я уже рассматривал настройку программных роутеров на операционных системах freebsd и centos. Сегодня я хочу настроить интернет шлюз для</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%bf%d0%be%d1%88%d0%b0%d0%b3%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%80%d0%be%d1%83%d1%82%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-debian/">Пошаговая настройка роутера на Debian</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ранее я уже рассматривал настройку программных роутеров на операционных системах freebsd и centos. Сегодня я хочу настроить интернет шлюз для локальной сети на основе популярного linux дистрибутива Debian. Выполним подготовку сервера и реализуем основной функционал, необходимый для выхода в интернет из локальной сети.</p>


</br>



<p>Я буду работать со следующим сервером:</p>



<pre class="wp-block-preformatted"># uname -a
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux
# cat /etc/debian_version
8.3</pre>



<p>Если у вас еще нет готового сервера, то рекомендую статью на тему установки debian. Там подробно описан весь процесс от и до.</p>



<p>На сервере имеются 2 сетевых интерфейса:</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Интерфейс</strong></td><td><strong>Описание</strong></td><td><strong>IP</strong></td></tr><tr><td>eth0</td><td>внешний интерфейс, подключен к провайдеру, настройки получает по dhcp автоматически</td><td>192.168.1.24</td></tr><tr><td>eth1</td><td>внутренний интерфейс, смотрит в локальную сеть, статический ip адрес</td><td>10.0.15.1</td></tr></tbody></table></figure>



<p>Файл конфигурации сетевых интерфейсов выглядит следующим образом:</p>



<pre class="wp-block-preformatted"># cat /etc/network/interfaces

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug eth1
iface eth1 inet static
address 10.0.15.1
netmask 255.255.255.0</pre>



<p>Как <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d1%81%d0%b5%d1%82%d0%b5%d0%b2%d1%8b%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%8b-%d0%b2-debian/" target="_blank" rel="noreferrer noopener">настроить сеть в debian</a> я подробно рассказал отдельно. Если вы еще не сделали это и не выполнили <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%b1%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-debian-%d0%bf%d0%be%d1%81%d0%bb%d0%b5-%d1%83%d1%81%d1%82/" target="_blank" rel="noreferrer noopener">предварительную настройку debian</a>, то рекомендую ознакомиться с материалами.</p>



<p>Если у вас недостаточно опыта и вы не чувствуете в себе сил разобраться с настройкой шлюза самому с помощью консоли сервера &#8212; попробуйте дистрибутив на основе centos для организации шлюза и прокси сервера в локальной сети &#8212; clearos. С его помощью можно через браузер настроить весь необходимый функционал. В отдельной статье я подробно рассказал об <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%88%d0%bb%d1%8e%d0%b7%d0%b0-%d0%b8-%d0%bf%d1%80%d0%be%d0%ba%d1%81%d0%b8-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-%d0%b1%d0%b0/" target="_blank" rel="noreferrer noopener">установке clearos</a>.</p>


</br>



<h2 class="wp-block-heading">Подготовка шлюза</h2>



<p>Выше я привел ссылку на подробную статью с описанием настройки сервера общего назначения. Сейчас мы выполним некоторые подготовительные действия без подробностей и описания. Их&nbsp;вы можете почитать отдельно. Сейчас просто необходимые команды.</p>



<p>Сеть на будущем программном роутере настроили, доступ в интернет на сервере есть. Обновим его:</p>



<pre class="wp-block-preformatted"># apt-get update
# apt-get upgrade</pre>



<p>Установим MC, мне в нем удобнее всего работать, в том числе в редакторе&nbsp;<strong>mcedit</strong>:</p>



<pre class="wp-block-preformatted"># apt-get -y install mc</pre>



<p>Настроим часовой пояс, если раньше не сделали это:</p>



<pre class="wp-block-preformatted"># dpkg-reconfigure tzdata</pre>



<p>Устанавливаем сервис&nbsp;<strong>ntp</strong>&nbsp;для автоматического обновления времени:</p>



<pre class="wp-block-preformatted"># apt-get -y install ntp</pre>



<p>На этом основные подготовительные действия закончены. Приступаем к настройке шлюза.</p>


</br>



<h2 class="wp-block-heading">Настройка маршрутизации, firewall и nat</h2>



<p>Первым делом включим маршрутизацию пакетов между сетевыми интерфейсами. Для этого редактируем конфиг&nbsp;<em>/etc/sysctl.conf</em>:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/sysctl.conf

net.ipv4.ip_forward=1</pre>



<p>Либо раскомментируйте эту строку, либо добавьте, если ее нет. Но она по-умолчанию быть должна, закомментированная со значением 1. Применяем эту настройку:</p>



<pre class="wp-block-preformatted"># sysctl -p</pre>



<p>На выходе работы команды в консоли будет выведен измененный параметр со значением 1.</p>



<p>Теперь приступаем к самому главному &#8212; <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/centos/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-iptables-%d0%b2-centos-7/" target="_blank" rel="noreferrer noopener">настройке фаервола iptables</a> и nat в нем для обеспечения выхода в интернет из локальной сети. Я очень подробно рассмотрел эту тему в отдельной статье. Хотя там речь идет о другом дистрибутиве, сами правила iptables абсолютно одинаковые с точностью до строчки, за исключением маленького нюанса, связанного с тем, что правила нужно сохранять в другой файл для применения их после перезагрузки.</p>



<p>Я приведу здесь сразу готовый вариант файла с правилами iptables, необходимых для работы интернет шлюза в debian. В файле даны подробные комментарии ко всем значениям, так что вы без проблем разберетесь и закомментируете или наоборот раскомментируете необходимые вам значения.</p>



<p>Копируем содержимое файла и создаем скрипт с правилами на сервере:</p>



<pre class="wp-block-preformatted"># mcedit /etc/iptables.sh</pre>



<p>Вставляем в редактор правила. Редактируем их под свои нужды, обязательно заменяя переменные WAN и LAN на свои. Сохраняем файл.Прежде чем двигаться дальше предупреждаю, что все работы по настройке фаервола должны производиться только если у вас есть доступ к консоли сервера, чтобы в случае ошибки и потери удаленного доступа вы смогли откатить изменения. Даже если вы абсолютно уверены в своих знаниях, вас может подвести банальная ошибка или опечатка. Я сам, к сожалению, сталкивался с такими ситуациями, поэтому считаю необходимым предупредить об этом вас.</p>



<p>Делаем файл с правилами исполняемым:</p>



<pre class="wp-block-preformatted"># chmod 0740 /etc/iptables.sh</pre>


</br>



<p>Прежде чем применить новые правила, посмотрим на текущие:</p>



<pre class="wp-block-preformatted"># iptables -L -v -n</pre>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/01/debian-gateway-01.png" alt="список правил iptables в debian" class="wp-image-2777"/></figure></div>



<p>Видим, что на настраиваемом роутере firewall полностью открыт. Теперь применим новые правила и посмотрим на результат:</p>



<pre class="wp-block-preformatted">#&nbsp;/etc/iptables.sh</pre>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/01/debian-gateway-02.png" alt="применение новых правил iptables на шлюзе" class="wp-image-2778"/></figure></div>



<p>Все в порядке, правила применились, доступ к серверу я не потерял. Теперь сделаем так, чтобы новые правила применялись после перезагрузки. В последней строчке скрипта есть команда:</p>



<pre class="wp-block-preformatted">/sbin/iptables-save &nbsp;&gt; /etc/iptables.rules</pre>


</br>



<p>С ее помощью готовый набор правил iptables выгружаются в файл. Нам нужно сделать так, чтобы эти правила применялись при включении сетевого интерфейса во время загрузки сервера. Для этого открываем файл&nbsp;<em>interfaces</em>&nbsp;на редактирование и добавляем в самый конец строчку:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/network/interfaces

post-up iptables-restore &lt; /etc/iptables.rules</pre>



<p>Для проверки перезагружаем шлюз&nbsp;и проверяем, все ли в порядке. По сути основная настройка программного роутера на debian завершена. Осталось сделать небольшое дополнение и настроить&nbsp;<strong>dhcp</strong>&nbsp;и&nbsp;<strong>dns</strong>&nbsp;сервер в локальной сети. Я для этих целей использую простой и легкий в настройке dnsmasq.</p>



<h2 class="wp-block-heading">Установка и настройка dnsmasq в Debian</h2>



<p>Выполним установку dnsmasq на дебиан:</p>



<pre class="wp-block-preformatted"># apt-get install -y&nbsp;dnsmasq</pre>



<p>Сделаем минимальную настройку программы. Нам нужно просто выдавать сетевые настройки пользователям. Для этого приводим конфигурационный файл&nbsp;dnsmasq к следующему виду:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/dnsmasq.conf

domain-needed
bogus-priv
interface=eth1
dhcp-range=eth1,10.0.15.50,10.0.15.150,24h</pre>



<p>В данном случае мы будем выдавать пользователям ip адреса в диапазоне от&nbsp;10.0.15.50 до 150. Сохраняем конфиг, добавляем программу в автозагрузку и запускаем.</p>



<pre class="wp-block-preformatted"># insserv dnsmasq
# /etc/init.d/dnsmasq start</pre>



<p>Теперь можно запускать компьютер пользователя локальной сети, получать сетевые настройки по dhcp и проверять работу интернет шлюза.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/01/debian-gateway-03.png" alt="получение сетевых настроек по dhcp" class="wp-image-2779"/></figure></div>



<p>Посмотреть выданные leases можно в файле&nbsp;<em>/var/lib/misc/dnsmasq.leases</em>. На этом настройка интернет шлюза на debian 8 закончена. Все что нужно для обеспечения доступа в интернет из локальной сети сделано. Получился программный роутер с широкими возможностями по наращиванию функционала.</p>


</br>



<h2 class="wp-block-heading">Просмотр загрузки сети с помощью iftop</h2>



<p>Теперь представим ситуацию, что кто-то забил весь интернет канал и вам надо быстро выяснить, кто это сделал. По-умолчанию, никаких подручных и удобных средств на шлюзе для этого нету. Установим одно из таких средств &#8212; программу&nbsp;<strong>iftop</strong>. Это простая консольная утилита, которая дает возможность оперативно посмотреть статистику загруженности сетевого интерфейса в реальном времени.</p>



<p>Устанавливаем iftop на debian:</p>



<pre class="wp-block-preformatted"># apt-get install -y iftop</pre>



<p>Для просмотра активности сетевого интерфейса, запускаем утилиту, указывая необходимый ключ:</p>



<pre class="wp-block-preformatted"># iftop -i eth1</pre>



<p>Чтобы увидеть порты, по которым идет трафик, добавляем ключ -P:</p>



<pre class="wp-block-preformatted"># iftop -i eth1 -P</pre>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/01/debian-gateway-04.png" alt="анализ сетевой активности на сервере" class="wp-image-2780"/></figure></div>



<p>На основе этой картинки уже можно сделать определенные выводы по использованию интернет канала. Обращаю внимание, что я смотрю загрузку локального интерфейса eth1. Если смотреть на eth0, то мы увидим только исходящие соединения сервера.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Вот так легко и быстро можно настроить роутер, маршрутизатор или шлюз в интернет. Названия разные, а суть одна. В данном случае я использовал операционную систему Debian, но схожий функционал легко организовать на Freebsd или CentOS. Для решения текущей задачи разница в работе не будет заметна. Каждый выбирает то, что больше нравится и к чему привык.</p>



<p>Пройдемся быстренько по этапам того, что сделали:</p>



<ol><li>Подготовили сервер Debian к настройке шлюза.</li><li>Настроили маршрутизацию, iptables, нат. Проверили, что весь функционал восстанавливается после перезагрузки.</li><li>Установили и настроили простой dhcp сервер и кэширующий dns сервер &#8212; dnsmasq. С его помощью автоматизировали поучение сетевых настроек пользователями.</li><li>Установили простое средство мониторинга сетевой активности в консоли в режиме реального времени с помощью утилиты iftop.</li></ol>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%bf%d0%be%d1%88%d0%b0%d0%b3%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%80%d0%be%d1%83%d1%82%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-debian/">Пошаговая настройка роутера на Debian</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%bf%d0%be%d1%88%d0%b0%d0%b3%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%80%d0%be%d1%83%d1%82%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-debian/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Настройка pptp сервера на Debian</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-pptp-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-debian/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-pptp-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-debian/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Sat, 08 Aug 2020 21:49:48 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[pptp]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1473</guid>

					<description><![CDATA[<p>Возникла необходимость настроить vpn сервер для доступа к локальной сети организации. В качестве vpn сервера я предпочитаю использовать openvp за</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-pptp-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-debian/">Настройка pptp сервера на Debian</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Возникла необходимость настроить vpn сервер для доступа к локальной сети организации. В качестве vpn сервера я предпочитаю использовать openvp за ее гибкость, удобство и простоту настройки. Но в данном случае мне был нужен именно pptp сервер с возможностью автоматической передачи маршрутов клиентам. С последним пришлось немного повозиться.</p>


</br>



<p>Сама по себе настройка pptp сервера на Debian очень проста не представляет никакой сложности. Все настраивается за 10 минут. Проблема здесь в другом. По-умолчанию, windows при подключении по pptp использует удаленный vpn сервер в качестве шлюза по умолчанию. За это отвечает галка в настройках vpn соединения &#171;Использовать основной шлюз в удаленной сети&#187;. При такой конфигурации весь трафик компьютера пользователя идет через vpn сервер. Это очень неудобно, да и не нужно. Эту настройку обычно отключают.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2016/11/debian-pptp-server-03.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/debian-pptp-server-03.png" alt="Отключить Использовать основной шлюз в удаленной сети" class="wp-image-4234"/></a></figure></div>



<p>Когда ее отключаешь, pptp клиент ничего не знает о маршрутах в удаленный офис. Чтобы туда попасть, маршруты нужно прописывать вручную, например так:</p>



<pre class="wp-block-preformatted">route add 192.168.0.0 mask 255.255.255.0 192.168.10.1</pre>



<figure class="wp-block-table"><table><tbody><tr><td>192.168.0.0</td><td>Сеть удаленного офиса.</td></tr><tr><td>192.168.10.1</td><td>Адрес vpn сервера</td></tr></tbody></table></figure>



<p>Этот маршрут нужно либо в командной строке прописывать, либо bat файл сделать и запускать. И то и другое неудобно, так как пользователю нужно выполнять дополнительные действия. В openvpn этот вопрос решается очень просто. Там можно на уровне сервера задать любые настройки пользователя, в том числе и маршруты. Они будут передаваться после подключения openvpn клиента. В pptp так сделать нельзя, он это не умеет. Вместо него передать маршруты может dhcp сервер, его для этого нужно специальным образом настроить. Этим мы и займемся.</p>


</br>



<h2 class="wp-block-heading">Установка pptp сервера</h2>



<p>Подразумеваю, что у вас установлен и настроен сервер.</p>



<p>Сначала установим pptp сервер:</p>



<pre class="wp-block-preformatted"># apt-get install pptpd</pre>



<p>Рисуем следующий конфиг&nbsp;<em>/etc/pptpd.conf</em>:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/pptpd.conf</pre>



<pre class="wp-block-preformatted">option /etc/ppp/pptpd-options
logwtmp
bcrelay eth1:1
localip 192.168.10.1
remoteip 192.168.10.30-50</pre>



<figure class="wp-block-table"><table><tbody><tr><td>eth1:1</td><td>Виртуальный интерфейс. Нужен для передачи dhcp параметров клиентам pptp.</td></tr><tr><td>192.168.10.1</td><td>IP адрес pptp сервера в vpn сети</td></tr><tr><td>192.168.10.30-50</td><td>Диапазон адресов, которые будут назначены pptp пользователям в vpn сети</td></tr></tbody></table></figure>



<p>Редактируем файл с дополнительными параметрами&nbsp;<em>/etc/ppp/options</em>:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/ppp/options</pre>



<pre class="wp-block-preformatted">ms-dns 77.88.8.1
ms-dns 8.8.4.4
require-mschap-v2
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
<strong>proxyarp</strong>
lcp-echo-interval 10
lcp-echo-failure 100
noipx
nodefaultroute</pre>



<p>Не буду подробно описывать параметры, в интернете есть описание. Обращаю внимание на&nbsp;<strong>proxyarp</strong>, без него не будет работать задуманная схема, и на&nbsp;nodefaultroute. Если вам иногда нужно ставить пользователям vpn сервер в качестве шлюза по-умолчанию, закомментируйте этот параметр. Отключить шлюз можно будет вручную на клиенте.</p>



<p>Дальше создаем учетки для подключения в файле&nbsp;<em>/etc/ppp/chap-secrets</em>:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/ppp/chap-secrets</pre>



<pre class="wp-block-preformatted">user-01 pptpd passw51 192.168.10.41
user-02 pptpd passw88 192.168.10.42
user-03 pptpd passw59 192.168.10.43
user-04 pptpd passw27 192.168.10.44</pre>



<p>Первый столбец &#8212; имя пользователя, второй &#8212; тип сервера, он всегда один и тот же, третий &#8212; пароль, четвертый &#8212; ip адрес в vpn сети, который будет назначен клиенту. Если его явно не указать, то ему будет назначен первый свободный из диапазона&nbsp;remoteip в&nbsp;pptpd.conf.</p>



<p>На этом настройка непосредственно pptp сервера закончена. Им можно пользоваться, но маршруты пользователям передаваться не будут.</p>


</br>



<h2 class="wp-block-heading">Настраиваем dhcp сервер для раздачи маршрутов</h2>



<p>У меня на сервере уже был настроен&nbsp;isc-dhcp-server, поэтому я использовал именно его. Но можно воспользоваться и dnsmasq. Я приведу пример с dhcpd. Если у вас его еще нет, то устанавливайте командой:</p>



<pre class="wp-block-preformatted"># apt-get install isc-dhcp-server</pre>



<p>Рисуем следующий конфиг /etc/dhcp/dhcpd.conf:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/dhcp/dhcpd.conf</pre>



<pre class="wp-block-preformatted">deny unknown-clients;
ddns-update-style none;

option domain-name "office";
option domain-name-servers 77.88.8.8, 8.8.4.4;
default-lease-time 604800;
max-lease-time 864001;

log-facility local7;

local-address 192.168.0.1;
subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers 192.168.0.1;
        authoritative;
        allow unknown-clients;
        option netbios-name-servers 192.168.0.1;
        option domain-name-servers 77.88.8.8, 8.8.4.4;
        option domain-name "debian.office";
        option broadcast-address 192.168.0.255;
        range 192.168.0.150 192.168.0.199;
        }

option ms-classless-static-routes code 249 = array of unsigned integer 8;
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

subnet 192.168.10.0 netmask 255.255.255.0 {
        option dhcp-server-identifier 192.168.10.1;
        authoritative;
        range 192.168.10.51 192.168.10.99;
        option ms-classless-static-routes 24, 192,168,0, 192, 168, 10, 1;
        option rfc3442-classless-static-routes 24, 192,168,0, 192, 168, 10, 1;
        option routers 192.168.10.1;
        }
</pre>


</br>



<p>Я тут не разбирался, что и зачем настроено именно так. Сервер настраивал не я, он мне достался в наследство. Мне нужно было только грамотно настроить pptpd с раздачей маршрутов. Поэтому я не расписываю все от и до, а просто делюсь рабочим конфигом, который сейчас у меня работает.</p>



<p>Подсеть 192.168.10.0 и 2 строчки с options перед ней это то, что я добавил для раздачи маршрутов pptp клиентам в vpn подсеть.</p>



<p>Теперь создадим виртуальный интерфейс, добавив в самый конец конфигурационного файла сети:</p>



<pre class="wp-block-preformatted"># mcedit /etc/network/interfaces</pre>



<pre class="wp-block-preformatted">auto eth1:1
iface eth1:1 inet static
address 192.168.10.1
netmask 255.255.255.0</pre>



<p>О настройке 2-х ip адресов на одном интерфейсе можно подробно прочитать в статье &#8212; <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d1%81%d0%b5%d1%82%d0%b5%d0%b2%d1%8b%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%8b-%d0%b2-debian/" target="_blank" rel="noreferrer noopener">настройка сети в debian</a>. В моем случае eth1 это интерфейс, который смотрит в локальную сеть, доступ к которой мы организуем с помощью vpn.</p>



<pre class="wp-block-code"><code>&#091;sc5]</code></pre>



<p>Перезапускаем сеть для применения настроек:</p>



<pre class="wp-block-preformatted"># service networking restart</pre>



<p>По сути все готово. Запускаем pptpd и dhcpd и проверяем.</p>



<pre class="wp-block-preformatted"># service isc-dhcp-server restart
# service pptpd restart</pre>



<p>У меня почему-то команда pptpd restart отрабатывает с ошибкой и не перезапускает демон. Приходится запускать вручную:</p>



<pre class="wp-block-preformatted"># service pptpd start</pre>



<p>Проверяем работу клиента windows. Список маршрутов до vpn подключения:</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/debian-pptp-server-01.png" alt="Список маршрутов до pptp подключения" class="wp-image-4235"/></figure></div>



<p>После:</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/11/debian-pptp-server-02.png" alt="Список маршрутов после pptp подключения" class="wp-image-4236"/></figure></div>



<p>Вот пример такой же конфигурации для&nbsp;<strong>dnsmasq</strong>:</p>



<pre class="wp-block-preformatted">listen-address=192.168.10.1
dhcp-range=vpn,192.168.10.50,192.168.10.99,255.255.255.0,1h
dhcp-option=tag:vpn,vendor:MSFT,2,1i
dhcp-option=tag:vpn,249,192.168.0.0/24,192.168.10.1
dhcp-option=tag:vpn,121,192.168.0.0/24,192.168.10.1</pre>



<pre class="wp-block-code"><code>&#091;sc6]</code></pre>



<p>Нашел, пока разбирался с вопросом. У себя не проверял, так как решил все на одном dhcp сервере делать, который уже был.</p>



<h2 class="wp-block-heading">Заключение</h2>



<p>Немного сложно реализуется функционал, который доступен в openvpn из коробки без дополнительных настроек. Я поэтому и не очень люблю с pptp возиться, после openvp он мне кажется не таким удобным. Но иногда приходится и его настраивать. К примеру, микротики, к сожалению, так и не научились работать с openvpn по udp, приходится использовать pptp. Да и встроенный в windows клиент тоже добавляет удобство.</p>



<p>Я немного повозился, поразбирался, прежде чем у меня получилось настроить рабочий вариант. Ключевым моментом оказался виртуальный интерфейс eth1:1, который я создал для pptp подсети. Без него у меня не работала передача маршрута.</p>


</br>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-pptp-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-debian/">Настройка pptp сервера на Debian</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-pptp-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%bd%d0%b0-debian/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Rsync настройка бэкапа на CentOS/Debian/Ubuntu</title>
		<link>https://clip-clap.ru/it/rsync-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%bd%d0%b0-centos-debian-ubuntu/</link>
					<comments>https://clip-clap.ru/it/rsync-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%bd%d0%b0-centos-debian-ubuntu/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 27 Jul 2020 13:55:00 +0000</pubDate>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Софт и ОС]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Rsync]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1518</guid>

					<description><![CDATA[<p>Существует много способов организации backup на CentOS/Debian/Ubuntu серверах &#8212; бесплатные утилиты, самописные скрипты с использованием tar, система бэкапа bacula и</p>
<p>Сообщение <a href="https://clip-clap.ru/it/rsync-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%bd%d0%b0-centos-debian-ubuntu/">Rsync настройка бэкапа на CentOS/Debian/Ubuntu</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Существует много способов организации backup на CentOS/Debian/Ubuntu серверах &#8212; бесплатные утилиты, самописные скрипты с использованием tar, система бэкапа bacula и много другое. Все это в той или иной мере я использовал или использую в своей работе. Сегодня я хочу с вами поделиться своим методом организации простого, удобного и быстрого способа настройки инкрементного backup с использованием популярной утилиты rsync на серверах под управлением CentOS/Debian/Ubuntu. Способ одинаково работает на этих истемах, небольшие отличия только в самой установке rsync, о чем я отдельно упомяну для каждой системы.</p>


</br>



<h2 class="wp-block-heading">Установка rsync на CentOS 6</h2>



<p>Устанавливаем&nbsp;xinetd для автоматического запуска rsync:</p>



<pre class="wp-block-preformatted">#&nbsp;yum install -y xinetd</pre>



<p>Устанавливаем непосредственно rsync:</p>



<pre class="wp-block-preformatted">#&nbsp;yum install -y rsync</pre>



<p>Редактируем конфиг rsync для xinetd:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/xinetd.d/rsync</pre>



<p>В конфиге находим строку&nbsp;<strong>disable = yes</strong>и меняем на&nbsp;<strong>no</strong>:</p>



<pre class="wp-block-preformatted">disable = no</pre>



<p>Запускаем xinetd:</p>



<pre class="wp-block-preformatted"># /etc/init.d/xinetd start</pre>



<p>И добавляем его в автозапуск:</p>



<pre class="wp-block-preformatted"># chkconfig xinetd on</pre>



<p>Проверяем, слушает ли xinetd 873 порт rsync:</p>



<pre class="wp-block-preformatted">#&nbsp;netstat -lnpt | grep 873

tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1431/xinetd</pre>



<p>Все в порядке, можно приступать к настройке rsync.</p>


</br>



<h2 class="wp-block-heading">Установка rsync на CentOS 7</h2>



<p>Ставим rsync:</p>



<pre class="wp-block-preformatted">#&nbsp;yum install -y rsync</pre>



<p>Добавляем в автозагрузку:</p>



<pre class="wp-block-preformatted">#&nbsp;systemctl enable rsyncd

ln -s '/usr/lib/systemd/system/rsyncd.service' '/etc/systemd/system/multi-user.target.wants/rsyncd.service'</pre>



<p>Проверяем автозагрузку:</p>



<pre class="wp-block-preformatted"># systemctl list-unit-files --type service | grep rsyncd

rsyncd.service enabled</pre>



<p>Запускаем rsync:</p>



<pre class="wp-block-preformatted"># systemctl start rsyncd</pre>



<p>Проверяем, как запустился:</p>



<pre class="wp-block-preformatted"># netstat -tulpn | grep rsync

tcp &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp;0 0.0.0.0:873 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0.0.0.0:* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LISTEN &nbsp; &nbsp; &nbsp;2782/rsync</pre>



<p>Все в порядке, можно приступать к настройке rsync.</p>


</br>



<h2 class="wp-block-heading">Установка rsync на Debian/Ubuntu</h2>



<p>Устанавливаем rsync:</p>



<pre class="wp-block-preformatted"># apt-get install -y rsync</pre>



<p>Правим&nbsp;конфиг:</p>



<pre class="wp-block-preformatted"># mcedit /etc/default/rsync</pre>



<p>Находим строку&nbsp;<strong>RSYNC_ENABLE=false</strong>и меняем на&nbsp;<strong>true</strong>:</p>



<pre class="wp-block-preformatted">RSYNC_ENABLE=true</pre>



<p>Запускаем rsync:</p>



<pre class="wp-block-preformatted"># /etc/init.d/rsync start

[ ok ] Starting rsync daemon: rsync.</pre>



<p>Проверяем, что работает:</p>



<pre class="wp-block-preformatted">#&nbsp;netstat -tulpn | grep rsync

tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1767/rsync</pre>



<p>Все в порядке, можно приступать к настройке rsync.</p>


</br>



<h2 class="wp-block-heading">Настройка rsync</h2>



<p>Теперь приступаем к настройке. Логика наших бэкапов будет следующая.&nbsp;При первом запуске мы делаем полный бэкап интересующей нас информации в папку&nbsp;<strong>current</strong>. Потом раз в сутки мы сверяем имеющийся архив с источником и делаем его вновь актуальным, перезаписывая все изменившиеся файлы, но при этом не удаляем их, а складываем в папку&nbsp;<strong>increment</strong>, где каждый день создается папка с именем в виде даты, в которую складываются все измененные файлы за текущий день. Таким образом, у нас всегда будет полный архив, актуальный на момент последней синхронизации, плюс набор папок за каждый день с изменившимися в этот день файлами. Сколько дней хранить можно выбрать по необходимости.</p>



<p>Получается у нас такая картинка:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2015/05/rsync.jpg"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/05/rsync.jpg" alt="rsync" class="wp-image-991"/></a></figure></div>



<p>Приступаем к реализации. В первую очередь настраиваем rsync на серверах источниках информации, с которых мы будем забирать данные для backup.</p>



<p>Создаем файл конфигурации rsync:</p>



<pre class="wp-block-preformatted"># mcedit /etc/rsyncd.conf</pre>



<pre class="wp-block-code"><code>pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
transfer logging = true
munge symlinks = yes

# папка источник для бэкапа
&#091;data]
path = /data
uid = root
read only = yes
list = yes
comment = Data backup Dir
auth users = backup
secrets file = /etc/rsyncd.scrt</code></pre>



<p>Создаем файл с учетными данными для подключения:</p>



<pre class="wp-block-preformatted"># mcedit /etc/rsyncd.scrt</pre>



<pre class="wp-block-preformatted">backup:12345</pre>


</br>



<p>где&nbsp;<strong>backup</strong>&nbsp;&#8212; имя пользователя,&nbsp;<strong>12345</strong>&nbsp;&#8212; пароль.<br>Делаем права на чтение только&nbsp;<strong>root</strong>, иначе rsync не запустится:</p>



<pre class="wp-block-preformatted"># chmod 0600 /etc/rsyncd.scrt</pre>



<p>После настройки перезапускаем rsync.<br>На Centos 6:</p>



<pre class="wp-block-preformatted"># /etc/init.d/xinetd restart</pre>



<p>На Centos 7:</p>



<pre class="wp-block-preformatted">systemctl restart rsyncd</pre>



<p>На Debian/Ubuntu:</p>



<pre class="wp-block-preformatted"># /etc/init.d/rsync restart</pre>



<p>Теперь идем на сервер приемник, в котором будут храниться архивные копии с серверов источников. Там создаем скрипт инкрементного бэкапа c использованием rsync:</p>



<pre class="wp-block-preformatted"># mcedit /root/bin/backup-server1.sh</pre>



<pre class="wp-block-preformatted">#!/bin/bash
date
# Папка, куда будем складывать архивы
syst_dir=/backup/
# Имя сервера, который архивируем
srv_name=server1
# Адрес сервера, который архивируем
srv_ip=10.10.1.55
# Пользователь rsync на сервере, который архивируем
srv_user=backup
# Ресурс на сервере для бэкапа
srv_dir=data
echo "Start backup ${srv_name}"
# Создаем папку для инкрементных бэкапов
mkdir -p ${syst_dir}${srv_name}/increment/
# Запускаем непосредственно бэкап с параметрами
/usr/bin/rsync -a --delete --password-file=/etc/rsyncd.scrt ${srv_user}@${srv_ip}::${srv_dir} ${syst_dir}${srv_name}/current/ --backup --backup-dir=${syst_dir}${srv_name}/increment/`date +%Y-%m-%d`/
# Чистим папки с инкрементными архивами старше 30-ти дней
/usr/bin/find ${syst_dir}${srv_name}/increment/ -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
date
echo "Finish backup ${srv_name}"</pre>


</br>



<p>Делаем скрипт исполняемым:</p>



<pre class="wp-block-preformatted"># chmod 0744 /root/bin/backup-server1.sh</pre>



<p>Создаем файл с паролем для авторизации на сервере источнике:</p>



<pre class="wp-block-preformatted"># mcedit /etc/rsyncd.scrt</pre>



<pre class="wp-block-preformatted">12345</pre>



<p>Делаем права на чтение только root, иначе rsync выдаст ошибку:<br><strong>ERROR: password file must not be other-accessible</strong><br>Исправляем это:</p>



<pre class="wp-block-preformatted"># chmod 0600 /etc/rsyncd.scrt</pre>



<p>На этом все, теперь можно запускать скрипт и ожидать его выполнения. Осталось добавить его в cron:</p>



<pre class="wp-block-preformatted"># mcedit /etc/crontab</pre>



<pre class="wp-block-preformatted">30 23 * * * root /root/bin/backup-server1.sh</pre>



<p>Я обычно создаю несколько скриптов для каждого сервера отдельно. Потом объединяю их запуск в одном общем скрипте и уже его добавляю в cron. А потом по мере необходимости редактирую уже его, добавляю или удаляю сервера.</p>



<h2 class="wp-block-heading">Ротация логов rsync</h2>



<p>Мы указали в настройках ведение лога в файл&nbsp;<em>/var/log/rsyncd.log</em>. Необходимо настроить ротацию этого лога, чтобы он не рос до бесконечности. На больших файловых серверах он очень быстро вырастет до сотен мегабайт и более.</p>



<p>Для этого создаем в папке&nbsp;<em>/etc/logrotate.d</em>&nbsp;файл с конфигурацией ротации:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/logrotate.d/rsyncd

/var/log/rsyncd.log {
size=500k
compress
rotate 4
missingok
notifempty
}</pre>



<p>С такими настройками ротация будет происходить каждый раз, когда файл лога превысит размер в 500 кб. Храниться будут 4 версии лог файла. Эти настройки вы можете сами поменять по своему усмотрению.</p>


</br>



<h2 class="wp-block-heading">Пример бэкапа windows сервера с помощью rsync</h2>



<p>Еще один пример из моей практики. Допустим, у нас есть windows сервер с некоторой информацией, которую мы хотим так же бэкапить. Никаких проблем, это делается достаточно просто.</p>



<p>Создаем на windows сервере сетевую шару с информацией. Создаем пользователя и добавляем его в доступ к этой папке. Этого пользователя мы будем использовать для подключения виндовой шары к linux серверу.</p>



<p>Монтируем шару с информацией, которую будем бэкапить:</p>



<pre class="wp-block-preformatted"># mount -t cifs //192.168.0.16/docs /mnt/docs -o user=backup,password=12345,iocharset=utf8,codepage=cp866</pre>



<p>192.168.0.16 &#8212; адрес виндовой шары<br>backup и 12345 &#8212; пользователь и пароль виндовой машины с доступом к шаре&nbsp;docs.</p>



<p>Все, теперь папку&nbsp;/mnt/docs можно использовать в качестве приемника в нашем скрипте бэкапа с rsync. Если папка примонтирована непосредственно к серверу с бэкапами, то нужно на нем самом настроить конфиг rsyncd на примере серверов источников, запустить на нем rsyncd и в скрипте в качестве ip адреса сервера указывать 127.0.0.1.</p>



<p>Я в таких случаях создаю несколько скриптов: на монтирование шары, бэкап и размонтирование, объединяю их в один и запускаю последовательно. В итоге получается, что подключаем диск, делаем бэкап и отключаем его.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/rsync-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%bd%d0%b0-centos-debian-ubuntu/">Rsync настройка бэкапа на CentOS/Debian/Ubuntu</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/rsync-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%bd%d0%b0-centos-debian-ubuntu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Установка Proxmox в Debian на raid 1</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-proxmox-%d0%b2-debian-%d0%bd%d0%b0-raid-1/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-proxmox-%d0%b2-debian-%d0%bd%d0%b0-raid-1/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Fri, 17 Jul 2020 22:26:29 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Proxmox]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=1093</guid>

					<description><![CDATA[<p>На сегодняшний день существует несколько наиболее популярных гипервизоров для построения виртуальной информационной системы. В данной статье я рассмотрю установку и</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-proxmox-%d0%b2-debian-%d0%bd%d0%b0-raid-1/">Установка Proxmox в Debian на raid 1</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>На сегодняшний день существует несколько наиболее популярных гипервизоров для построения виртуальной информационной системы. В данной статье я рассмотрю установку и настройку бесплатной системы виртуализации proxmox 6 на базе ОС Debian 10, установленной на RAID 1. В качестве гипервизоров она использует опенсорсные KVM и LXC, позволяя виртуализировать наиболее популярные ОС.</p>



<p>Некоторое время назад я узнал про систему виртуализации proxmox на базе KVM. Ранее с этим гипервизором я был знаком, но он мне не понравился из-за отсутствия удобных инструментов управления под windows. Это было давно, лет 5 назад. Мне пришлось администрировать уже настроенный гипервизор и мне это не понравилось, слишком много действий приходилось делать в консоли. Не скажу, что мне это прям не нравится, но я не вижу смысла в консоли делать то, что в других гипервизорах мышкой ты делаешь в 5 раз быстрее в gui. Свое время стараюсь экономить и использовать рационально.</p>


</br>



<p>Все изменилось, когда я решил посмотреть на <a href="http://www.proxmox.com/en/" target="_blank" rel="noreferrer noopener nofollow">Proxmox</a>. Простая установка и удобная панель управления через браузер привлекли сразу. Попробовал, потестировал, вроде все неплохо работает, управление удобное и понятное. Особенно понравились бэкапы из коробки. Не решался использовать в реальной работе, потому что не имею опыта работы c zfs, а ставить гипервизор на одиночные диски плохая идея. Раньше я использовал XenServer, установленный на mdadm raid1, пока он не перестал поддерживать такой режим работы. Proxmox почему-то не поддерживает установку на простой и понятный mdadm, но при этом есть zfs. Этот момент мне искренне не понятен, если учитывать, что proxmox работает на базе системы Debian, которая без проблем устанавливается на программный рейд.</p>



<p>В итоге я решил установить, настроить и протестировать proxmox, установленный на программный raid 1 mdadm. Диски отключал, вынимал, вставлял обратно. Все прекрасно работает. Отказоустойчивость на уровне дисков обеспечена, значит можно использовать в реальной работе. Я и использую последние пару лет. Отдельно упомяну, что меня сразу привлекло в KVM — возможность пробрасывать USB. До сих пор Hyper-V и XenServer не умеют это делать. Первый совсем не умеет, второй вроде как-то пробрасывает, но без гарантий и не все устройства работают. А в KVM без проблем получилось пробросить USB в виртуалку и воткнуть туда HASP ключ от 1С. Для малых и средних офисов это актуальная потребность.</p>



<p>Для того, чтобы установить proxmox на raid 1 пойдем окольным путем. Стандартный инсталлятор не дает нам необходимой&nbsp;возможности установки на рейд. У нас есть 2 варианта решения проблемы:</p>



<ol><li>Установка сначала голой системы Debian 10 на raid1, а затем на нее устанавливается proxmox. Конечный результат не будет отличаться от инсталляции со стандартного диска.</li><li>Установить систему proxmox на одиночный диск, а потом перенести ее&nbsp;на raid1.</li></ol>



<p>Я пробовал оба способа, первый мне показался более простым и понятным, поэтому займемся его реализацией.</p>



<h2 class="wp-block-heading">Установка proxmox на mdadm raid 1 в debian 10</h2>



<p>Первым делом нам нужно установить чистую систему <strong>Debian</strong>. На данный момент это версия <strong>10 Buster</strong>. У меня есть отдельная статья по <a href="https://serveradmin.ru/kak-skachat-i-ustanovit-debian-10-buster/" target="_blank" rel="noreferrer noopener nofollow">установке </a><a rel="noreferrer noopener" href="https://serveradmin.ru/kak-skachat-i-ustanovit-debian-10-buster/" target="_blank">Debian</a>. Там подробно описан процесс установки системы на софтовый рейд mdadm. В конце я на примере показал, что делать, когда диск выходит из строя, как его менять. Я на практическом примере продемонстрировал отказоустойчивость такого решения, поэтому не буду здесь подробно на этом останавливаться.</p>



<p>Скачивайте дистрибутив последней версии Debian. Взять его можно, к примеру, на <a href="https://serveradmin.ru/ustanovka-repozitoriya-epel-rpmforge-v-centos/#Yandex_mirror_CentOS" target="_blank" rel="noreferrer noopener nofollow">Yandex.Mirror</a>, конкретно <a href="http://mirror.yandex.ru/debian-cd/current/amd64/iso-cd/" target="_blank" rel="noreferrer noopener nofollow">здесь</a>. Для установки подойдет образ <strong>CD-1</strong> либо <strong>netinst</strong>. Начинайте стандартную установку и доходите до пункта настройки жесткого диска. Я буду использовать консольное отображение, не графическое. Мне так удобнее. Принципиальных отличий нет, можете делать по аналогии, если начали установку в графическом режиме. Когда дело дойдет до настройки диска, выбирайте вариант ручной разметки.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-01.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-01.png" alt="Ручная разметка диска" class="wp-image-9418"/></a></figure>



<p>Если вы делаете установку на чистые диски, то вас должна встретить такая картина состояния&nbsp;дисков:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-02.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-02.png" alt="Список дисков для установки" class="wp-image-9419"/></a></figure>



<p>Если есть какие-то разделы, то удалите их все, чтобы были чистые диски. Для написания статьи я использую виртуальную тестовую среду, диски выделены небольшого объема. Для учебных целей этого достаточно. Я разобью диски следующим образом:</p>


</br>



<figure class="wp-block-table"><table><tbody><tr><td>/boot</td><td>Загрузочный раздел 500 мб</td></tr><tr><td>/</td><td>Корневой раздел будущей системы, 10 гб выделяю в тесте, в реальной работе рекомендую сделать 30-50 гб на всякий случай</td></tr><tr><td>Свободное место</td><td>Все остальное пространство диска оставляю неразмеченным. Как его разделить и использовать будет зависеть от ваших потребностей. Позже покажу как его все задействовать под различные хранилища (виртуальных машин, образов или бэкапов)</td></tr></tbody></table></figure>



<p>Создаем в инсталляторе указанные разделы на обоих дисках. Не буду расписывать по шагам как их сделать, надеюсь сами разберетесь, это не сложно. Должна получиться такая картина:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-03.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-03.png" alt="Разбивка диска под proxmox" class="wp-image-9420"/></a></figure>



<p>Параметры первого раздела на 500 Мб:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-04.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-04.png" alt="/boot раздел" class="wp-image-9421"/></a></figure>



<p>Параметры второго раздела на 10 Гб:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-05.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-05.png" alt="/ корневой раздел" class="wp-image-9422"/></a></figure>



<p>Оба раздела должны быть&nbsp;<strong>Primary</strong>.</p>



<p>Теперь создадим 2 отдельных raid массива на 500 мб и 10 гб. Выбираем раздел&nbsp;<strong>Configure Software RAID</strong>, дальше Create MD device, потом RAID1, 2 диска в массиве, и в завершении выбираем 2 наших раздела по 500 мб:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-06.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-06.png" alt="Создание рейд массива под boot" class="wp-image-9423"/></a></figure>



<p>То же самое делаем с разделами по 10гб — объединяем их в рейд:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-07.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-07.png" alt="Создание рейд массива под корень" class="wp-image-9424"/></a></figure>



<p>Как закончите, жмете Finish. У вас должна получиться такая картина:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-08.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-08.png" alt="Разбивка диска для proxmox на mdadm" class="wp-image-9425"/></a></figure>



<p>Теперь нужно создать файловую систему на рейд массивах. Сделаем на первом раздел /boot ext2, а на втором корень системы — / и файловую систему ext4. В итоге должно получиться вот так:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-09.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-09.png" alt="Создание файловых систем на разделах" class="wp-image-9426"/></a></figure>



<p>Применяем изменения и продолжаем стандартную установку. У вас будет предупреждение о том, что не указан раздел для swap.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-10.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-10.png" alt="Пропускаем создание swap" class="wp-image-9427"/></a></figure>



<p>Игнорируйте его, потом подключим swap отдельно в виде файла. В процессе установки вам будет предложено выбрать набор пакетов. Не ставьте ничего лишнего, только ssh сервер и системные утилиты.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-11.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-11.png" alt="Выбор пакетов для установки" class="wp-image-9428"/></a></figure>



<p>В конце будет предложено установить загрузчик на один из дисков. Можете выбрать любой диск, позже мы установим загрузчик на второй диск и убедимся, что он будет установлен на обоих дисках. Это нужно для того, чтобы система могла загружаться с любого из дисков, в случае выхода одного из строя.</p>


</br>



<p>После установки рекомендую выполнить <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%b1%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-debian-%d0%bf%d0%be%d1%81%d0%bb%d0%b5-%d1%83%d1%81%d1%82/" target="_blank" rel="noreferrer noopener">базовую настройку Debian</a>. Это не обязательно, посмотрите на мои рекомендации и делайте то, что посчитаете нужным. Если гипервизор будет внутри локальной сети, то фаервол можно выключить, порт ssh не трогать, а логин под root разрешить. Обновиться, <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d1%81%d0%b5%d1%82%d0%b5%d0%b2%d1%8b%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%8b-%d0%b2-debian/" target="_blank" rel="noreferrer noopener">настроить сеть</a>, время и полезные утилиты. Так же на всякий случай <a href="https://serveradmin.ru/dobavit-swap-razdel-v-linux/" target="_blank" rel="noreferrer noopener nofollow">создайте swap раздел</a> хотя бы на 2-4 гигабайта.</p>



<p>Теперь установим grub на оба жестких диска. Подключаемся к серверу по ssh и выполняем команду:</p>



<pre class="wp-block-preformatted"># dpkg-reconfigure grub-pc</pre>



<p>На все вопросы оставляете дефолтные значения, в конце выбираете оба жестких диска для установки загрузчика:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-12.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-12.png" alt="Установка grub на оба жестких диска" class="wp-image-9429"/></a></figure>



<p>На всякий случай проверим как встала система на жесткие диски:</p>



<pre class="wp-block-preformatted"># df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           798M   17M  782M   3% /run
/dev/md1        9.1G 1020M  7.7G  12% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/md0        460M   47M  390M  11% /boot
tmpfs           798M     0  798M   0% /run/user/0</pre>



<pre class="wp-block-preformatted"># cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb1[1] sda1[0]
      486400 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sda2[0] sdb2[1]
      9756672 blocks super 1.2 [2/2] [UU]</pre>



<p>Все в порядке, получилось так, как и задумывали. На данном этапе можно повынимать жесткие диски и проверить как система работает без одного из них, научиться заменять сбойный диск. Команды и рекомендации не буду приводить, чтобы не раздувать статью. Мануалов по работе с mdadm в интернете полно. К тому же, я об этом рассказываю в статье про установку debian, ссылку на которую уже давал ранее. Рекомендую сразу настроить <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%bd%d0%be%d0%b3%d0%be-%d1%80%d0%b5%d0%b9%d0%b4%d0%b0-mdadm-%d0%b2-zabbix/" target="_blank" rel="noreferrer noopener">мониторинг mdadm в zabbix</a>.</p>


</br>



<p>Переходим непосредственно к установке proxmox. Для этого редактируем файл&nbsp;<em>/etc/hosts</em>&nbsp;и приводим его строго к следующему виду. Если что-то будет не так, как указано у меня, получите ошибку установки с очень большой долей вероятности. Я на этом моменте прилично застрял, когда разбирался.</p>



<pre class="wp-block-preformatted"># mcedit /etc/hosts</pre>



<pre class="wp-block-preformatted">127.0.0.1 localhost.localdomain localhost
192.168.155.104 proxmox6.local proxmox6 pvelocalhost</pre>



<figure class="wp-block-table"><table><tbody><tr><td>proxmox6</td><td>Имя сервера, указанное во время установки</td></tr><tr><td>local</td><td>Домен, указанный во время установки</td></tr><tr><td>192.168.155.104</td><td>IP адрес сервера</td></tr></tbody></table></figure>



<p>Проверить правильность настроек можно командой:</p>



<pre class="wp-block-preformatted"># hostname – ip-address
192.168.155.104</pre>



<p>В ответ должны получить свой ip адрес.</p>



<p>Добавляем в список репозиториев репу proxmox и стандартные репозитории debian. Я буду использовать зеркало яндекса, все остальное можно закомментировать:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/apt/sources.list</pre>



<pre class="wp-block-preformatted">deb http://mirror.yandex.ru/debian/ buster main non-free contrib
deb-src http://mirror.yandex.ru/debian/ buster main non-free contrib
deb http://download.proxmox.com/debian/pve buster pve-no-subscription</pre>



<p>Если не подходит репозиторий яндекса (заблокирован), можно воспользоваться любым другим, например http://mirror.corbina.net/debian/</p>



<p>Добавляем цифровую подпись proxmox репозитория:</p>



<pre class="wp-block-preformatted"># wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg</pre>


</br>



<p>Если раньше не обновили систему, то обновитесь и на всякий случай перезагрузите сервер после этого:</p>



<pre class="wp-block-preformatted"># apt update &amp;&amp; apt full-upgrade
# reboot</pre>



<p>Теперь устанавливаем саму систему виртуализации proxmox:</p>



<pre class="wp-block-preformatted"># apt install proxmox-ve postfix open-iscsi</pre>



<p>Если получите ошибку во время установки:</p>



<pre class="wp-block-preformatted">dpkg: error processing package proxmox-ve (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 pve-cluster
 libpve-access-control
 librados2-perl
 pve-firewall
 pve-ha-manager
 qemu-server
 pve-container
 pve-manager
 proxmox-ve</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/09/proxmox-error.png" alt="Ошибка установки proxmox" class="wp-image-3606"/></figure>



<p>Проверяйте файл hosts. У меня там лишние строки были, кроме тех, что я указал ранее. Когда исправил, установка прошла без ошибок. После окончания установки перезагрузите сервер, чтобы загрузилось новое ядро. Если все в порядке, то увидите окно приветствия&nbsp;на мониторе сервера:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-13.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-13.png" alt="Стандартное приветствие в консоли proxmox" class="wp-image-9430"/></a></figure>



<p>Открывайте браузер по указанному адресу и заходите в web интерфейс. Напоминаю, что&nbsp;<strong>web порт proxmox по-умолчанию — 8006</strong>. Не забывайте его указывать в строке адреса в браузере. Вы должны увидеть предупреждение браузера насчет сертификата. Так и должно быть, по-умолчанию используется самоподписанный сертификат.</p>


</br>



<h2 class="wp-block-heading">Базовая настройка proxmox</h2>



<p>Заходим через браузер по указанному адресу. В окне логина вводите системный root и пароль от него. Нас сразу же встречает предупреждение:</p>



<pre class="wp-block-preformatted">You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options.</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/09/proxmox-install-15.png" alt="Предупреждение о платной подписке" class="wp-image-3632"/></figure>



<p>У нас нет платной подписки, поэтому нужно удалить из списка репозиториев платный. Для этого открываем консоль сервера и закомментируем репозиторий:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/apt/sources.list.d/pve-enterprise.list</pre>



<pre class="wp-block-preformatted">#deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise</pre>



<p>Дальше видим главную страницу управления гипервизором proxmox 6.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-14.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-14-1024x545.png" alt="Главная страница web интерфейса proxmox" class="wp-image-9431"/></a></figure>



<h2 class="wp-block-heading">Настройка сети</h2>



<p>Обычно для виртуальных машин достаточно 3&nbsp;режима работы сети:</p>



<ol><li><strong>Режим Bridge</strong>. В этом режиме виртуальные машины получают ip адрес из одной подсети с гипервизором и имеют в нее прямой доступ.</li><li><strong>Режим NAT</strong>. Виртуальные машины получают ip адреса в своей виртуальной подсети, во внешнюю сеть выходят через гипервизор и настроенный на нем NAT.</li><li><strong>Routed режим</strong>, когда шлюзом в интернет является одна из виртуальных машин.</li></ol>



<p>Я использую все три режима работы сети, в зависимости от ситуации. Покажу это на примерах.</p>



<h3 class="wp-block-heading">Как создать bridge в proxmox</h3>



<p>Для создания сетевого интерфейса типа bridge в proxmox, в web интерфейсе перейдите в раздел&nbsp;Network&nbsp;и нажмите Create -&gt; Linux Bridge.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-15.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-15.png" alt="Создание bridge в proxmox" class="wp-image-9432"/></a></figure>



<p>Заполняете необходимые поля. Обязательными являются поле IP address, Gateway, Bridge Ports.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-16.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-16.png" alt="Настройки бриджа" class="wp-image-9433"/></a></figure>



<p>С такими настройками вы сможете в качестве локального интерфейса оставить только vmbr0, а eth0 отключить. Это на ваше усмотрение. Если оставить оба интерфейса, то ваш proxmox будет доступен по двум разным ip адресам. Если получите ошибку:</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/09/proxmox-install-26.png" alt="Предупреждение о двух шлюзах" class="wp-image-3664"/></figure>



<p>Удалите настройку шлюза на eth0, добавьте его на vmbr0.</p>



<p>Сразу обращаю внимание, что после создания бриджа, в системе создается новый файл с сетевыми настройками —&nbsp;<em>/etc/network/interfaces.new</em>.&nbsp;Там отражены сделанные нами изменения.&nbsp;Информация из него будет добавлена в основной файл&nbsp;<em>interfaces&nbsp;</em>после перезагрузки. Перезагрузите сервер и проверьте. Если все в порядке, то вы сможете подключаться и по ssh и по web доступу к обоим ip адресам — eth0 и vmbr0.</p>



<p>Очень внимательно отнеситесь к настройке сети в proxmox. Убедитесь, что у вас есть доступ к консоли гипервизора. Мне часто приходится настраивать выделенные серверы. Тем не менее, иногда теряю доступ к серверу из-за какой-то ошибки или невнимательности. Да и в самом proxmox могут быть проблемы.</p>



<p>У меня были ситуации, когда выполняешь описанные выше действия, перезагружаешь сервер — он недоступен. Захожу локально, открываю файл&nbsp;<em>/etc/network/interfaces</em>, и удаляю какую-то лишнюю закомментированную строку, из-за которой не поднималась сеть. Подробностей уже не помню, что именно было не так, но пару раз ловил такие ошибки.</p>



<p>Расскажу про еще один нюанс. Во время создания бриджа вас обязательно просят указать статические сетевые настройки. А иногда нужно использовать dhcp сервер. Через web интерфейс это сделать не получится, либо я не понял как. Поступаю другим образом. Пишу произвольные настройки через gui, а потом исправляю файл&nbsp;<em>/etc/network/interfaces</em>. Вот пример настройки сети, когда bridge получает сетевые настройки по dhcp.</p>



<pre class="wp-block-preformatted">source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
allow-hotplug eth0
#iface eth0 inet dhcp
auto vmbr0
iface vmbr0 inet dhcp
	bridge-ports eth0
	bridge-stp off
	bridge-fd 0
</pre>



<p>Перезагружаю сервер и убеждаюсь, что все работает как надо.</p>


</br>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-17.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-17.png" alt="dhcp настройки на bridge" class="wp-image-9434"/></a></figure>



<p>При этом в web интерфейсе будет вот так.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-18.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-18.png" alt="Пустые параметры vmbr в gui" class="wp-image-9435"/></a></figure>



<h3 class="wp-block-heading">Настройка NAT для виртуальных машин</h3>



<p>Для того, чтобы настроить удобный способ сетевого подключения виртуальных машин с использованием NAT, когда все виртуалки вместе с гипервизором будут в единой виртуальной сети видеть друг друга, потребуется создать еще один&nbsp;<strong>bridge</strong>&nbsp;и настроить трансляцию адресов с помощью&nbsp;<strong>iptables</strong>&nbsp;на самом гипервизоре. Сделаем это.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-19.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-19.png" alt="Добавление бриджа для сети виртуальных машин" class="wp-image-9436"/></a></figure>



<p>Заходим по ssh на гипервизор и добавляем в файл с новыми сетевыми настройками несколько строк:</p>



<pre class="wp-block-preformatted"># mcedit /etc/network/interfaces.new</pre>



<pre class="wp-block-preformatted">auto vmbr1
iface vmbr1 inet static
address 10.10.10.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
<strong>post-up echo 1 &gt; /proc/sys/net/ipv4/ip_forward</strong>
<strong>post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE</strong>
<strong>post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o vmbr0 -j MASQUERADE</strong></pre>



<p>Объясняю, что мы сделали:</p>



<ol><li>Разрешили форвард пакетов между сетевыми интерфейсами. Без этого гипервизор не сможет работать в роли шлюза.</li><li>Добавили правила <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/centos/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-iptables-%d0%b2-centos-7/" target="_blank" rel="noreferrer noopener">iptables</a> для настройки NAT.</li></ol>



<p>Сохраняем файл и перезагружаем сервер. В настройках сети виртуальных машин указываете интерфейс&nbsp;<strong>vmbr1</strong>, а в самой системе виртуалки вручную прописываете сетевые настройки, где адрес шлюза равен адресу интерфейса vmbr1 — 10.10.10.1, а ip адрес самой машины будет в подсети&nbsp;<em>10.10.10.0/24</em>. Все виртуальные машины, у которых установлен бридж vmbr1 будут видеть друг друга.</p>



<p>Если вам не хочется на каждой ВМ вручную прописывать IP, можно настроить dhcp сервер либо на одной из виртуалок, либо на самом гипервизоре. Главное назначить ему нужный интерфейс — vmbr1. Настройка dhcp сервера выходит за рамки этой статьи, не буду на этом останавливаться. Для общего использования достаточно того, что я уже указал.</p>



<h3 class="wp-block-heading">Routed режим сети</h3>



<p>Последний вариант, который я иногда использую. В качестве шлюза в интернет для локальных машин, а если необходимо и офиса, выступает виртуальная машина. Этот режим ничем особо не отличается от режима NAT, кроме того, что сам нат на гипервизоре не нужен, так как натить трафик будет шлюз на виртуальной машине. Нам нужны будут 2 бриджа: один для передачи сети провайдера в виртуальную машину-шлюз, второй для сети виртуальных машин. Настройка может немного отличаться, в зависимости от того, что вы хотите получить. Тут могут быть 2 варианта:</p>



<ol><li>У вас гипервизор с 1 физической сетевой картой, в которую воткнут шнурок с интернетом от провайдера. Вся ваша инфраструктура виртуальная, доступ только через интернет. Например, вы арендуете выделенный сервер где-то и используете для различных целей.</li><li>На вашем физическом сервере 2 и более сетевых карт. В первую приходит интернет от провайдера, вторая смотрит&nbsp;в локальную сеть. На гипервизоре виртуальные машины используются пользователями из локальной сети и находятся с ними в едином адресном пространстве.</li></ol>



<p>В обоих случаях есть еще варианты настройки в зависимости от количества ip адресов, которые вам выдает провайдер. Если у вас только 1 внешний IP адрес, вы должны его пробросить в виртуальный шлюз. Только он будет иметь доступ в интернет. Для этого вы должны создать бридж вместе с сетевой картой, в которую приходит интернет, но при этом сам бридж не должен иметь IP адреса. Вот пример, как это должно выглядеть в первом варианте:</p>



<pre class="wp-block-preformatted">iface eth0 inet manual

auto vmbr0
iface vmbr0 inet manual
bridge_ports eth0
bridge_stp off
bridge_fd 0

auto vmbr1
iface vmbr1 inet static
address 10.0.0.1
netmask 255.255.255.0
gateway 10.0.0.2
bridge_ports none
bridge_stp off
bridge_fd 0</pre>



<p>В <strong>eth0</strong> входит провод от провайдера. Этот интерфейс включен в <strong>vmbr0</strong> и ему не назначен ip адрес. Второй бридж <strong>vmbr1</strong> имеет виртуальный ip адрес и создан для локальной сети виртуальных машин. Дальше вы создаете виртуальную машину для шлюза и добавляете ему оба бриджа — vmbr0 и vmbr1. На первом настраиваете ip в соответствии с настройками провайдера, на втором в данном случае указываете статический ip адрес 10.0.0.2, который будет являться шлюзом для всех виртуальных машин и самого гипервизора в том числе. Это отражено в параметре gateway в свойствах vmbr1. Потом настраиваете виртуальный шлюз и все будет работать.</p>



<p>Виртуальному шлюзу нужно не забыть поставить автозапуск при старте гипервизора, чтобы можно было перезагружать гипервизор удаленно и не терять доступ. Схема кажется немного запутанной, надо просто вникнуть и разобраться. На самом деле это удобно в том случае, если у вас один единственный сервер и на нем надо развернуть всю инфраструктуру. Шлюз замечательно живет на виртуальной машине, легко бэкапится и переносится. Настроить можно любой функционал. Единственный нюанс — настраивать нужно локально, тщательно проверить и только убедившись, что все корректно работает и перезагружается, ставить на постоянную работу.</p>



<p>Таким образом, у вас будет гипервизор, на нем шлюз в виде виртуальной машины. Все настройки сети выполняются на шлюзе, гипервизор трогать вообще не надо. Если у вас несколько гипервизоров в разных местах, вы их объединяете в единую сеть с помощью, к примеру, <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/centos/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-openvpn-%d0%bd%d0%b0-centos-7/" target="_blank" rel="noreferrer noopener">openvpn</a>, который настраивается на самих шлюза. Виртуальные машины отдельно настраивать не надо. Они замечательно будут видеть друг друга через свои шлюзы на гипервизорах.</p>



<p>Если у вас две сетевые карты, то все то же самое. Первый бридж для интернета от провайдера без ip, второй бридж для виртуальных машин и локальной сети. Нужно только указать в нем&nbsp;bridge_ports eth1, если eth1 используется для физического подключения в локальную сеть.</p>



<p>Я часто использовал такую схему подключения, каких-то особых проблем и подводных камней тут нет. Если сервер под гипервизор надежный, то работает такое решение зачастую лучше, чем отдельный бюджетный роутер. А функционал в разы больше. Последнее время стараюсь под шлюз использовать Mikrotik там, где это возможно и оправданно.</p>


</br>



<h3 class="wp-block-heading">Пример организации сети для виртуальных машин</h3>



<p>Я сейчас покажу на конкретном примере как настроить сеть в proxmox по последнему описанному способу. Для доступа в интернет виртуальных машин будет использоваться шлюз в виде отдельной виртуальной машины. На гипервизоре ничего делать не нужно будет, кроме создания бриджа.</p>



<p>Итак, вот настройки сети на гипервизоре.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-31.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-31.png" alt="Проброс реального ip в виртуальную машину" class="wp-image-9448"/></a></figure>



<p>eth0 смотрит в интернет, vmbr0 бридж, в который включен интерфейс eth0. На обоих интерфейсах настроены внешние ip адреса провайдера, но это не обязательно. Их может и не быть. Тут просто у сервера 8 внешних ip, хватает для всех. vmbr1 полностью виртуальный бридж для организации сети виртуальных машин.</p>



<p>Далее создаем виртуальную машину под шлюз. Добавляем ей оба бриджа.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-32.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-32.png" alt="Сетевые интерфейсы виртуальной машины" class="wp-image-9449"/></a></figure>



<p>Диска, как видите, хватит и 10 гб для шлюза. Он уже пару лет так работает. Теперь смотрим на настройки сети у этой виртуалки.</p>



<pre class="wp-block-preformatted">auto ens18
iface ens18 inet static
	address 5.79.111.222
	netmask 255.255.255.224
	gateway 5.79.111.1
	dns-nameservers 1.1.1.1 8.8.4.4
	post-up iptables-restore &lt; /etc/iptables.rules

auto ens19
iface ens19 inet static
	address 10.10.11.1
	netmask 255.255.255.0
</pre>



<p>Ens18 соответствует vmbr0, а ens19 — vmbr1. На ens18 настроен внешний ip и шлюз провайдера, который выделил этот ip адрес и выдал сетевые настройки. Настраиваем на этой виртуальной машине шлюз так, как нам надо — <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/centos/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-iptables-%d0%b2-centos-7/" target="_blank" rel="noreferrer noopener">iptables</a>, <a href="https://serveradmin.ru/nastroyka-dns-servera-bind-v-centos-7/" target="_blank" rel="noreferrer noopener nofollow">dns</a>, dhcp и т.д. Далее этот шлюз указываем в качестве default gateway для остальных виртуальных машин гипервизора.</p>



<p>Вот пример настроек сети с одной из виртуальных машин этого гипервизора.</p>



<pre class="wp-block-preformatted">auto eth0
iface eth0 inet static
	address 10.10.11.17
	netmask 255.255.255.0
	gateway 10.10.11.1</pre>



<p>В данном случае eth0 это бридж vmbr1 гипервизора. Виртуальная машина подключена только к виртуальной сети гипервизра и имеет выход в интернет через шлюза, настроенный выше. Все доступы к виртуальной машине, проброс портов и т.д. настраивается на шлюзе. Если таких гипервизоров много, то они через vpn на шлюзах объединяются.</p>



<p>Такой подход удобен тем, что не надо вообще трогать гипервизор. Все настройки сети (а они могут быть сложными и их может быть много) хранятся на маленьком шлюзе, который удобно бэкапить и разворачивать. В случае необходимости, из бэкапов быстро поднимается вся инфраструктура на чистом гипервизоре.</p>



<p>Если кому-то не понятна описанная схема, задавайте вопросы в комментариях. Я в таком режиме эксплуатирую гипервизоры уже давно. Мне это кажется удобным. Если у вас есть предложения, как можно организовать сеть виртуальных машин в proxmox более удобно, делитесь соображениями.</p>



<h2 class="wp-block-heading">Хранилище для виртуальных машин</h2>



<p>После чистой установки proxmox на debian, автоматически создается хранилище&nbsp;<strong>local</strong>, которое располагается на одном разделе с самой операционной системой по адресу&nbsp;<em>/var/lib/vz</em>. Оно уже предназначено для хранения образов дисков, виртуальных машин и контейнеров.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-20.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-20.png" alt="Локальное хранилище proxmox" class="wp-image-9437"/></a></figure>



<p>Для удобства лучше этот раздел не занимать, оставить необходимое пространство для нормальной работы ОС, а для виртуальных машин создать отдельное хранилище в незанятой области жестких дисков, которую мы оставили во время установки, либо на отдельном жестком диске или рейд массиве. Сначала рассмотрим вариант создания хранилища на неразмеченной области диска.</p>



<p>Мы создадим еще один&nbsp;<strong>raid 1 mdadm</strong>&nbsp;из незанятого места на дисках. Для этого нам нужно будет там создать разделы и объединить их в программный рейд с помощью mdadm.Обращаю сразу внимание, что это тестовая среда, в реальности так диски разбивать не надо. Оптимально сделать raid 1 из двух отдельных под систему, заняв 30-50 гигов, остальное место на этом рейде отдать под iso образы и возможно бэкапы. Для виртуальных машин подключить отдельные диски и собрать из них рейд. Его уровень будет зависеть от количества дисков. Оптимально 4 штуки для raid 10</p>



<p>Смотрим имена дисков в нашей системе:</p>



<pre class="wp-block-preformatted"># ls -l /dev | grep sd

brw-rw-- –  1 root disk      8,   0 Aug  9 15:26 sda
brw-rw-- –  1 root disk      8,   1 Aug  9 15:26 sda1
brw-rw-- –  1 root disk      8,   2 Aug  9 15:26 sda2
brw-rw-- –  1 root disk      8,  16 Aug  9 15:26 sdb
brw-rw-- –  1 root disk      8,  17 Aug  9 15:26 sdb1
brw-rw-- –  1 root disk      8,  18 Aug  9 15:26 sdb2</pre>



<p>У меня 2 диска&nbsp;<strong>sda&nbsp;</strong>и&nbsp;<strong>sdb</strong>. На них уже есть по 2 раздела, которые мы сделали во время установки системы. Создадим на каждом из них еще по одному разделу из всего оставшегося свободного места.</p>



<pre class="wp-block-preformatted"># cfdisk /dev/sda</pre>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-21.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-21.png" alt="Разметка свободного места диска" class="wp-image-9438"/></a></figure>



<p>Выбираем свободное пространство, создаем на нем раздел и указываем тип —&nbsp;<strong>Linux&nbsp;raid autodetect</strong>.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-22.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-22.png" alt="Создаем раздел под raid" class="wp-image-9439"/></a></figure>



<p>То же самое делаем со вторым диском. После этих действий у вас должны появиться новые разделы&nbsp;<strong>/dev/sda3</strong>&nbsp;и&nbsp;<strong>/dev/sdb3</strong>. Чтобы это произошло, нужно либо перезагрузить сервер, либо перечитать таблицу разделов командой:</p>



<pre class="wp-block-preformatted">#&nbsp;partprobe -s</pre>



<p>Если команда не найдена, установите&nbsp;<strong>parted</strong>:</p>



<pre class="wp-block-preformatted"># apt install parted</pre>



<p>Проверим новые разделы:</p>



<pre class="wp-block-preformatted"># ls -l /dev | grep sd

brw-rw-- –  1 root disk      8,   0 Aug  9 15:40 sda
brw-rw-- –  1 root disk      8,   1 Aug  9 15:40 sda1
brw-rw-- –  1 root disk      8,   2 Aug  9 15:40 sda2
brw-rw-- –  1 root disk      8,   3 Aug  9 15:40 sda3
brw-rw-- –  1 root disk      8,  16 Aug  9 15:40 sdb
brw-rw-- –  1 root disk      8,  17 Aug  9 15:40 sdb1
brw-rw-- –  1 root disk      8,  18 Aug  9 15:40 sdb2
brw-rw-- –  1 root disk      8,  19 Aug  9 15:40 sdb3</pre>



<p>Теперь объединим только что созданные разделы в raid1:</p>



<pre class="wp-block-preformatted"># mdadm – create /dev/md2 – level=1 – raid-disks=2 /dev/sda3 /dev/sdb3</pre>



<pre class="wp-block-preformatted">mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.</pre>



<p>Проверим информацию о mdadm:</p>



<pre class="wp-block-preformatted"># cat /proc/mdstat

Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md2 : active raid1 sdb3[1] sda3[0]
      42140672 blocks super 1.2 [2/2] [UU]
      [=&gt;...................]  resync =  9.4% (4001792/42140672) finish=3.0min speed=210620K/sec
      
md0 : active raid1 sdb1[1] sda1[0]
      486400 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sdb2[1] sda2[0]
      9756672 blocks super 1.2 [2/2] [UU]</pre>



<p>Все в порядке, массив синхронизируется. Дождитесь окончания синхронизации и продолжайте. Хотя это не обязательно, массив и сейчас уже готов к работе, он он будет сильно тормозить во время ребилда. Добавим информацию о новом массиве в конфигурационный файл&nbsp;<em>/etc/mdadm/mdadm.conf</em>, иначе после перезагрузки массив не будет виден в системе:</p>



<pre class="wp-block-preformatted"># mdadm – examine – scan | grep 'md/2' &gt;&gt; /etc/mdadm/mdadm.conf</pre>



<p>Конфигурационный файл примет такой вид:</p>



<pre class="wp-block-preformatted"># cat /etc/mdadm/mdadm.conf</pre>



<pre class="wp-block-preformatted"># mdadm.conf
# mdadm.conf
#
# !NB! Run update-initramfs -u after updating this file.
# !NB! This will ensure that initramfs has an uptodate copy.
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# automatically tag new arrays as belonging to the local system
HOMEHOST 

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/0  metadata=1.2 UUID=a214eb8b:c3ff0ab2:13197140:25a25924 name=proxmox6:0
ARRAY /dev/md/1  metadata=1.2 UUID=1d5a52f3:7caa923c:b8f13836:8a7bcf54 name=proxmox6:1

# This configuration was auto-generated on Fri, 09 Aug 2019 13:59:40 +0300 by mkconf
<strong>ARRAY /dev/md/2  metadata=1.2 UUID=30be9c4e:6a351eca:6d66228d:ee695c19 name=proxmox6:2</strong></pre>



<p>Дальше у нас 2 пути:</p>



<ol><li>Создать файловую систему на md2, смонтировать раздел в систему и создать storage в виде обычной&nbsp;<strong>директории</strong>, такой же, как по-умолчанию.</li><li>Создать том&nbsp;<strong>LVM</strong>&nbsp;и на его основе storage.</li></ol>



<p>Традиционно используют второй способ, так как он позволяет потом использовать в качестве дисков виртуальных машин lvm разделы. С ними удобно работать, плюс, теоретически, блочное устройство типа lvm должно работать чуть быстрее. Так что пойдем по второму пути. Выполним инициализацию раздела для работы с LVM:</p>



<pre class="wp-block-preformatted"># pvcreate /dev/md2
File descriptor 7 (pipe:[31619]) leaked on pvcreate invocation. Parent PID 2856: bash
  Physical volume "/dev/md2" successfully created.</pre>



<p>Создадим группу томов:</p>



<pre class="wp-block-preformatted"># vgcreate raid1-md2 /dev/md2
File descriptor 7 (pipe:[31619]) leaked on vgcreate invocation. Parent PID 2856: bash
  Volume group "raid1-md2" successfully created</pre>



<p>Теперь идем в web интерфейс, выбираем Datacenter, вкладку&nbsp;Storage, жмем Add и выбираем LVM:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-23.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-23.png" alt="Добавление lvm storage в proxmox" class="wp-image-9440"/></a></figure>



<p>Указываем параметры только что созданной группы томов.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-24.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-24.png" alt="Параметры lvm хранилища" class="wp-image-9441"/></a></figure>



<figure class="wp-block-table"><table><tbody><tr><td>ID</td><td>Любое название нового сторейджа. Я обычно называю так, чтобы потом можно было легко сопоставить с именем системного раздела. Так удобно.</td></tr><tr><td>Volume group</td><td>Имя группы томов LVM, которое вы указали при создании командой vgcreate</td></tr></tbody></table></figure>



<p>Все готово. Новый storage добавили. Его можно использовать для хранения дисков виртуальных машин.</p>


</br>



<h3 class="wp-block-heading">Добавление и подключение диска</h3>



<p>Рассмотрим вариант добавления нового диска и использование его в качестве хранилища виртуальных машин. По большому счету, это то же самое, что мы проделали ранее с новым разделом, только теперь все указанные выше операции нужно будет проделать над новым диском. Быстро пройдем по этапам.</p>



<p>Я подключил новый жесткий диск, проверим его имя в системе:</p>



<pre class="wp-block-preformatted"># ls -l /dev | grep sd</pre>



<pre class="wp-block-preformatted">brw-rw-- – 1 root disk 8, 0 Aug  9 15:40 sda
brw-rw-- – 1 root disk 8, 1 Aug  9 15:40 sda1
brw-rw-- – 1 root disk 8, 2 Aug  9 15:40 sda2
brw-rw-- – 1 root disk 8, 3 Aug  9 15:40 sda3
brw-rw-- – 1 root disk 8, 16 Aug  9 15:40 sdb
brw-rw-- – 1 root disk 8, 17 Aug  9 15:40 sdb1
brw-rw-- – 1 root disk 8, 18 Aug  9 15:40 sdb2
brw-rw-- – 1 root disk 8, 19 Aug  9 15:40 sdb3
brw-rw-- – 1 root disk 8, 32 Aug  9 15:40 <strong>sdc</strong></pre>



<p>Можно не создавать на диске раздел, а сразу его инициализировать для работы в lvm и создать группу томов:</p>



<pre class="wp-block-preformatted"># pvcreate /dev/sdc
# vgcreate disk-sdc /dev/sdc</pre>



<p>Идем в веб интерфейс и создаем новый storage:</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/09/proxmox-install-23.png" alt="Добавление нового жесткого диска в proxmox" class="wp-image-3640"/></figure>



<p>Если у вас будет не одиночный диск, а несколько, то перед этим создайте рейд массив из них и так же поверх накатывайте lvm и добавляйте новый storage. На этом настройку локальных хранилищ завершаем. Все основные действия мы выполнили, можно начинать работать с системой — создавать виртуальные машины.</p>



<h3 class="wp-block-heading">&nbsp;Хранилище по NFS</h3>



<p>Приведу простой пример подключения хранилища по NFS. Мне оно в будущем понадобится для организации бэкапа виртуальных машин. Об этом я расскажу позже. Сейчас только добавим новое хранилище. Сделать это очень просто. У меня уже есть настроенный сервер NFS. Описание его настройки выходит за рамки материала, поэтому будем считать, что сервер у вас есть. Идем в раздел Storage и добавляем новое хранилище NFS:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-25.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-25.png" alt="" class="wp-image-9442"/></a></figure>



<p>Я это хранилище буду использовать только для iso образов и backup’ов, поэтому выставляю соответствующие настройки.</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/09/proxmox-install-31.png" alt="Параметры backup storage" class="wp-image-3669"/></figure>



<p>Обращаю внимание, что после указания адреса сервера, список доступных каталогов для экспорта будет автоматически запрошен с сервера. Так что нет необходимости указывать путь вручную, можно выбрать из выпадающего списка.</p>


</br>



<h2 class="wp-block-heading">Создание и настройка виртуальных машин</h2>



<p>В настройке виртуальных машин в proxmox нет ничего сложного и необычного. Я не буду по шагам рассказывать, как это сделать. Если вы дошли до этого пункта, преодолев все остальные, разобраться не составит труда. Обращаю внимание только на несколько ключевых моментов.</p>



<p>Чтобы установить виртуальную машину, нужно использовать&nbsp;<strong>iso образ</strong>. Его надо как-то загрузить на proxmox. Сделать это не сложно, нужно только понимать, что загрузить образ можно только на тот storage, который поддерживает такую возможность. Сторейджи LVM не позволяют загружать образы, для этого нужно использовать, например, storage в виде локальной директории. По умолчанию, один такой есть в системе. В него и загрузим образ виртуальной машины. Для этого открываем нужный storage и выбираем вкладку&nbsp;Content. Жмем на&nbsp;<strong>Upload</strong>&nbsp;и выбираем нужный образ.</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2016/10/proxmox-install-24.png" target="_blank" rel="noreferrer noopener"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/proxmox-install-24.png" alt="Загрузка iso образа" class="wp-image-3691"/></a></figure>



<p>На этапе загрузки iso образа я иногда сталкиваюсь с проблемой. Образ больше 4Гб не загружается. Проверял несколько раз, в том числе в различных инсталляциях на разное железо. Ошибка время от времени проявляется. Если у вас образы больше, чем 4 Гб, ищите альтернативные способы загрузки в хранилище, благо это не составляет большого труда.</p>



<p>Альтернативный способ загрузки iso образа в proxmox — использовать scp или напрямую через wget качать образ из интернета. Положить его нужно в директорию&nbsp;<em>/var/lib/vz/template/iso</em>, если используете дефолтный storage, добавленный по-умолчанию после установки.</p>



<p>Дожидаемся окончания загрузки. Теперь этот образ можно использовать для установки ОС на виртуальную машину. Создание виртуальной машины выглядит следующим образом. Нажимаем на кнопку&nbsp;Create VM</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-26.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-26-1024x382.png" alt="Создание виртуальной машины в proxmox" class="wp-image-9443"/></a></figure>



<p>Заполняем все необходимые поля и стартуем машину. Некоторое время уйдет на создание машины (от нескольких секунд до 1-2 минут). В нижней части экрана ведется лог событий, там увидите информацию об окончании создания:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-27.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-27-1024x185.png" alt="Лог событий" class="wp-image-9444"/></a></figure>



<p>Выбирайте только что созданную машину и запускайте ее. Для того, чтобы попасть в консоль виртуальной машины, выбери соответствующий раздел:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-28.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-28-1024x512.png" alt="Консоль виртуальной машины" class="wp-image-9445"/></a></figure>



<p>Виртуальная машина должна быть запущена, чтобы увидеть консоль. Рассказывать про настройку виртуальных машин особенно нечего. Все настройки видны в свойствах машины, выставляйте то, что вам необходимо и пользуйтесь. Отдельно рассмотрю вопрос автозапуска.</p>



<h3 class="wp-block-heading">Автозапуск виртуальной машины</h3>



<p>По-умолчанию созданные виртуальные машины не запускаются со стартом гипервизора, это нужно делать вручную. Но есть настройка, которая отвечает за автозагрузку виртуальных машин, а так же за порядок их загрузки. Вот список параметров, которыми мы можем управлять:</p>



<figure class="wp-block-table"><table><tbody><tr><td>Start at boot</td><td>Принимает значение Yes или No, соответственно, загружаемся автоматически или нет.</td></tr><tr><td>Start/Shutdown order</td><td>Порядок загрузки и выключения виртуальных машин, принимает целые цифровые значения (1, 2, и т.д.).</td></tr><tr><td>Startup delay</td><td>Задержка запуска остальных ВМ после запуска этой, принимает значения в секундах.</td></tr><tr><td>Shutdown timeout</td><td>Задержка в выключении ВМ. Сначала будет отдана команда на завершение работы. Если ВМ не завершит работу корректно, ей будет послан сигнал на принудительное выключение.</td></tr></tbody></table></figure>



<p>Рассмотрим простой пример. У нас есть виртуальная машина, к примеру Windows Server с ролью Active Directory на борту. Все остальные серверы завязаны на корректную работу службы каталогов. Нам надо сначала запустить контроллер домена, а затем все остальные серверы за ним.&nbsp;Установите параметр&nbsp;<strong>Start at boot</strong>&nbsp;в положение Yes для всех виртуальных машин, которые хотите запускать автоматически.&nbsp;Укажите&nbsp;<strong>Start/Shutdown order</strong>&nbsp;на контроллере домена 1,&nbsp;<strong>Startup delay</strong>&nbsp;240,&nbsp;<strong>Shutdown timeout</strong>&nbsp;120. С такими настройками при запуске гипервизора первой стартует виртуальная машина с КД, через 240 секунд все остальные в соответствии с их настройками.</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/09/proxmox-install-29.png" alt="Параметры автозапуска виртуальной машины" class="wp-image-3667"/></figure>


</br>



<h2 class="wp-block-heading">Backup виртуальных машин</h2>



<p>Подошли к очень важному этапу настройки proxmox — организация бэкапа виртуальных машин. На этот момент нужно обратить особенное внимание, и все хорошенько проверить. Настраивается backup так же просто, как и все остальное в proxmox. Идем в раздел Backup и создаем задание:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-29.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-29.png" alt="Backup виртуальных машин в proxmox" class="wp-image-9446"/></a></figure>



<p>Выставляем необходимые параметры, например такие:</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/09/proxmox-install-33.png" alt="Параметры бэкапа" class="wp-image-3671"/></figure>



<p>Ждем назначенного часа и проверяем исполнение задания.</p>



<p>Для того, чтобы выполнить разовый бэкап конкретной виртуальной машины, достаточно&nbsp;открыть виртуальную машины, выбрать в ней раздел Backup и нажать&nbsp;<strong>Backup Now</strong>:</p>



<figure class="wp-block-image"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-30.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/proxmox-configure-30.png" alt="Бэкап виртуальной машины" class="wp-image-9447"/></a></figure>



<p>Дальше указываете необходимые параметры и дожидаетесь завершения бэкапа. Обращаю внимание, что бэкап будет выполняться при работающей виртуальной машине. Останавливать ее не требуется.</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/09/proxmox-install-35.png" alt="Лог создания резервной копии" class="wp-image-3673"/></figure>



<p>Тут сразу встает следующий вопрос — как автоматически удалять старые бэкапы? Однозначно ответить не получится, все будет зависеть от того, где будут храниться бэкапы. Если это обычный linux сервер с доступом к консоли, то можно воспользоваться программой&nbsp;<strong>find</strong>:</p>



<pre class="wp-block-preformatted">#&nbsp;/usr/bin/find /mnt/backups-vm -type f -mtime +30 -exec rm {} \;</pre>



<p>После выполнения этой команды, все файлы в папке <em>/mnt/backups-vm</em> старше 30 дней будут удалены. Для автоматизации процесса команду можно поместить в <strong>cron</strong>. С помощью <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%b8-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-zabbix-3-4-%d0%bd%d0%b0-debian-9/" target="_blank" rel="noreferrer noopener">zabbix</a> вы можете <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%be%d0%b2-%d1%81-%d0%bf%d0%be%d0%bc%d0%be%d1%89%d1%8c%d1%8e-zabbix/" target="_blank" rel="noreferrer noopener">мониторить актуальность бэкапов</a> и <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/zabbix/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80%d0%b0-%d0%b1%d1%8d%d0%ba%d0%b0%d0%bf%d0%b0-%d0%b2-zabbix/" target="_blank" rel="noreferrer noopener">следить за их размерами</a>.</p>



<p>После создания бэкапа рекомендую сразу убедиться, что из него можно восстановить виртуальную машину. Для этого откройте обзор storage, где у вас сделана копия и оттуда начните процесс восстановления. В таком случае вы сможете указать новое имя для виртуальной машины. Если вы будете пробовать восстановить из бэкапа в интерфейсе виртуальной машины, то будет предложена только замена существующей ВМ.</p>



<p>Не забудьте у восстановленной копии виртуальной машины, если восстановите на том же гипервизоре, поменять mac адрес и сетевые настройки. Если не поменять мак, то будете потом долго ловить и разбираться с непонятными сетевыми проблемами.</p>



<h2 class="wp-block-heading">Часто задаваемые вопросы по теме статьи (FAQ)</h2>



<p><strong>Как можно делать инкрементные бэкапы виртуальных машин в Proxmox?</strong></p>



<p>Проблема инкрементных бэкапов в proxmox очень актуальна. Универсального решения, к сожалению, нет. На текущий момент инкрементные бэкапы возможны только на уровне хранилища для виртуальных машин, если оно это поддерживает. К примеру, с помощью zfs это можно организовать через механизм снепшотов. Какого-то аналога для бэкапов, типа Veeam, для Proxmox не существует.<strong>Есть ли разница, разворачивать Proxmox на Debian либо через официальный ISO образ?</strong></p>



<p>Принципиальной разницы нет. На выходе будет одна и та же система. Другое дело, что установив сначала Debian, у вас возникает больше возможностей для преднастройки дисковой подсистемы. К примеру, вы можете установить все на массив mdadm. Штатный установщик из ISO образа не дает такой возможности.<strong>Чтло лучше использовать — виртуальные машины или контейнеры?</strong></p>



<p>Однозначного ответа на этот вопрос нет. Все зависит от решаемых задач. Контейнеры позволяют ускорить разворачивание и бэкап систем. Снижают потребление ресурсов за счет использования общего ядра с хостовой системой. Но это накладывает и ограничения. Если вам нужно изменить параметры ядра, то придется это делать для всего гипервизора и всех систем, работающих на его ядре. Так что тут рекомендация может быть такая — если вас устраивает функционал и ограничения контейнеров, используйте их. В остальных случаях — виртуальные машины.<strong>Есть ли какая-то принципиальная разница в чистом гипервизоре KVM по сравнению с Proxmox?</strong></p>



<p>Принципиальной разницы нет. По сути Proxmox — это система управления гипервизором на базе KVM. Виртуальные машины, как настройки, так и сами диски с данными, без проблем переносятся на любой другой гипервизор на базе KVM. Для этого не нужна ни конвертация данных, ни преобразование настроек.<strong>Можно ли в виртуальные машины Proxmox пробрасывать внешние IP адреса?</strong></p>



<p>Да, в этом нет никаких проблем. Просто делаете бридж с интерфейсом гипервизора, на который приходят эти ip адреса и добавляете интерфейсы из этого бриджа в виртуальные машины. А на них настраиваете внешние IP адреса.<strong>Можно ли в Proxmox пробросить USB в виртуальную машину? Например, для подключения токена или лицензионного ключа.</strong></p>



<p>Да, то можно сделать. Гипервизор KVM, на базе которого построен Proxmox, давно поддерживает возможность проброса USB портов в виртуальные машины.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Подведем итог тому, что сделали:</p>



<ul><li>Установили гипервизор proxmox на сервер под управлением Debian на программный raid1, обеспечив отказоустойчивость системы на уровне дисков.</li><li>Настроили виртуальную сеть для виртуальных машин.</li><li>Подключили различные storage для выполнения задач размещения и бэкапа виртуальных машин.</li><li>Добавили и настроили виртуальные машины.</li><li>Организовали автоматический бэкап всех ВМ.</li></ul>



<p>Я постарался выбрать наиболее востребованные функции и описать их, чтобы систему можно было использовать в реальной работе и не бояться за надежность решения. Собрал необходимый минимум, но статься все равно получилась очень большая, объемная. Я не стал ее разделять на части, чтобы была целостная картина всего того, что сделали. Тут есть еще над чем поработать, особенно актуален вопрос бэкапа. Без инкрементного бэкапа неудобно хранить резервные копии на удаленном сервере, очень большой объем передаваемых данных получается. Мне не известен способ инкрементного бэкапа виртуальных машин в proxmox, буду рад, если кто-то посоветует хорошее решение для KVM. Снэпшоты zfs не в счет.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-proxmox-%d0%b2-debian-%d0%bd%d0%b0-raid-1/">Установка Proxmox в Debian на raid 1</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-proxmox-%d0%b2-debian-%d0%bd%d0%b0-raid-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как настроить сетевые параметры в Debian</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d1%81%d0%b5%d1%82%d0%b5%d0%b2%d1%8b%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%8b-%d0%b2-debian/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d1%81%d0%b5%d1%82%d0%b5%d0%b2%d1%8b%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%8b-%d0%b2-debian/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 13 Jul 2020 21:53:03 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[сеть]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=865</guid>

					<description><![CDATA[<p>В текущей статье&#160;я расскажу об очень популярной теме, с которой начинается практически любая первоначальная работа с сервером. Настройка основных параметров</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d1%81%d0%b5%d1%82%d0%b5%d0%b2%d1%8b%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%8b-%d0%b2-debian/">Как настроить сетевые параметры в Debian</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>В текущей статье&nbsp;я расскажу об очень популярной теме, с которой начинается практически любая первоначальная работа с сервером. Настройка основных параметров сети в Debian&nbsp;— ip адрес, dhcp, ipv6, dns, hostname, статические маршруты, сетевые карты и другие network параметры. Двигаться по теме будем шаг за шагом от простого к сложному, разбирая все нюансы по порядку и отвечая на наиболее популярные вопросы.</p>


</br>



<h2 class="wp-block-heading">Сетевые настройки на сервере Debian</h2>



<p>Вопрос настройки сети я уже кратко поднимал в теме начальной&nbsp;настройки Debian. Я рекомендую с ней ознакомиться и выполнить некоторые подготовительные действия, чтобы было удобнее работать далее. Сейчас мы подробно разберем все наиболее значимые нюансы сетевых настроек, которые могут пригодиться в повседневной работе.</p>



<p>Первоначальная настройка сети начинается во время&nbsp;установки сервера. Если у вас есть сетевой интерфейс и dhcp сервер в сети, то сеть сконфигурируется автоматически на основе полученных настроек и будет готова к работе. В последствии вы можете выполнить настройку сети в Debian через консоль с помощью программ&nbsp;<strong>ip</strong>&nbsp;или&nbsp;<strong>ifconfig</strong>. Наиболее популярным и современным средством на текущий момент является ip, поэтому в дальнейшем рассмотрим вопрос конфигурации сетевых интерфейсов&nbsp;с ее помощью. Про ifconfig тоже не забудем. Рассмотрим ее позже отдельно.</p>



<p>Отдельно стоит такой инструмент управления сетевыми подключениями как&nbsp;<strong>Network manager</strong>. Он используется в сочетании с графическими оболочками, которых на сервере обычно нет, поэтому вопрос его настройки я не буду рассматривать. Мне просто не на чем это делать, да и не вижу смысла.</p>



<p>Есть 2 различные возможности изменить&nbsp;сеть в Debian:</p>



<ol><li>Настройка сети из консоли с помощью указанных ранее консольных программ.</li><li>С помощью редактирования конфигурационного файла сетевых интерфейсов&nbsp;<em>/etc/network/interfaces</em>.</li></ol>



<p>Мы рассмотрим оба этих варианта. Вводная теоретическая часть окончена, приступаем к практике.</p>



<h2 class="wp-block-heading">Настройка статического IP</h2>



<p>Вы установили сервер и во время установки указали какие-то сетевые параметры, или не указали, не важно. Но сейчас вы решили, что вам нужно назначить статический ip (static ip) адрес. Воспользуемся для этого утилитой&nbsp;<strong>ip</strong>. Сначала посмотрим список всех сетевых интерфейсов:</p>



<pre class="wp-block-preformatted"># ip a</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-01.png" alt="Сетевые настройки в debian" class="wp-image-4043"/></figure>



<p>У меня в системе 1 сетевой интерфейс&nbsp;<strong>eth0</strong>&nbsp;и он каким-то образом уже сконфигурирован. Назначим ему еще один статический адрес:</p>



<pre class="wp-block-preformatted"># ip addr add 192.168.1.35/24 dev eth0</pre>



<p>Этот адрес будет добавлен к уже существующему адресу. Проверим это:</p>



<pre class="wp-block-preformatted"># ip a</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-02.png" alt="Настройка статического ip" class="wp-image-4044"/></figure>



<p>Теперь сервер будет доступен по обоим адресам. Текущая настройка сохранится только до перезагрузки сервера. Чтобы она применялась во время загрузки, нужно либо каким-то образом добавить команду на изменение настроек в автозагрузку, например в&nbsp;<em>/etc/rc.local</em>, но это будет костыль. Правильнее отредактировать файл, который отвечает за сетевые настройки в debian —&nbsp;<em>/etc/network/interfaces</em>. Для того, чтобы назначить постоянный статический ip адрес, его нужно привести к следующему виду:</p>



<pre class="wp-block-preformatted"># mcedit /etc/network/interfaces</pre>



<pre class="wp-block-preformatted">source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.35
gateway 192.168.1.1
netmask 255.255.255.0
</pre>



<figure class="wp-block-table"><table><tbody><tr><td>auto</td><td>указанный интерфейс необходимо запускать автоматически при загрузке системы</td></tr><tr><td>iface</td><td>интерфейс eth0 находится в диапазоне адресов IPv4 со статическим ip</td></tr><tr><td>address</td><td>статический ip адрес</td></tr><tr><td>gateway</td><td>шлюз по-умолчанию</td></tr><tr><td>netmask</td><td>маска сети</td></tr></tbody></table></figure>



<p>Для проверки перезагружаем сервер и смотрим, все ли в порядке с настройкой статического ip адреса. Если вам нужно сменить ip адрес в debian, то вы можете временно изменить его с помощью команды ip, либо постоянно, отредактировав параметр&nbsp;<strong>address&nbsp;</strong>в файле сетевых настроек&nbsp;<em>interfaces</em>.</p>



<h2 class="wp-block-heading">Получение сетевых настроек по DHCP</h2>



<p>Теперь рассмотри вариант, когда вам необходимо&nbsp;получить динамический ip адрес в Debian. Здесь по аналогии с предыдущими настройками можно пойди двумя путями:</p>



<ol><li>Получить ip адрес по dhcp в консоли с помощью программы&nbsp;<strong>dhclient</strong>, который будет работать до перезагрузки.</li><li>Отредактировать файл конфигурации сетевых интерфейсов.</li></ol>



<p>Смотрим снова на текущую конфигурацию сети:</p>



<pre class="wp-block-preformatted"># ip a</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-03.png" alt="Параметры сети в debian" class="wp-image-4045"/></figure>



<p>Выполним команду на получение ip адреса по dhcp и проверим сеть:</p>



<pre class="wp-block-preformatted"># dhclient
# ip a</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-04.png" alt="Получение настроек по dhcp" class="wp-image-4046"/></figure>



<p>В качестве второго ip мы получили адрес от dhcp сервера. Если у вас несколько сетевых интерфейсов, то необходимо добавлять название после команды, например вот так:</p>


</br>



<pre class="wp-block-preformatted"># dhclient eth0</pre>



<p>Для того, чтобы сбросить&nbsp;адрес, нужно воспользоваться следующим ключом:</p>



<pre class="wp-block-preformatted"># dhclient -r</pre>



<p>Обращаю внимание, что эта команда сбросит все ip адреса интерфейса, в том числе и статические. Чтобы снова запросить&nbsp;адрес, нужно выполнить предыдущую команду на получение ip с указанием сетевого интерфейса eth0.</p>



<p>Все изменения, сделанные в консоли после перезагрузки, исчезнут. Чтобы их сохранить, приведем файл&nbsp;<em>/etc/network/interfaces</em>&nbsp;к следующему виду:</p>



<pre class="wp-block-preformatted"># mcedit /etc/network/interfaces</pre>



<pre class="wp-block-preformatted">source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp</pre>



<h2 class="wp-block-heading">Установка шлюза по-умолчанию (default gateway)</h2>



<p>Теперь разберемся со шлюзом по-умолчанию. В предыдущих примерах со статическим ip адресом и настройками по dhcp у нас не было необходимости указывать отдельно&nbsp;default gateway. Мы его устанавливали вместе с остальными настройками. Чтобы посмотреть установленный по-умолчанию шлюз в debian, можно воспользоваться следующей командой в консоли:</p>



<pre class="wp-block-preformatted"># ip r sh</pre>



<pre class="wp-block-preformatted"><strong>default via 192.168.1.1 dev eth0</strong>
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.24</pre>



<p>Это шлюз по-умолчанию (default gateway). Можно воспользоваться&nbsp;другими, более популярными и привычными командами:</p>



<pre class="wp-block-preformatted"># route
# netstat -nr</pre>



<p>Если получите ошибки:</p>



<pre class="wp-block-preformatted">-bash: route: command not found
-bash: netstat: command not found</pre>



<p>Значит у вас не установлен пакет&nbsp;<strong>net-tools</strong>. Установить его можно следующей командой.</p>



<pre class="wp-block-preformatted"># apt install net-tools</pre>



<p>Сетевые инструменты из пакета net-tools объявлены устаревшими и не включены в состав базовой системы. Я ими продолжаю пользоваться, потому что мне нравится их вывод больше, чем у команды ip. Netstat мне видится более информативным, хотя по сути, они все показывают одно и то же. Отказ в пользу утилиты ip идет по той причине, что она объединяет в себе все основные сетевые инструменты. Удобнее пользоваться только ей одной для настройки сети, нежели разными утилитами для разных целей.</p>



<p>Если нам нужно сменить default gateway, то сначала надо удалить текущий шлюз, а потом назначить новый.</p>



<pre class="wp-block-preformatted"># route del default gw 192.168.1.1
# route add default gw 192.168.1.50</pre>



<p>То же самое, только с помощью ip:</p>



<pre class="wp-block-preformatted"># ip route del default
# ip route add default via 192.168.1.50</pre>



<p>Проверяем, что получилось:</p>



<pre class="wp-block-preformatted"># ip r sh</pre>



<pre class="wp-block-preformatted">default via <strong>192.168.1.50</strong> dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.24</pre>



<p>Все получилось. Эта настройка будет действовать до перезагрузки. Чтобы ее сохранить, либо меняйте конфигурационный файл&nbsp;<em>interfaces</em>, либо, при необходимости, придумывайте что-то еще.</p>


</br>



<h2 class="wp-block-heading">Как указать DNS сервер</h2>



<p>Остался последний из основных сетевых параметров —&nbsp;<strong>dns</strong>&nbsp;сервер. С ним в debian и ubuntu есть определенная путаница. Традиционно в linux для установки&nbsp;dns серверов используется файл&nbsp;<em>/etc/resolv.conf</em>. Но в какой-то момент в этих дистрибутивах появилась&nbsp;программа&nbsp;<strong>resolvconf</strong>, которая стала управлять настройками dns в системе. В итоге, файл&nbsp;<em>resolv.conf</em>&nbsp;постоянно перезаписывается этой программой. Нужна она в первую очередь для систем, где dns сервера постоянно меняются. Она следит за их изменением и корректно передает информацию об изменении программам, для которых это важно. Я лично не знаю таких программ и мне не приходилось сталкиваться с ситуацией, когда это было необходимо.</p>



<p>Если я не ошибаюсь, то в минимальной конфигурации debian программа resolvconf не устанавливается, а вот в ubuntu она стоит. Проверить наличие программы очень просто:</p>



<pre class="wp-block-preformatted"># dpkg -l | grep resolvconf</pre>



<p>Если в выводе пусто, значит ее нет. Тогда все очень просто. Для того, чтобы указать dns сервер, достаточно его записать в файл&nbsp;<em>/etc/resolv.conf&nbsp;</em>в следующем виде:</p>



<pre class="wp-block-preformatted"># mcedit /etc/resolv.conf</pre>



<pre class="wp-block-preformatted">nameserver 192.168.1.1
nameserver 77.88.8.1
nameserver 8.8.8.8
nameserver 1.1.1.1</pre>



<figure class="wp-block-table"><table><tbody><tr><td>192.168.1.1</td><td>локальный dns сервер</td></tr><tr><td>77.88.8.1</td><td>публичный сервер Яндекса</td></tr><tr><td>8.8.8.8</td><td>публичный сервер Гугла</td></tr><tr><td>1.1.1.1</td><td>публичный сервер cloudflare</td></tr></tbody></table></figure>



<p>Я на всякий случай указал локальный сервер и 3 внешних. Если у вас стоит resolvconf, то в случае ненадобности, удалите его командой:</p>



<pre class="wp-block-preformatted"># apt-get remove&nbsp;resolvconf</pre>



<p>После этого сервер надо перезагрузить и удалить сломавшуюся символьную ссылку&nbsp;<em>/etc/resolv.conf</em>, а вместо нее создать файл с нужным содержанием, которое я привел выше.</p>



<p>Если же вам по какой-то причине необходима указанная выше программа, она у вас стоит и вы не хотите ее удалять, то адрес dns сервера необходимо указать в файле&nbsp;<em>/etc/network/interfaces</em>, добавив к параметрам интерфейса еще один:</p>



<pre class="wp-block-preformatted">dns-nameservers 192.168.1.1 77.88.8.1 8.8.8.8 1.1.1.1</pre>



<p>Этот параметр нужно установить сразу после указания шлюза&nbsp;gateway. Несколько адресов разделяются пробелом.</p>



<h2 class="wp-block-heading">Изменить hostname (имя хоста)</h2>



<p>Во время установки debian вы указывали имя хоста. Посмотреть его текущее значение можно в консоли:</p>



<pre class="wp-block-preformatted"># hostname
debian</pre>



<p>Это значение записано в файле&nbsp;<em>/etc/hostname</em>. Есть 2 способа изменить hostname в debian:</p>



<ol><li>Простой и быстрый с помощью консольной команды. Результат работает только до перезагрузки компьютера. Потом вернется старое имя.</li><li>С помощью изменения конфигурационного файла результат сохраняется и после перезагрузки. Чтобы сразу применить изменение, потребуется выполнить системный скрипт.</li></ol>



<p>Для первого способа&nbsp;достаточно в консоли ввести команду:</p>



<pre class="wp-block-preformatted"># hostname debian10</pre>



<p>Теперь проверим, что получилось:</p>



<pre class="wp-block-preformatted"># hostname
debian10</pre>



<p>Имя хоста изменилось, но в файле&nbsp;<em>/etc/hostname&nbsp;</em>по-прежнему указано прошлое значение. После перезагрузки hostname снова примет старое значение debian. Чтобы сделать постоянное изменение, необходимо ввести новое значение в файл вручную:</p>



<pre class="wp-block-preformatted"># mcedit /etc/hostname
debian10</pre>



<p>Изменение вступит в силу после перезагрузки. Если воспользоваться командой:</p>



<pre class="wp-block-preformatted"># hostnamectl set-hostname debian10</pre>



<p>то изменения применятся сразу же. Этот способ более правильный, рекомендую использовать именно его. Теперь проверьте текущее значение имени хоста. Оно изменится на то, что вы указали в команде.</p>



<h2 class="wp-block-heading">2 и более IP на одном интерфейсе</h2>



<p>Достаточно часто возникают ситуации, когда необходимо назначить&nbsp;несколько ip на одном интерфейсе. Сделать это очень просто.&nbsp;В самом начале я показал, как быстро через консоль в Debian можно назначить несколько ip c помощью программы. Теперь сделаем так, чтобы эти настройки сохранялись после перезагрузки. Для этого редактируем наш любимый и ненаглядный&nbsp;<em>/etc/network/interfaces</em>:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/network/interfaces</pre>



<pre class="wp-block-preformatted">source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth0:1
iface eth0:1 inet static
address 192.168.1.35
netmask 255.255.255.0</pre>



<p>С такими настройками я получу 2 ip адреса на сетевом интерфейсе:</p>



<ol><li>Первый от dhcp сервера.</li><li>Второй адрес на этой же сетевой карте будет указан статически.</li></ol>



<p>Важное замечание. Если после указанного выше добавления к динамическому адресу статического, вы перезапустите сеть, то останется только статический адрес. Если же просто перезагрузите сервер, то все будет правильно — динамика и статика. Почему так происходит — не знаю.</p>



<p>Вы таким образом можете добавить сколько вам необходимо адресов, используя различные параметры.</p>



<h2 class="wp-block-heading">Как быстро узнать ip адрес сервера в Debian</h2>



<p>Часто возникает вопрос, как в debian быстро узнать или проверить ip адреса, назначенные серверу. Выше я уже приводил пример простой команды, которая показывает все сетевые параметры интерфейса. Сейчас рассмотрим несколько вариантов, которые наглядно покажут только ip адреса, без лишней информации. Для начала воспользуемся уже известной&nbsp;командой ip, немного подрезав ее вывод:</p>



<pre class="wp-block-preformatted"># ip a | grep inet | awk '{print $2}'</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-05.png" alt="Узнать ip адрес" class="wp-image-4047"/></figure>



<p>Вы&nbsp;узнаете все ip адреса сервера, в том числе и ipv6. То же самое, только без ipv6 можно увидеть другой командой:</p>



<pre class="wp-block-preformatted"># ifconfig | grep 'inet addr:'</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-06.png" alt="Список ip адресов" class="wp-image-4048"/></figure>



<p>Если получите ошибку:</p>



<pre class="wp-block-preformatted">-bash: ifconfig: command not found</pre>


</br>



<p>Значит у вас не установлен пакет&nbsp;<strong>net-tools</strong>. Установить его можно следующей командой:</p>



<pre class="wp-block-preformatted"># apt install net-tools</pre>



<p>Если совсем заморочиться и обрезать все лишнее в выводе команды ifconfig, то можно вывести только список ip адресов:</p>



<pre class="wp-block-preformatted"># ifconfig | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-07.png" alt="Краткий список ip адресов" class="wp-image-4049"/></figure>



<p>Аналогичный вывод будет и в таком случае:</p>



<pre class="wp-block-preformatted"># ifconfig | awk '/inet addr:/ {print substr($2, 6)}'</pre>



<p>Можно убрать локальный интерфейс, чтобы глаза не мозолил, тогда вообще все наглядно:</p>



<pre class="wp-block-preformatted"># ifconfig | awk '/inet addr:/ {print substr($2, 6)}' | grep -v 127.0.0.1</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-08.png" alt="ip адреса" class="wp-image-4050"/></figure>



<p>Думаю, этих вариантов достаточно, чтобы проверить все ip адреса, отрезав лишнее.</p>



<h2 class="wp-block-heading">Static routes (статические маршруты)</h2>



<p>Следующим важным элементом настройки сети&nbsp;является управление статическими маршрутами (static routes): добавление (route add) и удаление (route del). Вновь воспользуемся консольной командой ip. Для того, чтобы добавить&nbsp;маршрут в debian, достаточно ввести в консоли:</p>



<pre class="wp-block-preformatted"># ip route add 10.0.0.0/24 via 192.168.1.50</pre>



<figure class="wp-block-table"><table><tbody><tr><td>10.0.0.0</td><td>адрес подсети, для которой создаем отдельный маршрут в обход шлюза по-умолчанию</td></tr><tr><td>/24</td><td>маска подсети</td></tr><tr><td>192.168.1.50</td><td>адрес шлюза, который будет роутить трафик в указанную подсеть</td></tr></tbody></table></figure>



<p>Проверяем таблицу маршрутов:</p>



<pre class="wp-block-preformatted"># route</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-09.png" alt="static routes" class="wp-image-4051"/></figure>



<p>Чтобы удалить маршрут, выполняем команду:</p>



<pre class="wp-block-preformatted"># ip route delete 10.0.0.0/24</pre>



<p>После перезагрузки все маршруты, добавленные таким способом, исчезнут. Чтобы статический маршрут в Debian сохранялся после перезагрузки, опять редактируем&nbsp;<em>interfaces</em>, добавляя в описание того интерфейса, к которому будут относиться маршруты, следующие строки:</p>



<pre class="wp-block-preformatted">post-up route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.50
post-up route add -net 10.1.0.0 netmask 255.255.255.0 gw 192.168.1.60
pre-down route del -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.50
pre-down route del -net 10.1.0.0 netmask 255.255.255.0 gw 192.168.1.60</pre>



<p>Мы добавили 2 статических маршрута. Перезагружаемся и проверяем.</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-10.png" alt="статические маршруты" class="wp-image-4052"/></figure>



<p>Мой конфиг целиком стал выглядеть вот так:</p>



<pre class="wp-block-preformatted">source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
post-up route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.50
post-up route add -net 10.1.0.0 netmask 255.255.255.0 gw 192.168.1.60
pre-down route del -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.50
pre-down route del -net 10.1.0.0 netmask 255.255.255.0 gw 192.168.1.60

auto eth0:1
iface eth0:1 inet static
address 192.168.1.35
netmask 255.255.255.0
gateway 192.168.1.35</pre>


</br>



<p>С постоянными статическими маршрутами в debian разобрались, ничего сложного. Идем дальше.</p>



<h2 class="wp-block-heading">Как выполнить перезапуск сети</h2>



<p>Выше я везде предлагал перезагрузить сервер, чтобы проверить новые сетевые настройки. Не всегда это обязательно делать. Иногда достаточно просто перечитать сетевую конфигурацию. Для перезапуска сети в Debian можно воспользоваться командой:</p>



<pre class="wp-block-preformatted"># service networking restart</pre>



<p>Она выполняется не мгновенно, обычно несколько секунд. Выполнить перезагрузку сети можно так же командой:</p>



<pre class="wp-block-preformatted"># /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.</pre>



<p>Она делает то же самое, но есть некая обратная связь о том, как все прошло. Если у вас все в порядке на сервере и нет сетевых ошибок, то рестарт сети можно спокойно делать удаленно по ssh. Вас даже не отключит от текущей сессии. Но на всякий случай я не рекомендую это делать, если у вас нет доступа к консоли сервера. Всякое может случиться, я бы не рисковал лишний раз. Настройку сети, как и фаервола, лучше не делать, не имея прямого доступа к консоли сервера.</p>



<h2 class="wp-block-heading">Настройка vlan в Debian</h2>



<p>Для настройки vlan в Debian первым делом необходимо установить пакет vlan:</p>



<pre class="wp-block-preformatted"># apt install vlan</pre>



<p>Теперь нужно разобраться с необходимым модулем ядра для vlan —&nbsp;<strong>8021q</strong>. Проверим, загружено ли оно в системе:</p>



<pre class="wp-block-preformatted"># lsmod | grep 8021q</pre>



<p>Если в выводе пусто, а по-умолчанию там будет пусто, модуль не загружен. Загрузим его и проверим:</p>



<pre class="wp-block-preformatted"># modprobe 8021q
# lsmod | grep 8021q
8021q                  27844  0
garp                   13117  1 8021q
mrp                    17343  1 8021q
</pre>



<p>Все в порядке, vlan модуль загрузился. Добавим его в автозагрузку:</p>



<pre class="wp-block-preformatted"># echo 8021q &gt;&gt; /etc/modules</pre>



<p>Теперь этот модуль будет загружаться при старте сервера. Создадим виртуальный интерфейс с vlan с id 1500:</p>



<pre class="wp-block-preformatted"># vconfig add eth0 1500</pre>



<p>Назначим адрес новому интерфейсу и запустим его:</p>



<pre class="wp-block-preformatted"># ip addr add 192.168.10.100/24 dev eth0.1500
# ip link set eth0.1500 up</pre>


</br>



<p>Можно в одну команду, с помощью ifconfig:</p>



<pre class="wp-block-preformatted">ifconfig eth0.1500 192.168.10.100 netmask 255.255.255.0 up</pre>



<p>Смотрим, что получилось:</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-11.png" alt="Настройка vlan в debian" class="wp-image-4053"/></figure>



<p>Мы выполнили настройку vlan интерфейса в Debian. Теперь сделаем так, чтобы после перезагрузки настройки сохранились. Для этого добавляем свойства vlan интерфейса в файл конфигурации сети, оставляя и не трогая то, что там уже есть:</p>



<pre class="wp-block-preformatted"># mcedit /etc/network/interfaces</pre>



<pre class="wp-block-preformatted">auto eth0.1500
iface eth0.1500 inet static
address 192.168.10.100
netmask 255.255.255.0
vlan_raw_device eth0</pre>



<p>Перезагрузите сервер и проверьте, что получилось. Можно выполнить перезапуск сети, но если вы до этого все вручную через консоль сделали, то не поймете, сработали настройки из файла или нет. Таким образом очень просто и быстро настроить vlan на сервере с Debian.</p>



<h2 class="wp-block-heading">Как отключить ipv6 в Debian</h2>



<p>Пока еще новая версия протокола ip&nbsp;не получила широкого распространения, если он вам специально не нужен, ipv6 можно отключить. Прежде чем отключать, необходимо узнать, какие сервисы в настоящее время его используют и перенастроить их, отключив у них ipv6. Если этого не сделать, то в работе этих программ могут возникнуть ошибки. Скорее всего не критичные, но все равно, сделаем все аккуратно и правильно. Сначала проверим, что у нас работает на ipv6:</p>



<pre class="wp-block-preformatted"># netstat -tulnp | grep :::</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-12.png" alt="debian-network-12" class="wp-image-4054"/></figure>



<p>На свежеустановленном сервере debian программы ssh, exim, dhclient и rpcbind используют ipv6. Отключим это. Начнем с ssh. Открываем файл&nbsp;<em>/etc/ssh/sshd_config</em>&nbsp;и раскомментируем параметр&nbsp;ListenAddress:</p>



<pre class="wp-block-preformatted"># mcedit /etc/ssh/sshd_config</pre>



<pre class="wp-block-preformatted">ListenAddress 0.0.0.0</pre>



<p>Перезапускаем ssh:</p>



<pre class="wp-block-preformatted"># service sshd restart</pre>



<p>Сделаем то же самое с exim4. Открываем файл конфигурации&nbsp;/etc/exim4/exim4.conf.template и в самом начале, после вступительных комментариев пишем:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/exim4/exim4.conf.template</pre>



<pre class="wp-block-preformatted">disable_ipv6 = true</pre>



<p>Перезапускаем exim:</p>



<pre class="wp-block-preformatted"># service exim4 restart</pre>



<p>В dhclient для отключения&nbsp;ipv6 в конфиге убираем все параметры в запросе request, начинающиеся с dhcp6. Должно получиться вот так:</p>



<pre class="wp-block-preformatted"># mcedit /etc/dhcp/dhclient.conf</pre>



<pre class="wp-block-preformatted">request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers;</pre>



<p>Перезапускаем сеть:</p>



<pre class="wp-block-preformatted"># service networking restart</pre>



<p>Отключаем ipv6 в rpcbind. Открываем конфигурацию&nbsp;<em>/etc/netconfig</em>&nbsp;и комментируем 2 строки с udp6 и tcp6:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/netconfig</pre>



<pre class="wp-block-preformatted">#udp6       tpi_clts      v     inet6    udp     -       -
#tcp6       tpi_cots_ord  v     inet6    tcp     -       -
</pre>



<p>Перезапускаем службу rpcbind и nfs-common, которая от него зависит:</p>



<pre class="wp-block-preformatted"># service rpcbind restart
# service nfs-common restart</pre>


</br>



<p>Проверяем, что у нас осталось:</p>



<pre class="wp-block-preformatted"># netstat -tulnp | grep :::
udp6       0      0 :::6909                 :::*                                1166/dhclient</pre>



<p>dhclient почему-то остался висеть на ipv6 порту, но ладно, это не страшно, запрашивать по ipv6 он все равно ничего не будет. Теперь полностью отключаем ipv6 в Debian:</p>



<pre class="wp-block-preformatted"># mcedit&nbsp;/etc/sysctl.conf</pre>



<pre class="wp-block-preformatted">net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1</pre>



<p>Добавьте эти строки в любое место конфига, например, в самый конец. Перезапустим&nbsp;sysctl для применения настроек:</p>



<pre class="wp-block-preformatted">#&nbsp;sysctl -p</pre>



<p>Проверяем свойства сетевых интерфейсов командами ifconfig и ip. Информации об ipv6 быть не должно, мы его полностью отключили.</p>



<h2 class="wp-block-heading">Работа с файлом hosts</h2>



<p>В папке&nbsp;<em>/etc</em>&nbsp;любого linux дистрибутива, в том числе debian есть файл&nbsp;<strong>hosts</strong>. Разберемся немного что это за файл и для чего он нужен. По-умолчанию он выглядит следующим образом:</p>



<pre class="wp-block-preformatted"># cat /etc/hosts</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-13.png" alt="содержимое hosts" class="wp-image-4055"/></figure>



<p>Представим, что у нас в локальной сети есть некий сервер с именем server &nbsp;и ip 192.168.1.50 Мы хотим к нему обращаться по имени. Тогда добавляем запись в файл hosts:</p>



<pre class="wp-block-preformatted">192.168.1.50 server</pre>



<p>Теперь мы можем обращаться к серверу просто по имени server.</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-14.png" alt="файл hosts" class="wp-image-4056"/></figure>



<p>Сервер будет в первую очередь смотреть информацию в файле hosts, только потом в dns сервере. Например, если вы добавите в файл строку:</p>



<pre class="wp-block-preformatted">127.0.0.1 ya.ru</pre>


</br>



<p>То обращаясь к адресу ya.ru будете попадать на локалхост:</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-15.png" alt="изменение hosts" class="wp-image-4057"/></figure>



<p>Этот функционал может быть полезен для публикации в локальной сети каких-то внутренних сервисов, к которым доступ будет только из вашей сети. Вам нет необходимости использовать dns сервер, с файлом hosts настройка делается гораздо быстрее.</p>



<p>Так же правка файла hosts актуальна, если вы используете локальную копию сервиса&nbsp;webpagetest&nbsp;для тестирования скорости работы сайта на разных хостингах. Вы просто меняете ip адреса для домена и делаете тесты. Так можно наглядно и однозначно сравнивать быстродействие разных хостингов.</p>



<h2 class="wp-block-heading">Настройка сетевой карты</h2>



<p>Иногда возникают ситуации, когда необходимо настроить или изменить настройки сетевой карты. Сразу отмечу, что настраивать сетевую карту можно только на реальном железе. На виртуальном, скорее всего, ни одна из предложенных дальше команд не приведет к какому-нибудь результату. У виртуальных сетевых адаптеров просто нет настроек. Для начала посмотрим, какие сетевые карты есть на сервере:</p>



<pre class="wp-block-preformatted"># lspci | grep Eth
01:00.0 Ethernet controller: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet (rev b0)</pre>



<p>В моем случае это единственная сетевая карта фирмы&nbsp;Qualcomm. Теперь установим утилиту&nbsp;<strong>ethtool</strong>&nbsp;для настройки сетевой карты:</p>



<pre class="wp-block-preformatted"># apt install ethtool</pre>



<p>Посмотрим информацию о сетевой карте:</p>



<pre class="wp-block-preformatted"># ethtool eth0</pre>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-16.png" alt="Параметры сетевой карты" class="wp-image-4058"/></figure>



<p>Указана текущая скорость, на которой работает карточка. Ее можно сменить в случае необходимости:</p>



<pre class="wp-block-preformatted"># ethtool -s eth0 speed 100 duplex full</pre>


</br>



<p>Этой командой можно изменить скорость сетевой карточки до 100Mb/s в случае, если там стояла другая скорость. Смотрим, что получилось:</p>



<figure class="wp-block-image"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2016/10/debian-network-17.png" alt="Изменение скорости сетевой карты" class="wp-image-4059"/></figure>



<p>Показал просто для примера, вряд ли кому-то понадобится уменьшать скорость. Чаще нужно выполнить обратное преобразование. У меня была ситуация, когда сетевая карта упорно не хотела работать на скорость 1Gb, хотя поддерживала такую работу, и свитч был гигабитный. Долго бился и пробовал различные утилиты для изменения скорости. Оказалось, что патч корд был 4-х жильный из комплекта какого-то роутера. Им воспользовались для подключения и даже не обратили внимание на то, что он не поддерживает работу по гигабиту.</p>



<p>У утилиты ethtool много параметров, с помощью которых можно настроить сетевую карту. Пример этих параметров можно посмотреть на сайте&nbsp;<a href="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s1-ethtool.html" target="_blank" rel="noreferrer noopener">redhat</a>.</p>



<h2 class="wp-block-heading">Работа с утилитой ifconfig</h2>



<p>В завершении сетевых настроек хотел немного поговорить об&nbsp;<strong>ifconfig</strong>. Ранее я упомянул, что более современным средством для настройки сети является утилита&nbsp;<strong>ip</strong>. В последних релизеах Debian и CentOS ifconfig вообще исключили из базовой установки, ее приходится устанавливать отдельно. IP объединяет в себе два функционала — настройка сетевых интерфейсов и маршрутизации. То есть по сути она заменяет ifconfig + route. В ней реализован функционал обоих программ.</p>



<p>Сам я привык к ifconfig, так как она есть не только в linux, но и в freebsd. Удобно использовать одно и то же средство во всех дистрибутивах. Но последнее время переучиваюсь на ip, так как надо идти в ногу со временем. Тенденция такова, что ip будут продвигать все сильнее и сильнее в силу его большей новизны и, наверное, удобства. Что касается удобства, лично я ничего не могу сказать, мне совершенно все равно, какую команду использовать:</p>



<pre class="wp-block-preformatted">ip addr add 192.168.1.35/24 dev eth0</pre>



<p>или</p>



<pre class="wp-block-preformatted">ifconfig eth0 192.168.1.35 netmask 255.255.255.0</pre>



<p>Делают они одно и то же. Остальные команды по конфигурированию сетевых интерфейсов тоже не сильно отличаются, просто пишутся немного по-разному. Вот пример работы с маршрутами:</p>



<pre class="wp-block-preformatted">ip route add 192.168.100.0/24 dev eth2</pre>



<p>или</p>



<pre class="wp-block-preformatted">route add -net 192.168.100.0/24 dev eth2</pre>



<p>В случае с&nbsp;ip мы&nbsp;работаем с одной командой, а не двумя. Чем пользоваться вам, выбирайте сами. Если не привыкли к чему-то конкретному, рекомендую использовать ip. Мне было бы любопытно узнать, кто, что использует. Оставьте свой комментарий на эту тему.</p>


</br>



<p>На этом я завершаю свой материал по теме настройки сети в debian. Я рассмотрел все наиболее значимые и необходимые параметры, с которыми приходится сталкиваться во время конфигурирования сервера.</p>



<h2 class="wp-block-heading">Часто задаваемые вопросы по теме статьи (FAQ)</h2>



<p><strong>Есть ли принципиальное отличие в том, как задать hostname сервера?</strong></p>



<p>В целом, нет. Вы можете как отредактировать файл hostname, так и воспользоваться утилитой hostnamectl. Единственное, напомню, что нужно не забыть проверить файл hosts и изменить имя сервера в том числе и там.<strong>Зачем отключать ipv6 в на сервере Debian?</strong></p>



<p>Отключать ipv6 или нет, решать вам. Я придерживаюсь следующего принципа в настройке серверов — отключать или удалять все то, что не используется. Это уменьшает вероятность получить баг или уязвимость в компоненте.<strong>Почему команда ifconfig во многих дистрибутивах объявлена deprecated и отсутствует в системе?</strong></p>



<p>В этом статусе она находится последние лет 10 и тем не менее продолжает использоваться. Насколько я понимаю, заменившая ifconfig команда ip является более функциональная и заменяет сразу несколько старых сетевых утилит, таких как ifconfig, netstat, route и т.д. Отказ от ifconfig в пользу ip — попытка внедрить универсальную и самодостаточную утилиту для работы с сетью.<strong>Как настроить proxy в Debian?</strong></p>



<p>На этот вопрос нет однозначного ответа, так как proxy настраивается на уровне отдельных приложений, а не системы. Какому приложению нужен доступ в интернет через прокси, тому и настраивается. А как это делать, зависит от самого приложения и его возможностей. Есть те, кто работу через прокси не поддерживают вообще.</p>


</br>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d1%81%d0%b5%d1%82%d0%b5%d0%b2%d1%8b%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%8b-%d0%b2-debian/">Как настроить сетевые параметры в Debian</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d1%81%d0%b5%d1%82%d0%b5%d0%b2%d1%8b%d0%b5-%d0%bf%d0%b0%d1%80%d0%b0%d0%bc%d0%b5%d1%82%d1%80%d1%8b-%d0%b2-debian/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Базовая настройка сервера Debian после установки</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%b1%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-debian-%d0%bf%d0%be%d1%81%d0%bb%d0%b5-%d1%83%d1%81%d1%82/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%b1%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-debian-%d0%bf%d0%be%d1%81%d0%bb%d0%b5-%d1%83%d1%81%d1%82/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 13 Jul 2020 21:48:18 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[настройка]]></category>
		<category><![CDATA[Сервер]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=863</guid>

					<description><![CDATA[<p>После установки нового сервера приходится выполнять один и тот же набор стандартных настроек. Сегодня мы займемся базовой настройкой сервера под</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%b1%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-debian-%d0%bf%d0%be%d1%81%d0%bb%d0%b5-%d1%83%d1%81%d1%82/">Базовая настройка сервера Debian после установки</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>После установки нового сервера приходится выполнять один и тот же набор стандартных настроек. Сегодня мы займемся базовой настройкой сервера под управлением операционной системы&nbsp;<strong>Debian</strong>.&nbsp;Я приведу практические советы по небольшому увеличению безопасности и удобству администрирования, основанные на моем личном опыте.</p>



<h2 class="wp-block-heading">Введение</h2>



<p>Любая работа с сервером после&nbsp;установки&nbsp;чаще всего начинается со стандартных обязательных действий, без которых либо не получится продвинуться дальше, либо будет неудобно работать. Например, вам в любом случае необходимо выполнить сетевые настройки, желательно обновить систему и установить часовой пояс. Рекомендуется сразу настроить автообновление времени, подрихтовать параметры sshd, установить midnight commander и выполнить другие настройки.</p>



<p>Об этом я хочу рассказать в статье. Я буду делиться своим реальным опытом работы. Это не значит, что нужно делать так, как я. Я могу в чем-то ошибаться, что-то делать не так удобно, как можно было бы сделать. Это просто советы, которые кому-то помогут узнать что-то новое, а кто-то возможно поделится со мной чем-то новым для меня, либо укажет на мои ошибки. Мне бы хотелось, чтобы это было так. Своими материалами я не только делюсь с вами знаниями, но и сам узнаю что-то новое в том числе и из комментариев и писем на почту.</p>


</br>



<h2 class="wp-block-heading">Указываем сетевые параметры</h2>



<p>Итак, у нас в наличии только что установленная система. Узнать или проверить ее версию можно командами:</p>



<pre class="wp-block-preformatted"># uname -a
Linux debian10 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64 GNU/Linux

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	<strong>Debian GNU/Linux 10 (buster)</strong>
Release:	10
Codename:	buster</pre>



<p>Для настройки сети, необходимо отредактировать файл&nbsp;<em>/etc/network/interfaces.</em>&nbsp;Сделаем это:</p>



<pre class="wp-block-preformatted"># nano /etc/network/interfaces</pre>



<p>Для получения IP адреса по dhcp&nbsp;достаточно будет следующего содержания:</p>



<pre class="wp-block-preformatted">allow-hotplug eth0
iface eth0 inet dhcp</pre>



<p>Если у вас статический адрес, то его настроить можно следующими параметрами в файле:</p>



<pre class="wp-block-preformatted">allow-hotplug eth0
iface eth0 inet static
address&nbsp;192.168.1.24
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers&nbsp;192.168.1.1</pre>



<p>Сохраняем файл. Теперь нужно выполнить перезапуск сети. В Debian это делается командой:</p>



<pre class="wp-block-preformatted"># systemctl restart networking.service</pre>



<p>В системном логе /var/log/syslog при этом будут записи:</p>



<pre class="wp-block-preformatted">debian10 systemd[1]: Stopping Raise network interfaces...
debian10 systemd[1]: networking.service: Succeeded.
debian10 systemd[1]: Stopped Raise network interfaces.
debian10 systemd[1]: Starting Raise network interfaces...
debian10 systemd[1]: Started Raise network interfaces.</pre>



<p>Будьте аккуратны при настройке и перезапуске сети, если подключаетесь к серверу удаленно. Обязательно должен быть доступ к консоли на случай, если где-то ошибетесь и потеряете доступ к серверу.</p>



<p>К сетевым настройкам я отношу установку пакета&nbsp;<strong>net-tools</strong>, в состав которого входят старые и привычные утилиты для работы с сетью — ifconfig, netstat, route и другие. В современных дистрибутивах их заменили одной командой ip, но лично мне вывод некоторых старых команд, конкретно, netstat, нравится больше, поэтому я иногда ими тоже пользуюсь.</p>



<pre class="wp-block-preformatted"># apt install net-tools</pre>



<p>На этом настройка сети закончена.</p>


</br>



<h2 class="wp-block-heading">Обновление системы, отличие apt upgrade от dist-upgrade и full-upgrade</h2>



<p>Сеть настроили, теперь можно обновить систему и пакеты. В Debian это делается достаточно просто. Воспользуемся несколькими командами. Сначала&nbsp;обновим локальный индекс пакетов до последних изменений в репозиториях:</p>



<pre class="wp-block-preformatted"># apt update</pre>



<div class="wp-block-image"><figure class="aligncenter is-resized"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-configure-01.png"><img fetchpriority="high" decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-configure-01.png" alt="Обновление debian" class="wp-image-9461" width="936" height="309"/></a></figure></div>



<p>Посмотреть список пакетов, готовых к обновлению, можно с помощью команды:</p>



<pre class="wp-block-preformatted"># apt list – upgradable</pre>



<p>Теперь выполним простое обновление всех пакетов системы:</p>



<pre class="wp-block-preformatted"># apt upgrade</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-configure-02.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-configure-02.png" alt="apt upgrade" class="wp-image-9462"/></a></figure></div>



<p>Ключ&nbsp;<strong>upgrade</strong>&nbsp;выполняет только обновление одной версии пакета на другую, более свежую. Он не будет устанавливать или удалять пакеты, даже если это необходимо для обновления других. Это наиболее безопасный и надежный вариант обновления, но он может обновить не все. Например, с ее помощью не обновить ядро до более свежей версии.</p>



<p>Ключ&nbsp;<strong>dist-upgrade</strong>&nbsp;или&nbsp;<strong>full-upgrade</strong>&nbsp;(это одно и то же) в дополнение к upgrade обрабатывает все изменения зависимостей для новых пакетов и во время работы может удалять ненужные и ставить необходимые пакеты для обновления. Вот выдержка из документации по поводу этих двух ключей.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-configure-03.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-configure-03.png" alt="Отличие apt upgrade от apt dist-upgrade и full-upgrade" class="wp-image-9463"/></a></figure></div>



<p>Так что после обычного обновления, делаем еще full-upgrade.</p>



<pre class="wp-block-preformatted"># apt full-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  dh-python guile-2.0-libs libbind9-140 libdns162 libicu57 libisc160 libisccc140 libisccfg140 liblvm2app2.2 liblvm2cmd2.02 liblwres141 libperl5.24
  libpython3.5-minimal libpython3.5-stdlib linux-image-4.9.0-3-amd64 python3-distutils python3-lib2to3 python3.5 python3.5-minimal rename sgml-base tcpd
  xml-core
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
</pre>



<p>Мне предлагается удалить старые пакеты, которые больше уже не нужны. Это зависимости от старых версий софта, который уже обновился и получил новые пакеты из зависимостей, а эти ему больше не нужны. Очистим их командой:</p>



<pre class="wp-block-preformatted"># apt autoremove</pre>



<p>Рекомендую делать это регулярно после обновлений, чтобы старые пакеты не занимали лишнее место на диске.</p>



<p>На этом обновление системы закончено. Если вы хотите обновить версию релиза, например&nbsp;Debian 9 обновить до Debian 10 Buster</p>


</br>



<h2 class="wp-block-heading">Настройка ssh</h2>



<p>Теперь внесем некоторые изменения в настройки сервера&nbsp;<strong>ssh</strong>. Я рекомендую его запускать на нестандартном порту для исключения лишних общений с ботами, которые регулярно сканируют интернет и подбирают пароли пользователей по словарям.</p>



<p>Существует расхожее мнение, что менять порт ssh это наивность, а не защита. Надо просто настроить сертификаты, fail2ban или еще каким-то образом защитить ssh порт, к примеру, с помощью ограничений iptables, и т.д. Тем не менее, я все же рекомендую порт сменить на нестандартный. Даже если у вас все защищено от подбора паролей, так как вы используете сертификаты, лишние запросы к ssh порту тратят ресурсы сервера, хоть и не очень большие. Идет установка соединения, обмен рукопожатиями и т.д. Зачем вам это нужно?</p>



<p>По-умолчанию в Debian, впрочем как и в любом другом дистрибутиве Linux, ssh сервер работает на 22 порту. Изменим этот порт, к примеру, на 23331. Так же я еще изменяю конфигурацию для разрешения подключения по ssh пользователя root с использованием пароля. В Debian из коробки пользователь root по ssh паролем авторизовываться не может. Изменим и это. Открываем файл настроек:</p>



<pre class="wp-block-preformatted"># nano /etc/ssh/sshd_config</pre>



<p>И изменяем там следующие строки. Приводим их к виду:</p>



<pre class="wp-block-preformatted">Port 23331
PermitRootLogin yes</pre>



<p>Сохраняем изменения и перезапускаем сервер ssh следующей командой:</p>



<pre class="wp-block-preformatted"># service sshd restart</pre>



<p>Проверяем изменения:</p>



<pre class="wp-block-preformatted"># netstat -tulnp | grep ssh

tcp 0 0 0.0.0.0:23331 0.0.0.0:* LISTEN 925/sshd
tcp6 0 0 :::23331 :::* LISTEN 925/sshd</pre>



<p>Все в порядке, сервер слушает 23331 порт. Теперь новое подключение будет осуществлено только по порту 23331. При этом, после перезапуска ssh, старое подключение не будет разорвано.</p>



<p>Я знаю, что многие возражают против подключения рутом к серверу. Якобы это небезопасно и т.д. и т.п. Мне эти доводы кажутся не убедительными. Не понимаю, в чем может быть проблема, если у меня нормальный сложный пароль на root, который не получится подобрать или сбрутить. Ни разу за всю мою работу системным администратором у меня не возникло проблем с этим моментом. А вот работать так значительно удобнее, особенно, когда необходимо оперативно куда-то подключиться по форс мажорным обстоятельствам.</p>



<p>Отдельно тему подключения к серверу под root я рассмотрел в статье про&nbsp;sudo. Кому интересно, переходите в нее и делитесь своим мнением на этот счет.</p>


</br>



<h2 class="wp-block-heading">Установка утилит mc, htop, iftop</h2>



<p>Следующим шагом я настраиваю некоторые полезные утилиты, которыми регулярно пользуюсь в повседневной работе. Первая из них это всем известный двухпанельный файловый менеджер Midnight Commander. Установим&nbsp;<strong>mc</strong>&nbsp;на наш сервер:</p>



<pre class="wp-block-preformatted"># apt install mc</pre>



<p>И сразу же для него включаю подсветку синтаксиса всех файлов, которые не обозначены явно в файле&nbsp;<em>/usr/share/mc/syntax/Syntax</em>&nbsp;синтаксисом для sh и bash скриптов. Этот универсальный синтаксис нормально подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Перезаписываем файл&nbsp;<em>unknown.syntax</em>. Именно этот шаблон будет применяться к .conf и .cf файлам, так как к ним явно не привязано никакого синтаксиса.</p>



<pre class="wp-block-preformatted"># cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax</pre>



<p>Я сразу же ставлю редактором по-умолчанию&nbsp;<strong>mcedit</strong>. Для этого просто выбираю его из меню при первом редактировании какого-нибудь файла. Если у вас такое меню не появляется, можете вызвать его сами и выбрать необходимый редактор по-умолчанию:</p>



<pre class="wp-block-preformatted"># select-editor

Select an editor. To change later, run 'select-editor'.
 1. /bin/nano &lt;-- – easiest
 2. /usr/bin/mcedit
 3. /usr/bin/vim.tiny

Choose 1-3 [1]: 2</pre>



<p>Так же я рекомендую очень удобный диспетчер задач —&nbsp;<strong>htop</strong>. Мне он помог, к примеру, решить проблему&nbsp;Взлома сервера CentOS. Ставим его на сервер:</p>



<pre class="wp-block-preformatted"># apt install htop</pre>



<p>Полезной утилитой, позволяющей смотреть сетевую загрузку в режиме реального времени, является&nbsp;<strong>iftop</strong>. Очень рекомендую. Более простого и удобного инструмента мне не попадалось, хотя я много перепробовал подобных вещей. Устанавливаем iftop на сервер:</p>



<pre class="wp-block-preformatted"># apt install iftop</pre>



<div class="wp-block-image"><figure class="aligncenter is-resized"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-configure-04.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-configure-04.png" alt="debian iftop" class="wp-image-9464" width="800" height="342"/></a></figure></div>


</br>



<h2 class="wp-block-heading">Настройка и обновление времени в Debian&nbsp;</h2>



<p>Теперь проверим установленный часовой пояс, время и включим автоматическую синхронизацию времени с удаленного сервера.</p>



<p>Узнать дату, время, часовой пояс можно командой&nbsp;<strong>date</strong>:</p>



<pre class="wp-block-preformatted"># date

Mon 12 Aug 2019 02:29:03 PM MSK</pre>



<p>Если все указано верно, то менять ничего не нужно. Если же у вас неправильное время или указан часовой пояс не соответствующий вашему, то настроить это можно следующим образом. Сначала обновим часовые пояса:</p>



<pre class="wp-block-preformatted"># apt install tzdata</pre>



<p>Теперь выберем правильный часовой пояс с помощью команды:</p>



<pre class="wp-block-preformatted">#&nbsp;dpkg-reconfigure tzdata</pre>



<p>Выбирая соответствующие пункты визарда, указываете свой часовой пояс.</p>



<p>Дальше синхронизируем время с сервером времени в интернете. Для разовой или ручной синхронизации понадобится отдельная утилита<strong>.&nbsp;</strong>Установим&nbsp;<strong>ntpdate</strong>&nbsp;на сервер:</p>



<pre class="wp-block-preformatted"># apt install ntpdate</pre>



<p>И синхронизируем время:</p>



<pre class="wp-block-preformatted"># ntpdate-debian

12 Aug 14:30:21 ntpdate[8688]: adjust time server 89.109.251.21 offset 0.004529 sec</pre>



<p>Если получаете ошибку:</p>



<pre class="wp-block-preformatted">12 Aug 14:30:21 ntpdate[8688]: the NTP socket is in use, exiting</pre>



<p>Значит у вас уже работает служба ntp. Ее нужно остановить и обновить время вручную. Хотя если она работает, то у вас и так должно быть все в порядке.</p>



<p>Для того, чтобы время автоматически синхронизировалось без вашего участия с определенной периодичностью, используется инструмент&nbsp;<strong>ntp</strong>. Установим его:</p>



<pre class="wp-block-preformatted"># apt install ntp</pre>



<p>После установки он сам запустится и будет автоматически синхронизировать часы сервера. Проверим, запустился ли сервис ntpd:</p>



<pre class="wp-block-preformatted"># netstat -tulnp | grep ntp

udp        0      0 10.20.1.16:123          0.0.0.0:*                           8855/ntpd           
udp        0      0 127.0.0.1:123           0.0.0.0:*                           8855/ntpd           
udp        0      0 0.0.0.0:123             0.0.0.0:*                           8855/ntpd           
udp6       0      0 fe80::cce1:23ff:fe4:123 :::*                                8855/ntpd           
udp6       0      0 ::1:123                 :::*                                8855/ntpd           
udp6       0      0 :::123                  :::*                                8855/ntpd</pre>


</br>



<h2 class="wp-block-heading">Настройка firewall (iptables) в Debian</h2>



<p>В качестве firewall в Debian по-умолчанию используется&nbsp;<strong>iptables</strong>, его и будем настраивать. Изначально фаервол полностью открыт и пропускает весь трафик. Проверить список правил iptables можно следующей командой:</p>



<pre class="wp-block-preformatted"># iptables -L -v -n

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
</pre>



<p>Обращаю пристальное внимание на то, что настраивать firewall без прямого доступа к консоли сервера не следует. Особенно, если вы не очень разбираетесь в этом и копируете команды с сайта. Шанс ошибиться очень высок. Вы просто потеряете удаленный доступ к серверу.</p>



<p>Создадим файл с правилами iptables:</p>



<pre class="wp-block-preformatted"># mcedit /etc/iptables.sh</pre>



<p>Очень подробно вопрос&nbsp;настройки iptables&nbsp;я рассмотрел отдельно, рекомендую ознакомиться. Хотя в примере другая ОС linux, принципиальной разницы нет, настройки iptables абсолютно одинаковые, так как правила одни и те же.</p>



<p>Добавляем набор простых правил для базовой настройки. Все необходимое вы потом сможете сами открыть или закрыть по аналогии с существующими правилами:</p>



<pre class="wp-block-preformatted">#!/bin/bash
#
# Объявление переменных
export IPT="iptables"

# Активный сетевой интерфейс
export WAN=ens18
export WAN_IP=10.20.1.16

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Установим политики по умолчанию для трафика, не соответствующего ни одному из правил
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# разрешаем пинги
$IPT -A INPUT -p icmp – icmp-type echo-reply -j ACCEPT
$IPT -A INPUT -p icmp – icmp-type destination-unreachable -j ACCEPT
$IPT -A INPUT -p icmp – icmp-type time-exceeded -j ACCEPT
$IPT -A INPUT -p icmp – icmp-type echo-request -j ACCEPT

# Разрешаем исходящие соединения самого сервера
$IPT -A OUTPUT -o $WAN -j ACCEPT

# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state – state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state – state ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state – state ESTABLISHED,RELATED -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из-за разных значений MTU
$IPT -I FORWARD -p tcp – tcp-flags SYN,RST SYN -j TCPMSS – clamp-mss-to-pmtu

# Отбрасывать все пакеты, которые не могут быть идентифицированы
# и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state – state INVALID -j DROP
$IPT -A FORWARD -m state – state INVALID -j DROP

# Приводит к связыванию системных ресурсов, так что реальный
# обмен данными становится не возможным, обрубаем
$IPT -A INPUT -p tcp ! – syn -m state – state NEW -j DROP
$IPT -A OUTPUT -p tcp ! – syn -m state – state NEW -j DROP

# Открываем порт для ssh (!!!не забудьте указать свой порт, который вы изменили ранее!!!)
$IPT -A INPUT -i $WAN -p tcp – dport 22 -j ACCEPT
# Открываем порт для web сервера
$IPT -A INPUT -i $WAN -p tcp – dport 80 -j ACCEPT
$IPT -A INPUT -i $WAN -p tcp – dport 443 -j ACCEPT

# Записываем правила в файл
/sbin/iptables-save &gt; /etc/iptables_rules</pre>


</br>



<p>Даем файлу права на запуск:</p>



<pre class="wp-block-preformatted"># chmod 0740 /etc/iptables.sh</pre>



<p>Запускаем скрипт:</p>



<pre class="wp-block-preformatted">sh /etc/iptables.sh</pre>



<p>Проверяем правила:</p>



<pre class="wp-block-preformatted"># iptables -L -v -n</pre>



<div class="wp-block-image"><figure class="aligncenter is-resized"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-configure-05.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-configure-05.png" alt="Настройка iptables в debian" class="wp-image-9465" width="1160" height="527"/></a></figure></div>



<p>Проверяем, что правила записались в файл&nbsp;<em>/etc/iptables_rules</em>. Если их там нет, то записываем их вручную.</p>



<pre class="wp-block-preformatted"># /sbin/iptables-save &gt; /etc/iptables_rules</pre>



<p>Правила применились и произошла их запись в файл&nbsp;<em>/etc/iptables_rules</em>. Теперь нужно сделать так, чтобы они применялись при загрузке сервера. Для этого делаем следующее. Открываем файл&nbsp;<em>/etc/network/interfaces</em>&nbsp;и добавляем в него строку pre-up iptables-restore &lt; /etc/iptables_rules Должно получиться вот так:</p>



<pre class="wp-block-preformatted"># cat /etc/network/interfaces

allow-hotplug eth0
iface eth0 inet dhcp
pre-up iptables-restore &lt; /etc/iptables_rules</pre>



<p>Для проверки перезагрузите сервер и посмотрите правила iptables. Должен загрузиться настроенный набор правил из файла&nbsp;<em>/etc/iptables_rules</em>.</p>


</br>



<h2 class="wp-block-heading">Настройка логов cron</h2>



<p>По-умолчанию, в Debian нет отдельного лог файла для событий cron, они все сыпятся в общий лог&nbsp;<em>/var/log/syslog</em>. Лично мне это не очень нравится, я предпочитаю выводить эти события в отдельный файл. Об этом я написал отдельно —&nbsp;вывести логи cron в отдельный файл. </p>



<h2 class="wp-block-heading">Установка и настройка screen</h2>



<p>Я привык в своей работе пользоваться консольной утилитой screen. Изначально она задумывалась как инструмент, который позволяет запустить что-то удаленно в консоли, отключиться от сервера и при этом все, что выполняется в консоли продолжит свою работу. Вы сможете спокойно вернуться в ту же сессию и продолжить работу.</p>



<p>Первое время я именно так и использовал эту утилиту. Редко ее запускал, если не забывал, когда выполнялся какой-то длительный процесс, который жалко было прервать из-за случайного обрыва связи или необходимости отключить ноутбук от сети и куда-то переместиться.</p>



<p>Позже я решил подробнее ознакомиться с этим инструментом и обнаружил, что там есть несколько удобных моментов, которые можно использовать в ежедневной работе. Вот как использую утилиту screen я. При подключении к серверу у меня запускается screen с тремя окнами 1, 2, 3. Первое окно автоматически переходит в каталог /, второе в /etc, третье в /var/log. Я осмысленно назвал эти окна: Main, etc, logs соответственно. Внизу находится строка состояния, в которой отображен список всех открытых окон и подсвечено активное окно.</p>



<p>С помощью горячих клавиш я очень быстро переключаюсь между окнами в случае необходимости.&nbsp;Вот как выглядит мое рабочее окно ssh подключения:</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" decoding="async" src="https://serveradmin.ru/wp-content/uploads/2015/05/debian-config-02.png" alt="настройка screen в debian" class="wp-image-2785" width="974" height="680"/></figure></div>



<p>Переключаюсь между окнами с помощью стандартных горячих клавиш screen: ctrl+a 1, &nbsp;ctrl+a 2,&nbsp;ctrl+a 3. Я специально изменил нумерацию, чтобы она начиналась не с 0 по-дефолту, а с 1. Так удобнее на клавиатуре переключать окна. Кнопка 0 находится слишком далеко от 1 и 2.</p>



<p>Чтобы настроить такую же работу screen, как у меня, достаточно выполнить несколько простых действий. Сначала устанавливаем screen:</p>



<pre class="wp-block-preformatted"># apt install screen</pre>



<p>Создаем в каталоге&nbsp;<em>/root</em>&nbsp;конфигурационный файл&nbsp;<em>.screenrc</em>&nbsp;следующего содержания:</p>



<pre class="wp-block-preformatted"># mcedit /root/.screenrc</pre>



<pre class="wp-block-preformatted">#Выводим строку состояния
hardstatus alwayslastline "%-Lw%{= BW}%50&gt;%n%f* %t%{-}%+Lw%&lt;"

# Добавляем некоторые настройки
startup_message off
defscrollback 1000
defutf8 on
shell -$SHELL

#&nbsp;Создаем несколько окон
chdir
screen -t Main 1
chdir /etc
screen -t etc 2
chdir /var/log
screen -t logs 3

# Активное первое окно после запуска
select 1</pre>



<p>Для знакомства с настройками, горячими клавишами и вариантами применения утилиты screen можно по адресу <a href="http://itman.in/ssh-screen/" target="_blank" rel="noreferrer noopener nofollow">http://itman.in/ssh-screen/</a> Мне помог этот материал. Написано кратко, по делу и доходчиво.</p>


</br>



<h2 class="wp-block-heading">Заключение</h2>



<p>Теперь можно перезагрузить сервер и проверить, все ли в порядке. У меня все в порядке, проверил <img src="https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> На этом базовая настройка сервера debian окончена. Можно приступать к конфигурации различных сервисов, под которые он настраивался. Об этом я рассказываю в отдельных статьях.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%b1%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-debian-%d0%bf%d0%be%d1%81%d0%bb%d0%b5-%d1%83%d1%81%d1%82/">Базовая настройка сервера Debian после установки</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%b1%d0%b0%d0%b7%d0%be%d0%b2%d0%b0%d1%8f-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-debian-%d0%bf%d0%be%d1%81%d0%bb%d0%b5-%d1%83%d1%81%d1%82/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Как установить, изменить время и часовой пояс (timezone) в Debian</title>
		<link>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d0%b8-%d1%87%d0%b0%d1%81%d0%be%d0%b2-2/</link>
					<comments>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d0%b8-%d1%87%d0%b0%d1%81%d0%be%d0%b2-2/#respond</comments>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Mon, 13 Jul 2020 21:40:16 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<guid isPermaLink="false">https://clip-clap.ru/?p=860</guid>

					<description><![CDATA[<p>Системное время — важный параметр в работе сервера, так как на него завязаны почти все службы. Сегодня я расскажу, как</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d0%b8-%d1%87%d0%b0%d1%81%d0%be%d0%b2-2/">Как установить, изменить время и часовой пояс (timezone) в Debian</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Системное время — важный параметр в работе сервера, так как на него завязаны почти все службы. Сегодня я расскажу, как настроить время в сервере Debian — установить его, указать или сменить часовой пояс, а так же настроить автоматическое обновление. Отдельно затрону тему своего сервера времени в локальной сети.</p>



<h2 class="wp-block-heading">Цели статьи</h2>



<ol><li>Показать, как смотреть и настраивать системное время в Debian.</li><li>Рассказать, как управлять часовыми поясами.</li><li>Настроить автоматическую синхронизацию времени через интернет.</li><li>Показать настройку своего ntp сервера в информационной системе.</li></ol>



<h2 class="wp-block-heading">Введение</h2>



<p>Во время установки Debian, сервер автоматически настраивает системное время на основе информации из bios. Инсталлятор предлагает вам выбрать только часовой пояс. При этом, если вы не правильно указали часовой пояс (timezone), его без проблем можно изменить после установки.</p>



<p>Так же ситуация, когда необходимо изменить время или часовой пояс, может возникнуть, если вы арендуете сервер за границей и вам разворачивают систему из готового образа. В таком случае timezone может быть указана не такая, как вы хотите. Надо будет изменить.</p>



<p>Зачем, собственно, следить за точным временем на сервере, кроме непосредственно удобства восприятия этого времени? Причин может быть много. Перечислю основные, которые пришли в голову.</p>



<ul><li>Точное время на сервере необходимо для корректного логирования всех событий и последующего расследования инцидентов. Более того, одинаковое время должно быть на всех серверах, которые участвуют в работе информационной системы. Если это не так, то расследование инцидентов становится затруднительным.</li><li>В доменной середе Windows для корректной работы протокола аутентификации Kerberos требуется примерно одинаковое время на всех участниках домена. Если ваш сервер Debian является членом домена, важно, чтобы его время не сильно отличалось от времени контроллера домена. Его нужно обязательно синхронизировать с ним.</li><li>На сервере может располагаться какой-то сервис, который взаимодействует с пользователями. Например, новостной сайт, где в статьях указано точное время публикации. Если неправильно настроить часы или timezone, может возникнуть ситуация, когда для некоторых пользователей опубликованные материалы будут отображаться со временем из будущего.</li><li>Планировщик cron в своей работе использует системные часы. Если вы хотите предсказуемое поведение запланированных задач, время и часовой пояс должны быть настроены правильно.</li></ul>



<p>Для избежания этих и других проблем, предлагаю приступить к настройке времени, даты и часового пояса на сервере под управлением системы Debian.</p>



<h2 class="wp-block-heading">Как посмотреть и узнать системное время</h2>



<p>Начнем с самого простого — подключимся к серверу по ssh и посмотрим в консоли на текущее время. Сделать это можно с помощью простой команды&nbsp;<strong>date</strong>.</p>



<pre class="wp-block-preformatted"># date
Wed 21 Aug 2019 03:38:12 PM MSK</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-01.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-01.png" alt="Посмотреть время на сервере Debian" class="wp-image-9536"/></a></figure></div>



<figure class="wp-block-table"><table><tbody><tr><td>Wed</td><td>день недели, в данном случае среда</td></tr><tr><td>21 Aug</td><td>число и месяц, 21-е августа</td></tr><tr><td>2019</td><td>год</td></tr><tr><td>03:38:12</td><td>время в формате часы:минуты:секунды</td></tr><tr><td>PM</td><td>обозначение времени суток, am или pm, до или после полудня</td></tr><tr><td>MSK</td><td>часовой пояс, он же timezone</td></tr></tbody></table></figure>



<p>Как вы видите, у нас установлен часовой пояс MSK, текущая дата и время в 12-ти часовом формате. Это не очень удобно. Если вам нужно посмотреть время в 24-х часовом формате, добавьте отображение +%R к date.</p>



<pre class="wp-block-preformatted"># date +%R
16:04</pre>



<p>Подобные параметры удобно использовать в скриптах. Вот наиболее популярные комбинации просмотра текущего времени, которые использую я.</p>



<pre class="wp-block-preformatted"># date +%Y-%m-%d
2019-08-21
# date +%H-%M-%S
16-09-47
# date +%Y-%m-%d_%H-%M-%S
2019-08-21_16-09-50</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-02.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-02.png" alt="Различные форматы вывода текущего времени" class="wp-image-9537"/></a></figure></div>



<p>Также есть еще один способ получить полную информацию о времени сервера Debian — воспользоваться командой&nbsp;<strong>timedatectl</strong>.</p>



<pre class="wp-block-preformatted"># timedatectl status</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-04.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-04.png" alt="Посмотреть время с помощью timedatectl" class="wp-image-9539"/></a></figure></div>



<h2 class="wp-block-heading">Установка и настройка времени в Debian</h2>



<p>Для того, чтобы вручную установить дату, используем упомянутую выше команду date, только уже с дополнительными параметрами.</p>



<pre class="wp-block-preformatted"># date&nbsp;08211555</pre>



<p>Здесь 08 — месяц, 21 — число, 15 — час, 55 — минуты. Таким образом, формат команды получился вот такой —&nbsp;date MMDDhhmm.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-03.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-03.png" alt="Настройка времени в Debian" class="wp-image-9538"/></a></figure></div>



<p>То же самое, только через timedatectl.</p>



<pre class="wp-block-preformatted"># timedatectl set-time "2019-08-21 15:55:00"</pre>



<p>Если вы получили ошибку —&nbsp;<strong>Failed to set time: Automatic time synchronization is enabled</strong>, значит у вас уже настроено автоматическое обновление времени. Об этом подробнее мы поговорим ниже. В таком случае timedatectl, в отличие от date, время менять не будет.</p>



<p>С помощью команды date так же можно посмотреть текущее время системы без учета часового пояса, то есть время по UTC.</p>



<pre class="wp-block-preformatted"># date – utc
Wed 21 Aug 2019 12:56:57 PM UTC</pre>



<p>В выводе видно время относительно нулевого меридиана, без поправок на часовой пояс. После установки корректного времени переходим к настройке часового пояса.</p>



<h2 class="wp-block-heading">Установка, настройка и изменение часового пояса</h2>



<p>Выше я рассказал, как узнать, в каком часовом поясе находятся системные часы сервера debian. В моем случае timezone установлена как MSK, то есть московский часовой пояс. Если у вас указан другой часовой пояс, а вы, к примеру, хотите установить московский, то делается это просто. Смена часового пояса выполняется через timedatectl:</p>



<pre class="wp-block-preformatted"># timedatectl set-timezone Europe/Moscow</pre>



<p>Посмотреть список всех timezоne, доступных для установки на сервере, можно командой:</p>



<pre class="wp-block-preformatted"># timedatectl list-timezones</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-05.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-05.png" alt="Часовые пояса в Debian" class="wp-image-9540"/></a></figure></div>



<p>Перед настройкой или изменением часового пояса, рекомендуется обновить список timezone на сервере. Они периодически меняются.</p>



<pre class="wp-block-preformatted"># apt update &amp;&amp; apt upgrade tzdata</pre>



<p>После того как обновили и настроили часовой пояс, можно приступать к синхронизации времени.</p>



<h2 class="wp-block-heading">Timedatectl для настройки времени в Debian</h2>



<p>В большинстве современных дистрибутивов с systemd служба синхронизации времени уже присутствует в дефолтной установке и реализуется через&nbsp;<strong>systemd-timesyncd</strong>. Эта служба призвана заменить ntpd. Со слов разработчиков, она легче и быстрее, чем ntpd, плюс интегрирована в systemd, поэтому для автоматической синхронизации времени рекомендуется использовать именно ее.</p>



<p>Тут важно понимать, что systemd-timesyncd не может работать в качестве сервера времени, который мы настроим ниже. Так что, если у вас одиночный сервер, вам вполне подойдет timesyncd. Если же вы хотите использовать свой сервер времени, то надо настраивать ntp.</p>



<p>Для начала, давайте проверим, что у нас настроено в качестве службы обновления времени.</p>



<pre class="wp-block-preformatted"># timedatectl</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-06.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-06.png" alt="Проверка обновления времени" class="wp-image-9541"/></a></figure></div>



<p>Синхронизация времени уже включена и работает через timesyncd. Посмотрим ее статус.</p>



<pre class="wp-block-preformatted"># timedatectl timesync-status
       Server: 195.3.254.2 (2.debian.pool.ntp.org)
Poll interval: 17min 4s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: C23ACA94
    Precision: 2us (-19)
Root distance: 42.113ms (max: 5s)
       Offset: -8.977ms
        Delay: 63.598ms
       Jitter: 9.582937s
 Packet count: 19
    Frequency: +7.550ppm
</pre>



<p>В принципе, больше ничего делать не нужно. Синхронизация времени через интернет уже настроена и работает. Время обновляется с сервера 2.debian.pool.ntp.org. Для надежности, можно убедиться, что служба работает, плюс, добавим ее сразу в автозагрузку, если ее там нет.</p>



<pre class="wp-block-preformatted"># systemctl status systemd-timesyncd
# systemctl enable systemd-timesyncd</pre>



<p>Список серверов для синхронизации времени в timedatectl настраивается в конфигурационном файле&nbsp;<em>/etc/systemd/timesyncd.conf</em>.</p>



<h2 class="wp-block-heading">Синхронизация времени с помощью ntp и ntpdate</h2>



<p>Если вам по какой-то причине не подходит описанная выше синхронизация, либо вам нужен свой сервер времени в сети, то timesyncd можно выключить.</p>



<pre class="wp-block-preformatted"># systemctl stop systemd-timesyncd
# systemctl disable systemd-timesyncd</pre>



<p>Проверяем.</p>



<pre class="wp-block-preformatted"># timedatectl</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-07.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-07.png" alt="Отключение systemd-timesyncd" class="wp-image-9542"/></a></figure></div>



<p>Покажу теперь простую утилиту&nbsp;<strong>ntpdate</strong>, с помощью которой можно разово синхронизировать время, не автоматически. Для начала ее нужно установить в систему.</p>



<pre class="wp-block-preformatted"># apt install ntpdate</pre>



<p>Дальше запускаем для разовой синхронизации.</p>



<pre class="wp-block-preformatted"># ntpdate pool.ntp.org
ntpdate[5621]: adjust time server 85.21.78.91 offset -0.020548 sec</pre>



<p>В данном случае pool.ntp.org — адрес сервера времени. Можно использовать любой. Все, время синхронизировано и никаких автоматических служб не запущено.</p>



<p>Если у вас ntpdate выдает ошибку — <strong>the NTP socket is in use, exiting</strong>, значит у вас уже установлена и запущена служба ntp, которая заняла udp порт 123, необходимый для работы ntpdate. Установкой и настройкой этой службы мы и займемся далее.</p>



<p>Для обновления времени сервера можно воспользоваться службой&nbsp;<strong>ntp</strong>. Ее так же надо установить отдельно.</p>



<pre class="wp-block-preformatted"># apt install ntp</pre>



<p>Это старая проверенная служба времени, которую использовали еще задолго до появления systemd и его юнитов. Запустим ее и добавим в автозагрузку.</p>



<pre class="wp-block-preformatted"># systemctl start ntp
# systemctl enable ntp</pre>



<p>После запуска она сразу же автоматически синхронизирует время. Проверим статус службы ntp в Debian.</p>



<pre class="wp-block-preformatted"># systemctl status ntp</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-08.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-08.png" alt="Настройка ntp" class="wp-image-9543"/></a></figure></div>



<p>Синхронизация времени через ntp заработала сразу же. Дополнительная настройка не нужна, если вас не интересует свой сервер времени, который мы настроим ниже.</p>



<p>При этом, для проверки статуса службы времени ntp можно использовать утилиту&nbsp;<strong>ntpq</strong>. Посмотрим статус синхронизации.</p>



<pre class="wp-block-preformatted"># ntpq -p</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-09.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-09.png" alt="Статус синхронизации времени ntp" class="wp-image-9544"/></a></figure></div>



<p>Поясню значения каждого столбца.</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>remote</strong></td><td>Адрес удаленного эталона времени, с которого была синхронизация</td></tr><tr><td><strong>refid</strong></td><td>Указывает, откуда каждый эталон&nbsp;получает точное время. Это могут быть другие сервера времени, система GPS и&nbsp;другое</td></tr><tr><td><strong>st</strong></td><td>Stratum (уровень) это число от 1 до 16, которое указывает&nbsp;на точность эталона. 1- максимальная точность, 16 — сервер недоступен. Уровень вашего сервера будет равен уровню наименее точного удаленного эталона&nbsp;плюс 1.</td></tr><tr><td><strong>poll</strong></td><td>Интервал в секундах между опросами</td></tr><tr><td><strong>reach</strong></td><td>Восьмеричное представление массива из 8 бит, отражающего результаты последних восьми попыток соединения с эталоном. Бит выставлен, если удаленный сервер ответил.</td></tr><tr><td><strong>delay</strong></td><td>Время задержки ответа на запрос о точном времени</td></tr><tr><td><strong>offset</strong></td><td>Разница между вашим и удаленным сервером</td></tr><tr><td><strong>jitter</strong></td><td>Дисперсия (Jitter) — это мера статистических отклонений от значения смещения (поле offset) по нескольким успешным парам запрос-ответ. Чем меньше&nbsp;значение дисперсии, тем лучше, поскольку позволяет точнее синхронизировать время.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Настройка сервера ntp в Debian</h2>



<p>Теперь настроим свой сервер времени, с которого другие наши сервера смогут синхронизировать свои часы. Сервер времени ntp использует отдельный одноименный протокол — Network Time Protocol, который для работы использует UDP порт 123. Перед установкой и настройкой службы времени убедитесь, что на фаерволе открыт этот порт.</p>



<p>Файл конфигурации ntp —&nbsp;<em>/etc/ntp.conf</em>. Привожу минимальную достаточную конфигурацию для своего сервера времени.</p>



<pre class="wp-block-preformatted">driftfile /var/lib/ntp/ntp.drift
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict 192.168.155.0 mask 255.255.255.0 nomodify notrap

pool 0.debian.pool.ntp.org iburst
pool 1.debian.pool.ntp.org iburst
pool 2.debian.pool.ntp.org iburst
pool 3.debian.pool.ntp.org iburst

logfile /var/log/ntp.log
</pre>



<p>Так же я обычно отключаю ipv6 протокол, если он не используется. Для этого в файле&nbsp;<em>/etc/default/ntp</em>&nbsp;заменяем параметр на</p>



<pre class="wp-block-preformatted">NTPD_OPTS='-4 -g'</pre>



<p>После изменения конфигурации, перезапустим ntp и проверим статус службы.</p>



<pre class="wp-block-preformatted"># systemctl restart ntp
# systemctl status ntp</pre>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-10.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-10.png" alt="Статус ntp" class="wp-image-9545"/></a></figure></div>



<p>Теперь убедимся, что она запущена.</p>



<pre class="wp-block-preformatted"># ss -tulnp | grep ntp
udp    UNCONN   0        0          192.168.155.102:123           0.0.0.0:*      users:(("ntpd",pid=6185,fd=18))                                                
udp    UNCONN   0        0                127.0.0.1:123           0.0.0.0:*      users:(("ntpd",pid=6185,fd=17))                                                
udp    UNCONN   0        0                  0.0.0.0:123           0.0.0.0:*      users:(("ntpd",pid=6185,fd=16))                                             
</pre>



<p>Все в порядке, служба ntp запущена и готова принимать подключения. Для примера синхронизирую время одной из windows машин с нашим сервером времени.</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-11.png"><img decoding="async" src="https://serveradmin.ru/wp-content/uploads/2019/08/debian-time-configure-11.png" alt="Синхронизация времени с ntp сервера Debian" class="wp-image-9546"/></a></figure></div>



<p>Теперь другие компьютеры и серверы могут синхронизировать свои часы с нашего сервера Debian, где мы настроили ntp службу в качестве источника времени для остальных.</p>



<p>Если в логе&nbsp;<em>/var/log/ntp.log</em>&nbsp;увидите сообщение —&nbsp;<strong>kernel reports TIME_ERROR: 0x2041: Clock Unsynchronized</strong>, не обращайте внимание. Это не ошибка, а информационное сообщение, говорящее о том, что в момент запуска ntp ядро еще не синхронизировало свое время.</p>



<h2 class="wp-block-heading">Заключение</h2>



<p>Кратко подведу итог опубликованного материала. Мы рассмотрели практически все, что связано со временем на сервере Debian. Причем захватили нюансы systemd, который все больше забирает на себя функционала.</p>



<p>Я показал как устанавливать время, изменять часовой пояс, разово синхронизировать время с помощью ntpdate и настраивать сервер времени ntpd в локальной сети.</p>
<p>Сообщение <a href="https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d0%b8-%d1%87%d0%b0%d1%81%d0%be%d0%b2-2/">Как установить, изменить время и часовой пояс (timezone) в Debian</a> появились сначала на <a href="https://clip-clap.ru">Clip-Clap</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://clip-clap.ru/it/%d1%81%d0%be%d1%84%d1%82-%d0%b8-%d0%be%d1%81/linux/debian/%d0%ba%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d0%b8-%d1%87%d0%b0%d1%81%d0%be%d0%b2-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Кэширование страницы с использованием Disk: Enhanced 
Минифицировано с помощью Disk
Кэширование БД с использованием Disk (Request-wide (широкий запрос) modification query)

Served from: clip-clap.ru @ 2026-07-03 01:43:38 by W3 Total Cache
-->