Это старая версия документа.


Шлюз Интернета на базе Ubuntu-Server / Internet Connection Sharing + Squid,Firestarter

Автор(ы) статьи Поддерживаемые версии Ubuntu
Vadim Bilalov All Ubuntu

Краткое описание руководства

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

Основная часть

Собственно, установка шлюза на базе Ubuntu-Server занимает не больше 10-15 минут.

  1. Устанавливаем систему (я ставил ubuntu-6.06-server-i386.iso)
  2. У меня подключение по локальной сети с использованием PPPoE. Для этого просто-напросто было запущено
    sudo pppoeconf

    и даны ответы на вопросы. По окончании работы pppoeconf соединение было установлено, о чем свидетельствовал положительный вывод на команду

    ifconfig ppp0

  3. На установленной машине Интернет появился. Теперь надо добавить включить все репозитарии в /etc/apt/source.list и выполнить

    sudo apt-get update

  4. Для доступа с других машин вашей локальной сети необходимо поставить всего лишь навсего два малюсеньких пакета: dnsmasq - чтобы переправлялись ваши DNS-запросы,и ipmasq - собственно для NAT'a.
  5. На машинках локальной сети получаем IP по DHCP от dnsmasq либо прописываем шлюз по умолчанию вручную.
  6. Вот и всё!

Прокси-сервер squid

Доустановим на наш сервер кэширующий прокси-сервер squid:

  1. Репозитарии мы уже подключали ранее, так что просто ставим пакет
    apt-get install squid

  2. Теперь редактируем конфигурационный файл. Открываем /etc/squid/squid.conf, ищем нужные строки и корректируем следующим образом:

    ...
    http_port 3128 #<<< раскомментировать эту строчку
    ...
    cache_dir ufs /var/spool/squid 100 16 256 #<<< раскомментировать эту строчку
    ...
    acl our_networks src 192.168.0.0/24 #<<< раскомментировать эту строчку
    http_access allow our_networks #<<< раскомментировать эту строчку
    ...
    visible_hostname proxy.localdomain #<<< добавить строчку, скорее всего взамен строки 2161
    ...

  3. Перезапускаем прокси:

    /etc/init.d/squid restart

  4. Настраиваем браузеры на клиентских машинах на использование прокси: адрес прокси - пишем IP-адрес интерфейса, обращенного в локальную сеть. Скорее всего,это будет 192.168.0.1, порт прокси - указанный в конфигурационном файле 3128
  5. Желающим сделать прозрачное проксирование необходимо изменить в конфиге squid.conf одну строчку:

    ...
    http_port 3128 transparent
    ...

    Затем для заворачивания нужных портов на сквид прописывается правило

    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

Раздача Интернета в локальную сеть c помощью firestarter

  • Для начала установим firestarter:
    sudo apt-get install firestarter

    при настройке указываем интерфейс с Интернетом — ppp0 раздавать на eth11) или:

  • Дано:
  • Сетевая карточка eth0 подключенная с помощью PPPoE к интернету и eth1 подключенная к сети с адресом 192.168.0.1,к которой подключена сеть с адресами 192.168.0.* ,в которой нужно раздать интернет.
  1. Перейдём в режим суперпользователя:

    sudo su

  2. Для начала включим форвардинг:

    echo 1 > /proc/sys/net/ipv4/ip_forward

    Чтобы форвардинг автоматически включался при запуске системы,открываем файл:

    gedit /etc/sysctl.conf

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

    net.ipv4.ip_forward = 1 

  3. Затем включаем NAT:

    iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

    Где ppp0 название вашего интерфейса через который выходите в интернет.

  4. Чтобы NAT работал после перезагрузки делаем следующее:сохраняем настройки iptables в файл

    iptables-save > /etc/iptables.up.rules

    и добавляем в конец файла:

    gedit /etc/network/interfaces

    эту строчку, для автоматической подгрузки правил

    pre-up iptables-restore < /etc/iptables.up.rules

  5. Также в этот файл добавляем правила роутинга:

    up route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
    up route add -net 0.0.0.0 netmask 255.255.255.255 dev eth0

  6. Проверяем DNS на клиенте и радуемся расшаренному Интернету


Ссылки

1)
В Вашем случае может быть eth0,eth2 и т.д.