Иногда в локальной сети возникает необходимость предоставить пользователям доступ в Интернет через прокси-сервер.
Например, для отслеживания трафика или ограничения доступа к определенным ресурсам.
Однако использование прозрачного прокси либо невозможно, либо нежелательно.
Мы информируем пользователей
Можно, конечно, просто разослать всем рассылку с указанием параметров.Но, как показывает практика, это не избавляет полностью от ненужных вопросов.
Делаем жизнь проще
Несколько более сложный в реализации способ, но исключающий значительную часть вопросов настройки, заключается в том, что при попытке открытия страницы пользователю выдается сообщение с указанием всех необходимых параметров.Для этого нам нужно будет установить на шлюз веб-сервер и настроить его на отображение страницы с этим сообщением.
Выбор сервера
Особо продвинутые люди могут спросить: зачем что-то выбирать, когда есть Apache? Отвечу заранее: Apache в данном случае очень избыточен и будет только тратить ресурсы, которых у шлюза скорее всего уже мало.Поэтому воспользуемся более простым вариантом.
Серверу необходимо будет иметь возможность прослушивать порт 80 (поскольку inetd нам не нужен) и поддерживать пользовательские сообщения об ошибках (нам нужно будет отвечать на 404).
thttpd — хороший вариант.
Установка и настройка
Далее предполагается, что на шлюзе установлен Debian Etch. Установите thttpd обычным способом:Создаем файл /var/www/index.html и в нем описываем все необходимое, чтобы пользователь мог легко настроить свой браузер: адрес прокси-сервера, порт, пожелания хорошо провести время и тому подобное.# aptitude install thttpd
Чтобы пользователь при попытке выхода увидел не сообщение об ошибке, а нашу красивую инструкцию, добавляем в iptables правило:
Теперь любая попытка выйти наружу через порт 80 закончится на thttpd. Открытие хабрахабр.# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT
ру
и вместо этого мы видим то, что хотим видеть.
Ловля 404
Как видите, при попытке доступа к какой-то странице, не являющейся корневой домена, мы получим ошибку 404. В thttpd установить собственный обработчик ошибок очень просто.Нам даже не нужно ничего менять в конфиге.
К сожалению, thttpd пытается показать свою важность и добавляет собственный баннер внизу страницы, портя наш красивый и валидный XHTML Strict. К счастью, это излечимо.# mkdir /var/www/errors # cd /var/www/errors # ln -s .
/index.html err404.html
Практическая хирургия
Берем машину с той же версией 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
Отредактируйте файл config.h. Находим там следующую строку:$ dpkg-source -x thttpd_2.23beta1-5.dsc $ cd thttpd-2.23beta1
И мы это прокомментируем:#define ERR_APPEND_SERVER_INFO
Мы используем именно этот тип комментариев, потому что это C, а не C++./*#define ERR_APPEND_SERVER_INFO*/
Вы также можете сделать некоторые другие настройки.
Например, отключите поддержку 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
В каталоге уровнем выше был создан файл thttpd_2.23beta1-5pupkin1_i386.deb. Заливаем на шлюз, устанавливаем и наслаждаемся результатом.$ dpkg-buildpackage -rfakeroot
обнов.
: свободный написал статья об автонастройке и предоставил пример страницы настроек.
Теги: #*nix #configuration #proxy #proxy #gateway #thttpd
-
Всем, Кто Ненавидит Темную Материю
19 Oct, 24 -
Еще Несколько Полезных Плагинов
19 Oct, 24 -
Искусственно Выращенный Бисфтекс
19 Oct, 24 -
Ext.ux.tinymce V0.7 B1
19 Oct, 24 -
Будущее Одноклассников.
19 Oct, 24 -
Небольшая Задача На C/C++ Для Разминки.
19 Oct, 24