27 мая 2008 г.

Закрываем IceCast в CHROOT и регистрируем в каталоге dir.xiph.org

Задача изоляции IceCast в CHROOT решается больее чем просто:
1. копируем в директорию изоляции IceCast директории /admin /log /web и их содержимое;
2. правим /etc/icecast/icecast.xml

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

В первую очередь сделал:
# ldd `which icecast`
linux-gate.so.1 => (0xffffe000)
libcurl.so.4 => /usr/lib/libcurl.so.4 (0xb7eba000)
libidn.so.11 => /usr/lib/libidn.so.11 (0xb7e8a000)
libssl.so.0 => /usr/lib/libssl.so.0 (0xb7e4a000)
libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0xb7d0c000)
libtheora.so.0 => /usr/lib/libtheora.so.0 (0xb7cd2000)
libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0xb7ca9000)
libogg.so.0 => /usr/lib/libogg.so.0 (0xb7ca4000)
libxslt.so.1 => /usr/lib/libxslt.so.1 (0xb7c71000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb7b58000)
libdl.so.2 => /lib/libdl.so.2 (0xb7b54000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7b3f000)
libm.so.6 => /lib/libm.so.6 (0xb7b18000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7b01000)
libc.so.6 => /lib/libc.so.6 (0xb79bf000)
/lib/ld-linux.so.2 (0xb7efd000)

и затем скопировал все необходимые библиотеки в соответствующие директории в CHROOT.

Как в процессе выяснилось, для регистрации нашего севера в каталоге также необходимо скопировать билиотеку /lib/libresolv.so

Далее создаем в CHROOT директорию /etc и размещаем там файлы:
/etc/host.conf
/etc/hosts
/etc/resolv.conf
/etc/nsswitch.conf

Теперь настраиваем наш source-клиент на регистрацию, заполняем информацию и проверяем как прошла регистрация.

Для тех кто за файерволом необходимо открыть нашему серверу порт 80 на исходящее соединение с dir.xiph.org.

У меня так и не получилось добится от IceCast'a разрешать имена хостов через DNS. Пришлось прописать адрес в /etc/hosts:

# For loopbacking.
127.0.0.1 localhost
192.168.0.21 icecast.rest.str.ru

# End of hosts.

193.218.105.163 dir.xiph.org