Если вы системный администратор, либо очень часто сталкиваетесь с ремонтом ПК, наверняка встречали ситуации когда необходимо реанимировать систему, восстановить данные, разбить жесткий диск на разделы, исправить загрузчик, или произвести диагностику железа. А если необходимо установить операционную систему не на один компьютер, а на 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 Masquerading, Network 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
P.S. Будут вопросы, задавайте в комментариях, с удовольствием отвечу.
Автор статьи Дмитрий Бобриков.
Удачи.
Итак приступим.
Имеем:
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 Masquerading, Network 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
P.S. Будут вопросы, задавайте в комментариях, с удовольствием отвечу.
Автор статьи Дмитрий Бобриков.
Удачи.
Очень интересно !
ОтветитьУдалитьДоброго времени суток. Не совсем понятно про 2 сетевые карты - для PXE хватит и 1. 2 нужно если мы хотим этим же сервером раздать интернет.
ОтветитьУдалитьДоброго времени, далее планируется статья о без дисковых машинах, вот им то и будет раздаваться интернет. Всё верно для PXE достаточно одной карточки.
УдалитьНу могу посоветовать тогда по шлюзу для инета - горький опыт научил делать его в виртуалке) Так как при падении сервака поднять шлюз на другой машине займет пару минут.... но это уже лирика
УдалитьКонечно, мы тут все и собрались для того что бы поделиться опытом. Подозреваю вы говорите о Clonezilla ? В среде виртуализации снапшот, настроил систему - сделай снапшот, если после обновок или настроек траблы - откатился назад. А вообще рекомендуют бэкапить конфиги, раскатал чистенькую систему вкинул конфиги и всё работает. Но это- лирика )
Удалитьмне вот что не понятно :" если в ПК отсутствует привод CD/DVD, а флеш карты под рукой не оказалось в настоящий момент"то от куда мы " Имеем:
ОтветитьУдалить1. Чистую, предустановленную ОС Ubuntu 14.04;"
"Не оказалось" - имеется в виду на КЛИЕНТСКОЙ машине. Статья о том, как превратить Ubuntu в СЕРВЕР, с помощью которого клиентские машины смогут загружаться по сети в аварийных ситуациях.
УдалитьЗдрасьте! Научите, пожалуйста, настроить сеть между двумя компьютерами linux. Один - xUbuntu, второй - LUbuntu. на Х имеется SSL/SSH VNC вот только я ничего не понимаю в этих "прокси-шмокси"...
УдалитьЗаранее благодарю!!!
ну да,понятно.давайте вторую часть,тут всё ясно :соединились с клиентскими компьютерами прямо в биос.если я чего понял не так поправьте.а две сетевые карты это две железяки в моём компьютере должны стоять?
ОтветитьУдалитьЕсли в последующем раздавать интернет на без дисковые машины не нужно, а достаточно только PXE загрузки то сойдёт и одна сетевая карта.
УдалитьЕще было бы не плохо сразу поднять nfs сервер
ОтветитьУдалитьА как Вы используете nfs ?
Удалитьпри установки ubuntu через pxe. Параметр netboot
Удалитькак я понимаю что предположительно клиентские машины без установленной ОС?
ОтветитьУдалитьЕстественно ! Для этого и есть сервер сетевой загрузки. Установка ОС, Запуск ОС Live CD и Windows PE, запуск инструментов диагностики из сети.
УдалитьПродолжение ждем-с..
ОтветитьУдалить