Содержание

Ключевые слова: Х-терминал, linux, LTSP, Linux Terminal Server Project, терминальный linux-сервер, бездисковая станция, ПК без жесткого диска, использование старых компьютеров, diskless workstation, thin client, asplinux, использование Linux в офисе, X-terminal

Неполадки DHCP

После правильной инициализации загрузочного образа он посылает через сетевой интерфейс широковещательные DHCP-запросы, в надежде найти работающий в локальной сети DHCP-сервер. Если вашему Х-терминалу улыбнулась удача и на его запросы откликнулся DHCP-сервер, то на экране это должно выглядеть примерно так:

Loading ROM image ......................
ROM segment 0x0000 length 0x0000 reloc 0x00020000
Etherboot 5.2.2. (GPL) http://etherboot.org Tagged ELF for [NE2000/PCI]
Relocation _text from [00013d70, 00022800) to [01ef1570, 01f00000)
Boot from (N)etwork or (Q)uit?
Probing pci nic ...
[rtl8029]
NE2000 base 0xfcc0, addr 00:02:44:2B:02:4E
Searching for server (DHCP) ...
..Me: 192.168.1.6, Server: 192.168.1.1, Gateway 192.168.1.1
Loading 192.168.1.1:/lts/vmlinuz-2.4.24-ltsp-1 ... (NBI) .....
.......

Об успешности получения ответа от DHCP-сервера свидетельствует строка, которая начинается с “Me:”. Далее в ней располагаются адрес, присвоенный Х-терминалу (192.168.1.6), адрес сервера (Server: 192.168.1.1) и шлюз по умолчанию (Gateway 192.168.1.1). Теперь смело можно переходить к разделу “Проблемы с TFTP”.

Если вы не увидели на экране строки с присвоенным Х-терминалу сервером IP-адреса, то это означает, что налицо ошибки в функционировании DHCP-сервера. О неполадках в работе DHCP говорит наличие такого текста на экране Х-терминала (сообщение “Searching for server (DHCP) ...” и появляющиеся точки с интервалом в несколько секунд):

Loading ROM image ......................
ROM segment 0x0000 length 0x0000 reloc 0x00020000
Etherboot 5.2.2. (GPL) http://etherboot.org Tagged ELF for [NE2000/PCI]
Relocation _text from [00013d70, 00022800) to [01ef1570, 01f00000)
Boot from (N)etwork or (Q)uit?
Probing pci nic ...
[rtl8029]
NE2000 base 0xfcc0, addr 00:02:44:2B:02:4E
Searching for server (DHCP) ...
.....

Найти причину подобных ошибок иногда бывает очень сложно, но с помощью простых рекомендаций можно значительно сократить количество возможных вариантов.

Перед началом диагностики необходимо проверить:

  1. Подключен ли физически Х-терминал к той же локальной сети, что и DHCP-сервер?
  2. Горят ли при включении индикаторы сетевого адаптера Х-терминала?
  3. Каким кабелем подключен Х-терминал к серверу? Если используется схема без сетевого коммутатора (концентратора), то следует использовать перекрестный кабель (cross-over), а не прямой (straight-thru), и наоборот;
  4. В больших организациях часто можно встретить неординарные способы построения локальных сетей, когда из-за неправильного проектирования на практике встречаются схемы, где между удаленными участками локальной сети расположен целый каскад концентраторов. В таком случае к удаленному компьютеру могут попросту не доходить широковещательные запросы. Для предотвращения подобных проблем попробуйте подключить Х-терминал самым простым способом к DHCP-серверу.

Если предпринятые меры не привели к положительному результату, значит проблема в самом DHCP-сервере. Для начала следует проверить запущен ли вообще данный демон на сервере Х-терминалов. Выполняем команду:

$ netstat -an | grep ":67"
udp        0      0 0.0.0.0:67              0.0.0.0:*

Полученный ответ свидетельствует, о том что на сервере в фоновом режиме работает программа, которая ожидает датаграммы на UDP-порту с номером 67. Также можно утверждать, что датаграммы ожидаются на всех сетевых интерфейсах (0.0.0.0:*). В принципе такое поведение типично для DHCP-сервера, но чтобы точно удостовериться в этом, давайте выполним еще одну команду:

$ ps aux | grep dhcpd
root     28617  0.0  0.0  2304  512 ?        S     2004   0:00 /usr/sbin/dhcpd
mikola   14987  0.0  0.0  3768  600 pts/0    S    16:21   0:00 grep dhcpd

В данном примере первая строка (/usr/sbin/dhcpd) означает, что DHCP-сервер работает. Удостовериться в этом можно также, выполнив интуитивно более понятную команду:

$ /sbin/service dhcpd status
dhcpd (pid 28617) running...

Если вы не увидели ничего похожего, то сейчас самое время вручную запустить на выполнение демон dhcpd. В операционной системе ASPLinux это можно сделать такой командой:

# /sbin/service dhcpd start
Starting dhcpd:                                              [  OK  ]

В данном примере демон dhcpd запустился нормально, и сейчас самое время снова проверить загрузку удаленного Х-терминала. Если при ручном запуске вы увидели на экране ошибку, то это означает, что в конфигурационном файле /etc/dhcpd.conf допущены неточности, исправить которые необходимо в первую очередь. Просмотреть сообщения об ошибках при запуске демона dhcpd возможно, если выполнить такую команду:

# grep dhcpd /var/log/messages | tail
Feb  1 10:30:36 xtserver dhcpd: No subnet declaration for eth1 (192.168.0.26).
Feb  1 10:30:36 xtserver dhcpd: ** Ignoring requests on eth1.  If this is not what
Feb  1 10:30:36 xtserver dhcpd:    you want, please write a subnet declaration
Feb  1 10:30:36 xtserver dhcpd:    in your dhcpd.conf file for the network segment
Feb  1 10:30:36 xtserver dhcpd:    to which interface eth1 is attached. **
Feb  1 10:30:36 xtserver dhcpd: 
Feb  1 10:30:36 xtserver dhcpd: Listening on LPF/eth0/00:80:48:25:a8:ca/WORKSTATIONS
Feb  1 10:30:36 xtserver dhcpd: Sending on   LPF/eth0/00:80:48:25:a8:ca/WORKSTATIONS
Feb  1 10:30:36 xtserver dhcpd: Sending on   Socket/fallback/fallback-net
Feb  1 10:30:36 xtserver dhcpd: запуск dhcpd succeeded

Пример работоспособной конфигурации DHCP-сервера и файла /etc/dhcpd.conf можно найти в разделе "Конфигурирование сетевых служб" главы "Настройка сервера", которая как раз и посвящена настройке сервера Х-терминалов.

Если ручной запуск демона dhcpd помог устранить проблему с загрузкой Х-терминала, то сейчас необходимо проверить настройку автоматического запуска демона dhcpd в уровне выполнения номер 5 (runlevel 5):

$ /sbin/chkconfig --list dhcpd
dhcpd           0:off   1:off   2:off   3:off   4:off   5:on    6:off

В данном примере с уровнем выполнения все в порядке. Если вы увидели другой результат, выполните от имени суперпользователя такую команду:

# /sbin/chkconfig --level 5 dhcpd on

Пока интересно, читаем дальше!

Авторское право © Сеник Николай, 2004-2006