DHCP сервер Ubuntu 12.04, настройка (загрузки основного ПО STB, обновление версий и т.д.)

Необходимые пакеты:

isc-dhcp-server

nfs-kernel-server

tftp

tftpd

openbsd-inetd

Установка DHCP, NFS, TFTP:

apt-get update
apt-get install isc-dhcp-server nfs-kernel-server nfs-common openbsd-inetd tftp tftpd

NFS

NFS Ubuntu

apt-get install nfs-kernel-server nfs-common

Все настройки хранятся в /etc/exports

Примерное содержание файла exports

# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/srv/stb *(ro,no_root_squash,async,no_subtree_check)

Перезапуск nfs сервера

/etc/init.d/nfs-kernel-server restart

TFTP

Openbsd-inetd TFTP

apt-get install openbsd-inetd tftp tftpd

По умолчанию TFTP сервер настроен на использование директории /srv/tftp. Изменить при необходимости в файле /etc/inetd.conf

Пример файла /etc/inetd.conf:

#:BOOT: TFTP service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
tftp	dgram	udp	wait	nobody	/usr/sbin/tcpd	/usr/sbin/in.tftpd /srv/tftp

Создадим каталог и поместим в него Bootstrap_250, imageupdate, uImage_mag250

mkdir /srv/tftp/250

Изменим права

chown -R nobody /srv/tftp/250

Перезапуск службы inetd

/etc/init.d/openbsd-inetd restart

Проверка работы

echo test > /srv/tftp/250/myfile

Если вы запускаете клиент на локальном компьютере, то укажите IP адрес 127.0.0.1, если же на удаленном компьютере, то укажите IP адрес сервера.

tftp 127.0.0.1
tftp> get myfile

ATFTP (в этом варианте tftp-сервера есть логирование с выбором уровня)

Устнавка и настройка tftp сервера.

В данной статье описывается устновка и настройка tftp-сервера для работы тонких клиентов thinstation. После включения сетевая карта тонкого клиента, связывается с dhcp-сервером. Оттуда тонкий клиент получает такие настройки как свой IP-адрес и IP-адрес tftp-сервера. После этого с tftp сервера загружается образ и настройки thinstation. Есть несколько дистрибутивов tftp-сервера для ubuntu server. Я пробовал tftpd-hpa и atftp. Главным достоинством atftp, является то, что он пишет логи, что очень необходимо на этапе отладки.

Устанавливаем atftp-сервер.

$sudo apt-get install atftpd

Вместе с atftpd-сервером, устанавливается inetd-сервер. По умолчанию именно он управляет atftpd-сервером. Отключим это. В файле конфигурации inetd сервера закомментируем строку с tftp-сервером.

$ sudo vi /etc/inetd.conf

Пример:

#tftp dgram udp4 wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd

Рестартуем inetd-сервер:

$sudo service openbsd-inetd restart

Правим файл конфигурации tftp-сервера:

$sudo vi /etc/default/atftpd

Отключаем использование inetd

USE_INETD=false

Задаем диапазон IP-адресов которую будет обслуживать tftp-сервер.

--mcast-addr 192.168.1.0-255

Задаем уровень логирования tftp-сервера. Можно задать от 0 до 7. При значении 0 atftp будет писать в логи минимальное количество событий. При значении 7, будет писать максимально подробные логи. Все логи atftp-сервера в ubuntu server 10.04 lts по умолчанию пишутся в /var/log/syslog

--verbose

Задаем место расположения папки в которой будут находится файлы tftp-сервера.

/home/tftp

В итоге конфигурационный файл выглядит следующим образом:

USE_INETD=false OPTIONS="--tftpd-timeout 299 --retry-timeout 5 --mcast-port 69 --mcast-addr 192.168.1.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /home/tftp"

Создаем папку для tftp

$sudo mkdir /home/tftp

делаем владельца папкой, пользователя nobody

$ sudo chown -R nobody /home/tftp

Запускаем tftpd-сервер:

$ sudo service atftpd start

Для остановки tftpd-сервера используем команду:

$ sudo service atftpd stop

Для рестарта:

$ sudo service atftpd restart

Что бы проверить работает ли tftp сервер, запустим клиент tftp и скачаем файл pxelinux.0. Я это делал с windows xp, встроенным tftp клентом.

Сначала создадим этот файл в linux:

$ sudo touch /home/tftp/pxelinux.0

Теперь в консоли windows xp набираем команду:

$ tftp.exe 192.168.1.8 GET pxelinux.0 c:\pxelinux.0

Если все в порядке, то вы получите сообщение об успешной передаче файла.

DHCP

apt-get install isc-dhcp-server

eth0 - смотрит наружу

eth1 - смотрит внутрь и раздает DHCP

Пример файла /etc/network/interfaces

# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 # iface eth0 inet dhcp iface eth0 inet static address 192.168.1.120 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 79.142.192.4 79.142.192.130 auto eth1 iface eth1 inet static address 10.1.1.1 netmask 255.255.255.0

Пример файла /etc/default/isc-dhcp-server

# Defaults for dhcp initscript # sourced by /etc/init.d/dhcp # installed at /etc/default/isc-dhcp-server by the maintainer scripts # # This is a POSIX shell fragment # # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="eth1"

Пример файла /etc/dhcp/dhcpd.conf

option ntp-servers 10.1.1.1; option domain-name-servers 10.1.1.1; # option domain-name-servers 192.168.1.1; authoritative; option subnet-mask 255.255.255.0; option routers 10.1.1.1; # option broadcast-address 10.1.1.255; default-lease-time 600; max-lease-time 7200; allow bootp; ############################## Infomir #################################### option space Infomir; option Infomir.autostart code 1 = text; option Infomir.bootargs code 2 = text; option Infomir.mcip code 3 = ip-address; option Infomir.mcport code 4 = integer 16; option Infomir.oppubfile code 9 = text; option Infomir.mcip_img code 10 = ip-address; option Infomir.mcport_img code 11 = integer 16; option Infomir.mcip_mng code 12 = ip-address; option Infomir.mcport_mng code 13 = integer 16; option Infomir.ip_log code 14 = ip-address; option Infomir.port_log code 15 = integer 16; option Infomir.logo_x code 16 = integer 16; option Infomir.logo_y code 17 = integer 16; option Infomir.bg_color code 18 = integer 32; option Infomir.fg_color code 19 = integer 32; option Infomir.VerNumber code 20 = text; option Infomir.DateTime code 21 = text; option Infomir.portal_dhcp code 22 = text; option Infomir.timezone code 23 = text; option Infomir.update_url code 24 = text; option Infomir.update_sboot code 25 = text; option Infomir.update_ver code 26 = text; option Infomir.update_mode code 27 = text; option Infomir.update_sboot_ver code 28 = text; ############################## BOOT MAG250 ################################ ##### Путь к ядру. Путь к rootfs в случае загрузки основного ПО по DHCP (например сбросили в дефолт из меню бутлоадера) class "MAG250_boot" { match if (( option vendor-class-identifier="InfomirMAG250boot")); filename "stb/250/216r5/uImage_mag250 "; next-server 10.1.1.1; option root-path "10.1.1.1:/srv/stb/250/216r5/rootfs-0.2.16r5"; option ntp-servers 10.1.1.1; vendor-option-space Infomir; # option Infomir.mcip 224.30.0.50; # option Infomir.mcport 9000; } ######################### UPDATE BOOT MAG250 ############################## # class "MAG250_upglogo" { # match if (( option vendor-class-identifier="InfomirMAG250upglogo")); # filename "mag250/logo.bmp.gz"; # next-server 10.1.1.1; # option ntp-servers 10.1.1.1; # vendor-option-space Infomir; # option Infomir.logo_x 0; # option Infomir.logo_y 0; # option Infomir.bg_color 0x00000000; # option Infomir.fg_color 0x00ffffff; # option Infomir.oppubfile "mag250/OP.KEY"; # } class "MAG250_vendor" { match if (( option vendor-class-identifier="InfomirMAG250")); next-server 10.1.1.1; option ntp-servers 10.1.1.1; vendor-option-space Infomir; # option Infomir.mcip 224.30.0.50; # option Infomir.mcport 9000; # option Infomir.mcip_img 224.30.0.51; # option Infomir.mcport_img 9001; # option Infomir.portal_dhcp "http://10.1.1.1/stalker_portal/c/index.html"; ###### Проверка версии. Если не совпадает, отправляем на обновление по указанным URL. ##### option Infomir.update_url "tftp://10.1.1.1/stb/250/216r5/imageupdate_250_216r5_pub"; option Infomir.update_ver "216"; option Infomir.update_mode "tftp://10.1.1.1/stb/250/216r5/Bootstrap_250_216r5"; } # class "MAG250_upgrade" { # match if (( option vendor-class-identifier="InfomirMAG250upgrade")); # vendor-option-space Infomir; # option Infomir.mcip 224.30.0.50; # option Infomir.mcport 9000; # option Infomir.mcip_img 224.30.0.51; # option Infomir.mcport_img 9001; # } ############################## NETWORK #################################### subnet 10.1.1.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; next-server 10.1.1.1; pool { range 10.1.1.10 10.1.1.254; next-server 10.1.1.1; option ntp-servers 10.1.1.1; } }

IGMP Proxy

IGMP Proxy

Gateway

Настройка шлюза