Необходимые пакеты:
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
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
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, является то, что он пишет логи, что очень необходимо на этапе отладки.
$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
$sudo service openbsd-inetd restart
$sudo vi /etc/default/atftpd
USE_INETD=false
--mcast-addr 192.168.1.0-255
/var/log/syslog
--verbose
/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"
$sudo mkdir /home/tftp
$ sudo chown -R nobody /home/tftp
$ sudo service atftpd start
$ 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
Если все в порядке, то вы получите сообщение об успешной передаче файла.
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; } }