четверг, 27 августа 2015 г.

Сервер сетевой загрузки в среде Linux


Если вы системный администратор, либо очень часто сталкиваетесь с ремонтом ПК, наверняка встречали ситуации когда необходимо реанимировать систему, восстановить данные, разбить жесткий диск на разделы, исправить загрузчик, или произвести диагностику железа. А если необходимо установить операционную систему не на один компьютер, а на 10 или более? Что делать если в ПК отсутствует привод CD/DVD, а флеш карты под рукой не оказалось в настоящий момент? Что делать если мы хотим работать с системой через тонкий клиент к примеру  с дистрибутивамиTails или Kali linux? В этом случае нам поможет сервер сетевой загрузки.

Итак приступим.



Имеем:

1. Чистую, предустановленную ОС Ubuntu 14.04;
2. 2 сетевые карты: eth0 — смотрящая в интернет и eth1- смотрящая в
локальную сеть.

Хотим получить:

Сервер сетевой загрузки на базе DNS, DHCP и TFTP сервера dnsmasq


! Все команды необходимо выполнять с привилегиями root:
sudo su 


Обновляемся:

# apt-get update -y; apt-get upgrade -y; apt-get dist-upgrade -y



Теперь необходимо отредактировать сетевые интерфейсы. Это можно
сделать при помощи встроенного редактора nano.


# nano /etc/network/interfaces


Приведем конфиг к следующему виду:


auto eth0
iface eth0 inet static
address 172.18.0.106
netmask 255.255.240.0
gateway 172.18.0.1
dns-nameservers 172.18.0.1 208.67.222.222

auto eth1
iface eth1 inet static
address 192.168.31.1
netmask 255.255.255.0

post-up /etc/nat

! Внимание, если eth0 получает адрес от DHCP, необходимо это указать:

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.31.1
netmask 255.255.255.0

post-up /etc/nat


Сохраним настройки сетевых интерфейсов при помощи комбинации клавиш Ctrl+O и выходим из nano Ctrl+X.


Теперь необходимо перезапустить сеть:


# service networking restart



Далее нам необходима технология NAT. Настройку NAT мы будем
осуществлять при помощи утилиты iptables.


NAT (от англ. Network Address Translation — «преобразование сетевых
адресов») — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Также имеет названия IP MasqueradingNetwork Masquerading и Native Address Translation.

IPTables — утилита командной строки, является стандартным интерфейсом, управления работой межсетевого экрана (брандмауэра) netfilter для ядер Linux.


Создадим файл:


# touch /etc/nat && nano nat


Впишем следующие правила для iptables:


#!/bin/sh


#Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward


#Разрешаем траффик на lo
iptables -A INPUT -i lo -j ACCEPT

#Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT


#Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.31.0/24 -j MASQUERADE


#Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT


#Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i eth0 -o eth1 -j REJECT


Сохраним наши правила CTRL+O


Дадим нашему файлу право на исполнение:


# chmod +x /etc/nat; reboot



Для раздачи сетевых адресов, DNS, TFTP сервера установим dnsmasq.


Dnsmasq — легковесный и быстроконфигурируемый DNS-, DHCP- и TFTP
сервер, предназначенный для обеспечения доменными именами и связанными с ними сервисами небольшие сети. Может обеспечивать именами локальные машины, которые не имеют глобальных DNS-записей. DHCP-сервер интегрирован с DNS-сервером и даёт машинам с IP-адресом доменное имя, сконфигурированное раннее в конфигурационном файле. Поддерживает привязку IP-адреса к компьютеру или автоматическую настройку IP-адресов из заданного диапазона и BOOTP для сетевой загрузки бездисковых машин.


# apt-get install dnsmasq


Начнем редактирование /etc/dnsmasq.conf


# nano /etc/dnsmasq.conf

listen-address=127.0.0.1, 192.168.31.1 - # Указывает какую подсеть будет слушать dnsmasq 

dhcp-range=192.168.31.100,192.168.31.199,255.255.255.0,12h # Указывает диапозон выдаваемых ip адресов и срок их аренды 

interface=eth1 - # Интерфейс который будет обслуживать dnsmasq 

server=8.8.8.8 - # DNS вышестоящих серверов в данном случае google 

enable-tftp - # Активировать TFTP сервер 

tftp-root=/home/tftpboot - # Корневой каталог для него 

dhcp-boot=pxelinux.0 - # Загрузчик который будет отдаваться по сети 

Перезапустим dnsmasq: 

# service dnsmasq restart 


Если всё настроено правильно при подключении локальных машин в сеть
192.168.31.0/24 машины должны получить сетевые адреса и иметь
возможность пользоваться интернетом.


Создадим рабочие директории:


# sudo mkdir -p /home/tftpboot/images/
# sudo mkdir /home/tftpboot/pxelinux.cfg

Перезапустим серис:


# sudo service dnsmasq restart


Теперь нам необходимо получить загрузочные программы из проекта syslinux.
SYSLINUX Project — набор загрузчиков ядра Linux (автор H. Peter Anvin),
состоит из нескольких отдельных загрузчиков, самым известным из которых является isolinux. В их число входит и загрузчик syslinux, давший название всему проекту.

# cd /tmp; wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.05.tar.gz

! Существуют более поздние стабильные версии syslinux, но почему то у меня завелось именно с этой.


Установим Midnight Commander и запустим его:

Midnight Commander (mc, ми́днайт-кома́ндер, «полуночный командир») —
один из файловых менеджеров с текстовым интерфейсом типа Norton
Commander для UNIX-подобных операционных систем, а также Microsoft
Windows и Windows NT, OS/2, Mac OS X (но не Mac OS 9).


# apt-get install mc -y; mc; exit


Входим в скачанный архив, просто переместив выделение к нему и нажав
Enter. Из него в директорию /home/tftpboot/ надо скопировать несколько
файлов — pxelinux.0 из папки /core, menu.c32 из /com32/menu и memdisk из одноимённого каталога.


Редактируем default:


sudo nano /home/tftpboot/pxelinux.cfg/default


Запишем в этот файл следующие строки:


DEFAULT menu.c32
TIMEOUT 600
MENU TITLE -=My netboot server=-
LABEL HDDBoot
MENU LABEL Local Boot
MENU DEFAULT
LOCALBOOT 0


LABEL Memtest86+
MENU LABEL Memtest86+
KERNEL images/memtest


label Victoria
kernel memdisk
initrd images/viki.iso
APPEND iso raw


Сохраним файл при помощи Ctrl+O и закроем Ctrl+X.


Скачаем образы популярных программ memtest86 для тестирования
оперативной памяти и Victoria для тестирования жесткого диска на наличие поврежденных секторов по следующей ссылке:

https://cloud.mail.ru/public/Mv73/z2UZQcGQ9


Достаем из архива эти 2 файла и помещаем в директорию home/tftpboot/images/ на нашем сервере. Сделать это можно при помощи программы WinScp не буду заострять на этом внимание. Перезапускаемся командой:

 # sudo reboot.

Теперь если на клинской машине в BIOS включена опция PXE boot и мы указали загрузку с PXE, то при старте компьютера появится меню нашей сетевой загрузки.


! Образы Виктории и Memtest86 можно так же скачать на официальных сайтах этих программ:

http://www.memtest.org/
http://hdd-911.com/



На этом первая часть статьи заканчивается. Вторым номером будет загрузка по сети linux LiveCD и windows PE дистрибутивов.

При написании статьи использовались материалы по следующим ссылкам:



http://www.3dnews.ru/workshop/625306

Автор статьи Дмитрий Бобриков.


источник

Комментариев нет:

Отправить комментарий