LINUX.ORG.RU

Настройка правил tftp-hpa


0

1

Здравствуйте! Я хочу чтобы файл test, мой tftp сервер отдавал мне при всех комбинациях слова test вне зависимости от регистра, т.е. Test, TEST, TeSt, TEst и т.д. Насколько мне известно любой сервер tftp под Linux чувствителен к регистру, но есть один tftp сервер tftp-hpa, для которого можно создать правила замены символов, которые содержатся в строке запроса. Т.о. я решил создать правила, которые заменяют все заглавные буквы на строчные. Например если я делаю запрос get TeSt, то сервер заменит слово TeSt на test, а именно первую и третью букву T->t и S->s и я естественно получу свой файл.
Что я делаю:
1. Установил Ubuntu Server 10.10
2. Установил Samba (sudo apt-get install samba)
3. Настроил Samba. Содержимое /etc/smb.conf:

[global]
workgroup = WORKGROUP
security = share
[tftp]
path = /srv/tftp
guest only = yes
writeable = yes

4. Создал директорию и дал права доступа 777 и владельца nobody (sudo mkdir -m 777 /srv/tftp и sudo chown nobody /srv/tftp)
5. Установил tftp-hpa (sudo apt-get install tftp-hpa tftpd-hpa)
6. Настроил tftp-hpa. Содержимое /etc/default/tftpd-hpa:

# /etc/default/tftpd-hpa
TFTP_USERNAME=«tftp»
TFTP_DIRECTORY=«/srv/tftp»
TFTP_ADDRESS=«0.0.0.0:69»
#TFTP_OPTIONS="--security"

7. Проверил работоспособность tftp сервера. Создал файл test в /srv/tftp (права доступа и владелец = 777 и nobody). Далее
tftp localhost
get test
Все работает. Файл был успешно передан в мою директорию. Содержимое не пострадало. Пробую получить get Test, сервер его естественно не находит т.к. правил я еще не создал.
8. Создаю файл tftpd.rules (т.е. правила замены) со следующим содержанием:
rg \\ /
rg A a
rg B b
rg C c
rg D d
rg E e
rg F f
rg G g
rg H h
rg I i
rg J j
rg K k
rg L l
rg M m
rg N n
rg O o
rg P p
rg Q q
rg R r
rg S s
rg T t
rg U u
rg V v
rg W w
rg X x
rg Y y
rg Z z
Кладу его в каталог /etc (хотя не важно как он будет называться и где он будет лежать если я правильно понимаю)
9. Редактирую /etc/default/tftpd-hpa:

# /etc/default/tftpd-hpa
TFTP_USERNAME=«tftp»
TFTP_DIRECTORY=«/srv/tftp»
TFTP_ADDRESS=«0.0.0.0:69»
#TFTP_OPTIONS="-m /etc/tftpd.rules"

10. Перезапускаю сервер (sudo restart tftpd-hpa)
11. Проверяю работоспособность п.7 и получаю в ответ ошибку:
Error code 2: Only absolute filenames allowed
12. Редактирую /etc/default/tftpd-hpa:

# /etc/default/tftpd-hpa
TFTP_USERNAME=«tftp»
TFTP_DIRECTORY=«/srv/tftp»
TFTP_ADDRESS=«0.0.0.0:69»
#TFTP_OPTIONS="--security"

13. Перезапускаю сервер (sudo restart tftpd-hpa)
14. Проверяю работоспособность п.7 и получаю в ответ ошибку:
Error code 2: Only absolute filenames allowed

В чем подвох не могу понять. Пожалуйста помогите!



Последнее исправление: MaU (всего исправлений: 2)

Ответ на: комментарий от silw

С правами на файлы все в порядке. Спасибо за помощь. Дело в том, что я еще новичок в Linux, поэтому возникает очень много вопросов. Я понял в чем причина. Дело в том, что нужно указывать не только имя файла, но и путь к нему. Такое имя называется абсолютным. Что собственно мне и говорила ошибка Error code 2: Only absolute filenames allowed т.е. допустимы только абсолютные имена файлов (к сожалению я не знал, что такое абсолютные имена, а погуглить как-то не сообразил). Например в моем случае вместо get test нужно указывать get /srv/tftp/test.

В первом посте у меня закралась опечатка (у меня этой ошибки не было):

Было:
# /etc/default/tftpd-hpa
TFTP_USERNAME=«tftp»
TFTP_DIRECTORY=«/srv/tftp»
TFTP_ADDRESS=«0.0.0.0:69»
#TFTP_OPTIONS="--security"
Нужно:
# /etc/default/tftpd-hpa
TFTP_USERNAME=«tftp»
TFTP_DIRECTORY=«/srv/tftp»
TFTP_ADDRESS=«0.0.0.0:69»
TFTP_OPTIONS="--security"

Было:
# /etc/default/tftpd-hpa
TFTP_USERNAME=«tftp»
TFTP_DIRECTORY=«/srv/tftp»
TFTP_ADDRESS=«0.0.0.0:69»
#TFTP_OPTIONS="-m /etc/tftpd.rules"
Нужно:
# /etc/default/tftpd-hpa
TFTP_USERNAME=«tftp»
TFTP_DIRECTORY=«/srv/tftp»
TFTP_ADDRESS=«0.0.0.0:69»
TFTP_OPTIONS="-m /etc/tftpd.rules"

Случайно за комментировал последнюю строку.

MaU
() автор топика
Ответ на: комментарий от MaU

Появилась новая проблема. Локально tftp сервер работает на ура. Доступ с аналогичной ОС (Ubuntu Server 10.10) по tftp получаю тоже без проблем. Пробую PXE загрузку и вот тут возникает проблема:
ARP timeout
TFTP cannot open connection
Все манипуляции провожу в WMWare. В качестве dhcp сервера использую dhcp3-server (sudo apt-get install dhcp3-server). Настроил его следующим образом:
subnet 192.168.133.0 netmask 255.255.255.0
{
range dynamic-bootp 192.168.133.135 192.168.133.145;
default-lease-time 600;
max-lease-time 7200;
filename «pxelinux.0»;
server-name «ubuntu»;
next-server ubuntu;
}

Изменил настройки tftpd-hpa (добавил ключ -s, чтобы tftp сервер использовал относительные имена):

# /etc/default/tftpd-hpa
TFTP_USERNAME=«tftp»
TFTP_DIRECTORY=«/srv/tftp»
TFTP_ADDRESS=«0.0.0.0:69»
TFTP_OPTIONS="-s -m /etc/tftpd.rules"

Помогите пожалуйста!

MaU
() автор топика
Ответ на: комментарий от MaU

Оказывается почему то по имени server-name «ubuntu»; мой сервер было не видно прописал ip и все заработало.

MaU
() автор топика
Ответ на: комментарий от MaU

И снова проблема. tftp сервер файл то передает но имя у него почему, такое же как и у запроса. Например: get \install\myfyle - имя файла не myfile, а \install\myfyle.
Почему такое происходит подскажите пожалуйста!

MaU
() автор топика
Ответ на: комментарий от MaU

Оказывается, что это нормальная работа tftp сервера. Чтобы получить файл с именем myfyle, нужно в конце указать имя файла. Например: \install\myfyle myfyle.

MaU
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.