Среда, 15.05.2024, 10:06

Блог Владимира Степанова

Реклама
Статистика
Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Меню
Категории раздела
Установка [14]
Настройка [23]
Установка ПО [11]
Работаем самостоятельно [2]
Хитрости [1]
Разное [1]
Вход на сайт
Реклама
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » Линукс » Настройка

    Шлюз интернета Squid + OpenVPN с центральным офисом
    Стандартная ситуация с которой могут столкнуться многие сис.админы:
    Открылся новый офис, в нём необходимо обеспечить подключение к Интернет
    и связь с центральным офисом. Без лишних предисловий поделюсь
    своим опытом по установке такого функционала.



    Дано:
     — Интернет шлюз на UbuntuServer в центральном офисе (server на схеме).
     — Новый шлюз Интернета в филиале (client). Для сервера я использовал
    обычный ПК 2ГГц, 1Гб ОЗУ, 160Гб ЖД и свеженький Ubuntu server 9.10.   
     — Интенрент соединение между ними.

    Необходимо:   
     — Сотрудникам филиала иметь доступ в Интернет.   
     — Сотрудникам филиала иметь возможность работать с Сервером 1С
    в центральном офисе(1C_serv)
     — Сотрудникам филиала иметь возможность работать с Файлсервером
    в центральном офисе (Fileserv)

    Приступим.
    Для начала установим на наш новый компьютер в филиале операционную
    систему Ubuntu Server 9.10 и затем превратим его в шлюз. Процедура
    установки стандартная - никаких дополнительных пакетов сразу ставить
    не надо. Всё доустановим потом.
    По окончании установки, перезагружаемся и начинаем поднимать
    прозрачный прокси сервер на Squid3. Почему прозрачный? Потому что
    легче будет проводить настройку на пользовательских компьютерах, а
    точнее вообще не понадобится никаких настроек, кроме прописывания шлюза.

    Проверяем интерфейсы:
    Код:
    /etc/network/interfaces

    auto lo
    iface lo inet loopback

    auto eth1
    iface eth1 inet
    staticaddress 77.247.220.1
    netmask 255.255.255.0
    gateway 77.247.220.1
    dns-nameservers 77.247.220.2 77.247.220.3

    auto eth0
    iface eth0 inet
    static address 169.254.1.1
    netmask 255.255.255.0

    Приступаем к установке Squid3, вводим команду:

    Код:
    sudo apt-get install squid3

    По окончании установки, лезем в конфиг и прописываем наши настройки в соответствующих секциях конфига(для поиска в nano используйте ctrl+w):

    Код:
    sudo nano /etc/squid3/squid.conf
    http_port 3128 transparent
    acl our_networks src 169.254.0.21/24 #подставить вашу подсеть,
    # например 192.168.0.1/24
    acl localnet src 127.0.0.1/255.255.255.255
    http_access allow our_networks #вместо our_netrorks здесь
    # и выше можно написать любое имя
    http_access allow localnet

    Таким образом, мы получили прозрачный прокси сервер
    на порту 3128, с разрешённым доступом из сети
    169.254.0.0/24. Сохраняем. Перезагружаем демон:

    Код:
    sudo /etc/init.d/squid3 restart

    И последняя, но очень важная настройка сквида — это редикрет запросов
    из вашей локальной сети на порт прокси. Для этого потребуется внести
    новые правила в штатный файрвол iptables. Это делается следующими
    командами:
    (пишется все в две строчки начиная с sudo)

    Код:
    sudo iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT
     --to-destination 192.168.0.1:3128
    sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j
    REDIRECT --to-ports 3128

    В первом правиле мы говорим файрволу занести в таблицу с именем nat,
    цепочку с именем PREROUTING, в которой прописано, что слушающий
    интернет интерфейс eth1 должен принимать входящий трафик по
    протоколу tcp на порт 80 и изменять путь назначения на адрес
    192.168.0.1:3128
    Во втором правиле мы говорим файрволу занести в таблицу с именем
    nat, цепочку с именем PREROUTING, в которой прописано, что
    локальный интерфейс eth0 должен принимать входящий трафик по
    протоколу tcp на порту 80 и перенаправлять его на эту же машину,
    но изменив порт на 3128, на котором висит squid.

    Завершили настройку шлюза. Перезагружаться не надо. Можно
    проверить пропинговать какой-нибудь сайт с пользовательских машин,
    например 4.2.2.2 И чтобы до конца не зависеть от настроек провайдера,
    можно поставить собственный ДНС сервер, который будет
    переводить непонятные компьютеру адреса вроде ubuntu.ru или
    gmail.com на понятные 213.95.41.13 и 209.85.225.83 Smiley

    Теперь приступим к настройке openVPN сервера и клиента. Это
    позволит нам соединить центральный офис и удалённый офис компании
    как бы в единую локальную сеть. Т.е. компьютеры в удалённом
    офисе смогут запросто обращаться к компьютерам центрального
    офиса так, как будто бы они стояли в соседнем кабинете. Но для
    этого, естественно, необходим стабильный и качественный канал
    интернета с наименьшим откликом. Поэтому использование
    модемного, мобильного или спутникового соединения здесь недопустимо.

    Установка VPN происходит в два этапа: Установка сервера openVPN
    в центральном офисе и установка клиента openVPN в удалённом
    офисе. В дальнейшем, вы сможете установить ещё openVPN клиентов,
    если в вашей компании откроются дополнительные офисы и
    потребуется их соединить.

    Установка openVPN сервера.
    В моём случае, уже имеется настроенный шлюз интернета под
    Ubuntu в центральном офисе (на картинке server) и поэтому мне
    лишь необходимо доустановить пакет openVPN сервера.

    Код:
    sudo apt-get install openvpn

    Для начала нам необходимо создать сертификаты безопасности и
    ключи для клиента. Это просто необходимо, чтобы никто посторонний
    не смог подключиться к нашему VPN каналу. Скрипты генерации
    ключей находятся в директории
    /usr/share/doc/openvpn/examples/easy-rsa/2.0. Переходим в неё:

    Код:
    cd /usr/share/doc/openvpn/examples/easy-rsa/2.0

    Генерируем сертификаты попутно заполняя понятной информацией
    о фирме, электронном адресе и т.д.

            
    Код:
    ./build-dh
    ./pkitool --initca
    ./pkitool --server server
    ./pkitool client

    Созданные сертификаты и ключи должны появиться в той же папке.
    Перейдём к настройке openVPN сервера. Для этого создадим
    пустой файл настроек и начнём вносить в него необходимые записи:
    Код:
    sudo touch /etc/openvpn/server.conf
    sudo nano /etc/openvpn/server.conf

            dev tun
            tls-server
            proto udp
            port 3334
            comp-lzo
            persist-tun
            persist-key
            
            # наши шлюзы будут общаться через виртуальные интерфейсы
    # (на картинке между ними труба нарисована :) Здесь мы задаём их адреса
            ifconfig 192.168.254.1 192.168.254.2
            # маршрут к локальной сети удалённого офиса
            route 169.254.1.0 255.255.255.0

            dh /etc/openvpn/keys/dh1024.pem #Ключи безопасности.
    # Переместите их из папки в которой создали в папку которую здесь укажете.  
            ca /etc/openvpn/keys/ca.crt
            cert /etc/openvpn/keys/server.crt
            key /etc/openvpn/keys/server.key

            log /var/log/openvpn.log #ведём логи 3 уровня
            verb 3

    Вроде всё, сохраняем, выходим. А нет! Не всё. Здесь нам снова
    потребуется добавить правила в штатный файрвол, чтобы он
    правильно перенаправлял запросы из одной сети в другую:

    Код:
    sudo iptables -A INPUT -p udp -dport 3334 -j ACCEPT
    sudo iptables -A INPUT -i tun0 -j ACCEPT
    sudo iptables -A FORWARD -i tun0 -j ACCEPT
    sudo iptables -A FORWARD -o tun0 -j ACCEPT

    Теперь всё. Можно перезапустить сервер openVPN.
    Код:
    sudo /etc/init.d/openvpn restart

    Установка клиента
    С сервером покончили, перейдём к настройке клиента (на
    картинке client1). Здесь нам снова потребуется установить
    пакет openVPN. После установки, также создаём пустой файл
    настроек и внесём в него необходимые записи:

    Код:
            dev tun 
            tls-client
            proto udp
            remote 77.227.220.1 #внешний адрес шлюза в центральном офисе
            port 3334
            comp-lzo
            persist-tun
            persist-key
            
            # прописываем виртуальные интерфейсы в обратном порядке
            ifconfig 192.168.254.2 192.168.254.1
            # а здесь маршрут к локальной сети центрального офиса
            route 169.254.0.0 255.255.255.0

            dh /etc/openvpn/keys/dh1024.pem #Этот ключ одинаков с серверным
            ca /etc/openvpn/keys/ca.crt #Этот тоже
            cert /etc/openvpn/keys/client.crt #Эти ключи для клиента берём на
    # сервере. У меня был [color=blue]установлен ftp[/color]
    # поэтому труда не составило.
            key /etc/openvpn/keys/client.key #Этот тоже

            log /var/log/openvpn.log #и вновь ведём логи 3 уровня
            verb 3

    Сохраняем, выходим, перезапускаем:

    Код:
    sudo /etc/init.d/openvpn restart

    Прежде чем закончить, пропишем правила для iptables:

    Код:
    iptables -A INPUT -i tun0 -j ACCEPT
    iptables -A FORWARD -i tun0 -j ACCEPT
    iptables -A FORWARD -o tun0 -j ACCEPT

    В принципе всё. Теперь можно попробовать пропинговать адреса
    с пользовательских компьютеров в обе стороны. По картинке,
    пользователь 1.4 успешно соединился как с сервером 1С 0.102,
    так и с файлсервером 0.100, что и требовалось.


    источники информации: http://www.opennet.ru/base/net/openvpn_office.txt.html
    http://kuscsik.blogspot.com/2008/01/transparent-proxy-with-squid-3-on.html


    Источник: http://forum.ubuntu.ru/index.php?topic=75483.0
    Категория: Настройка | Добавил: Raxxell5059 (11.05.2011)
    Просмотров: 9890 | Теги: Ubuntu, настройка, squid, vpn | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]