Поиск по блогу :

    19 апреля 2008 г.

    Простой DHCP-сервер + прозрачный прокси на Squid

    Для начала опишу ситуацию, почему я установил у себя на компьютере связку dhcp-сервера и прозрачного прокси на squid. Все дело в том, что мне частенько приходится дома работать с несколькими компьютерами одновременно (что-нить настроить и т.п.), но постоянно каждому компьютеру прописывать ручками ip, а так же прописывать настройки прокси очень не удобно, можешь забыть, что ты уже использовал какой-то ip - поэтому и получаешь конфликты ip-адресов.


    Хочу сразу предупредить, что описал лишь только те параметры конфигурационных файлов, которые необходимы для простой работы dhcp-сервера и прокси Squid. Так как этих параметров уйма, предлагаю вам самим с ними поразбираться, а не упрекать меня в том, что я что-то не описал.

    Установка DHCP-сервера

    1. Устанавливаем dnsmasq
    $
    sudo apt-get install dnsmasq

    2. Редактируем файл /etc/dnsmasq.conf
    $
    sudo nano /etc/dnsmasq.conf

    3. Ищем закомментированную строку (что то вроде этого):
    #interface=
    раскомментируем и изменяем ее
    interface=eth0
    при этом не забываем поменять название сетевой карты - eth0 на название вашей сетевой карты, к которой будут конектиться другие компьютеры из вашей сети.
    4. Дальше, в этом же файле, раскомментируем или добавляем свою строку: dhcp-range= . К примеру, вот как она выглядит у меня:
    dhcp-range=192.168.0.2,192.168.0.15,12h
    данная запись означает, что всем компьютерам подключающимся к моей сети, будут автоматически выдаваться ip-адреса, c 192.168.0.2 по 192.168.0.15. И аренда этих адресов будет составлять 12 часов.
    5. Перезапускаем сервис dnsmasq:
    $
    sudo /etc/init.d/dnsmasq restart

    6. Подключаем в сеть какой-нить компьютер, при этом не забываем поставить ему в сетевых настройках, получение ip-адреса автоматически. Если все верно - то компьютеру присвоится ip-адрес из заданного нами в настройках диапазона.

    Установка прозрачного прокси.

    1. Устанавливаем squid (и если потребуется, другие нужные пакеты, которые он запросит автоматически):
    $
    sudo apt-get install squid

    2. Редактируем файл настроек squid:
    $
    sudo nano /etc/squid/squid.conf

    3. Ищем параметр http_port , и выставляем ему следующее значение (к примеру, как у меня):
    http_port 3128 transparent
    ключевое слово здесь - это transparent, в результате его мы и получим "прозрачный" прокси. А 3128 - это порт для протокола http.
    4. В этом же файле ищем параметр visible_hostname и выставляем ему следующее значение:
    visible_hostname (название прокси)
    где (название прокси) - можете заменить на любое слово или словосочетание. Если вы не заполните данный параметр - squid будет очень сильно ругаться ))
    5. Ищем дальше. Теперь ищем параметр acl localhost и добавляем после него такую строку (вот как к примеру у меня):
    acl our_networks src 192.168.0.0/255.255.255.0
    также, в соответствующий раздел ниже, добавляем
    http_access allow our_networks
    Данными строками мы разрешили доступ к прокси для компьютеров из нашей сети 192.168.0.0.
    6. Перезапускаем сервис squid:
    $
    sudo /etc/init.d/squid restart

    7. Ну и наконец-то завершающий аккорд. Добавим правило перенаправления портов в наш файервол.
    $


    sudo iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128

    8. Теперь компьютеры в вашей сети смогут выходить в интернет через ваш "прозрачный" прокси, при этом нам нигде не надо прописывать настройки прокси вручную !! Все работает автоматом.

    P.S. Чтобы снова, при каждом включении компьютера, не запускать по новой правило для файервола, проделываем следующее:
    1. Запускаем правило для файервола:
    $


    sudo iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128

    2. Сохраняем список всех правил файервола в файл:
    $ #
    sudo -s
    iptables-save > /etc/iptables.rules

    3. Редактируем файл /etc/network/interfaces
    #
    nano /etc/network/interfaces

    и после блока про сетевую карту eth0 (к примеру, у меня так), вставляем строку
    pre-up iptables-restore < /etc/iptables.rules
    3.1. Если вы пользуетесь network-manager и у вас нет описания сетевой карты в /etc/network/interfaces, то редактируем файл /etc/rc.local
    #
    nano /etc/rc.local

    и перед строкой exit 0, вставляем строку
    iptables-restore < /etc/iptables.rules

    Вот собственно и все ))