Выдаем Предупреждение О Необходимости Использования Прокси

Иногда в локальной сети возникает необходимость предоставить пользователям доступ в Интернет через прокси-сервер.

Например, для отслеживания трафика или ограничения доступа к определенным ресурсам.

Однако использование прозрачного прокси либо невозможно, либо нежелательно.



Мы информируем пользователей

Можно, конечно, просто разослать всем рассылку с указанием параметров.

Но, как показывает практика, это не избавляет полностью от ненужных вопросов.



Делаем жизнь проще

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

Для этого нам нужно будет установить на шлюз веб-сервер и настроить его на отображение страницы с этим сообщением.



Выбор сервера

Особо продвинутые люди могут спросить: зачем что-то выбирать, когда есть Apache? Отвечу заранее: Apache в данном случае очень избыточен и будет только тратить ресурсы, которых у шлюза скорее всего уже мало.

Поэтому воспользуемся более простым вариантом.

Серверу необходимо будет иметь возможность прослушивать порт 80 (поскольку inetd нам не нужен) и поддерживать пользовательские сообщения об ошибках (нам нужно будет отвечать на 404).

thttpd — хороший вариант.

Установка и настройка

Далее предполагается, что на шлюзе установлен Debian Etch. Установите thttpd обычным способом:


# aptitude install thttpd

Создаем файл /var/www/index.html и в нем описываем все необходимое, чтобы пользователь мог легко настроить свой браузер: адрес прокси-сервера, порт, пожелания хорошо провести время и тому подобное.

Чтобы пользователь при попытке выхода увидел не сообщение об ошибке, а нашу красивую инструкцию, добавляем в iptables правило:



# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT

Теперь любая попытка выйти наружу через порт 80 закончится на thttpd. Открытие хабрахабр.

ру и вместо этого мы видим то, что хотим видеть.



Ловля 404

Как видите, при попытке доступа к какой-то странице, не являющейся корневой домена, мы получим ошибку 404. В thttpd установить собственный обработчик ошибок очень просто.

Нам даже не нужно ничего менять в конфиге.



# mkdir /var/www/errors # cd /var/www/errors # ln -s .

/index.html err404.html

К сожалению, thttpd пытается показать свою важность и добавляет собственный баннер внизу страницы, портя наш красивый и валидный XHTML Strict. К счастью, это излечимо.



Практическая хирургия

Берем машину с той же версией Debian, что и на шлюзе.

Пойдем packages.debian.org и скачиваем оттуда исходники пакета в виде трёх файлов:



$ wget -c http://ftp.de.debian.org/debian/pool/main/t/thttpd/thttpd_2.23beta1-5.dsc http://ftp.de.debian.org/debian/pool/main/t/thttpd/thttpd_2.23beta1.orig.tar.gz http://ftp.de.debian.org/debian/pool/main/t/thttpd/thttpd_2.23beta1-5.diff.gz

Устанавливаем утилиты для разработчика:


$ sudo aptitude install dpkg-dev build-essential fakeroot debhelper

Распакуйте пакет:


$ dpkg-source -x thttpd_2.23beta1-5.dsc $ cd thttpd-2.23beta1

Отредактируйте файл config.h. Находим там следующую строку:


#define ERR_APPEND_SERVER_INFO

И мы это прокомментируем:


/*#define ERR_APPEND_SERVER_INFO*/

Мы используем именно этот тип комментариев, потому что это C, а не C++.

Вы также можете сделать некоторые другие настройки.

Например, отключите поддержку CGI и установите кодировку по умолчанию UTF-8. Прочтите комментарии в конфиге.

Затем таким же образом откройте файл debian/changelog. Необходимо увеличить номер версии пакета, чтобы при следующем обновлении он не был перезаписан версией из репозитория.

Это может произойти, даже если пакет фактически не был обновлен.

В начале файла мы видим запись следующего вида:



thttpd (2.23beta1-5) unstable; urgency=high * Applied patch from Steve Kemp <[email protected]> on thttpd.logrotate to fix the insecure use of temporary files when invoked by logrotate [CVE-2006-4248] (Closes: #396277).

-- Daniel Baumann <[email protected]> Tue, 31 Oct 2006 20:13:00 +0200

Добавляем перед ним наш.

Обращаем внимание на форматирование и оставляем одну пустую строку перед тем, что уже было в файле.



thttpd (2.23beta1-5pupkin1) unstable; urgency=low * Minor configuration changes required for Company X -- Vasily Pupkin <[email protected]> Mon, 17 Nov 2008 13:18:00 +0200

Соберем пакет:


$ dpkg-buildpackage -rfakeroot

В каталоге уровнем выше был создан файл thttpd_2.23beta1-5pupkin1_i386.deb. Заливаем на шлюз, устанавливаем и наслаждаемся результатом.

обнов.

: свободный написал статья об автонастройке и предоставил пример страницы настроек.

Теги: #*nix #configuration #proxy #proxy #gateway #thttpd

Вместе с данным постом часто просматривают: