The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Настройка маршрутизатора на основе Debian/GNU Linux, OpenVPN и NetAMS 3.3.5 (debian linux vpn route netams billing traffic)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: debian, linux, vpn, route, netams, billing, traffic,  (найти похожие документы)
From: OneROFL <helium@rambler.ru.> Newsgroups: email Date: Mon, 29 Jun 2008 17:02:14 +0000 (UTC) Subject: Настройка маршрутизатора на основе Debian/GNU Linux, OpenVPN и NetAMS 3.3.5 Настройка роутера Debian/GNU Linux с учетом трафика на основе NetAMS 3.3.5 и iptables,а также создание ВПН канала для связи двух удаленных друг от друга офисов на базе OpenVPN. Програмное обеспечение. Дистрибутив Debian/GNU Linux 4.0.r3(3 DVD), NetAMS 3.3.5, Webmin 1.410, OpenVPN 2.0_rc16, OpenVPN-2.5.wbm. Задача. Есть два офиса(контроллер домена на базе Windows 2003 Server, рабочие станции на базе Windows XP SP2), расположенные на большом расстоянии друг от друга. Необходимо в реальном времени обеспечить доступ удаленному офису к ресурсам главного офиса и наоборот, а именно: 1. Доступ к файлам и принтерам 2. Доступ удаленного офиса к серверу терминалов, т.е. к справочной системе Консультант+ и к программе 1С Бухгалтерия 3. Обеспечить прозрачность удаленной сети для пользователей. Главный офис. В главном офисе находятся: "основной" контроллер домена, все файловые сервера, сервер терминалов и будущий основной роутер Debian/GNU Linux. Т.е. будет только один компьютер на базе Linux и он должен уметь следующее: 1. "Раздавать интернет" пользователям, используя авторизацию и квотирование трафика. 2. Делать возможным взаимодействие удаленных КПК(подключенных к интернету) с программой 1С бухгалтерия. 3. Принимать внешние запросы на ВПН соединение, т.е. - ВПН сервер. Удаленный офис. В удаленном офисе расположены: рабочие станции и второй роутер на базе Debian/GNU Linux. Функции которого: Установка и автоматическая поддержка ВПН соединения с роутером главного офиса. Установка и настройка роутера в главном офисе. Рассмотрим более детально, что должен делать главный интернет сервер: 1. Конфигурация NetAMS: а) Авторизация пользователей для доступа в интернет через WEB по паролю без привязки к IP адресу. б) Квотирование трафика. г) Некоторым пользователям разрешено пользоваться только ICQ. д) Учет локального-бесплатного трафика, который не входит в квоты. е) Учет ICQ-трафика(порт 5190). 2. Конфигурация OpenVPN: а) Маршрутизация пакетов от клиента OpenVPN в локальную сеть обеспечивается подключением типа мост TAP интерфеса сервера OpenVPN к сетевому интерфейсу локальной сети. б) Автоматическая установка ВПН клиенту адреса DNS сервера локальной сети. 3. Конфигурация файрвола(политика: то что явно не разрешено - запрещено): а) Запрещена любая установка соединений из вне непосредственно с сервером, кроме ВПН(UDP:1194) и Webmin(TCP:10000) б) Из локальной сети разрешено обращаться напрямую к серверу только(+ пункт а): ssh(порт 22) и 80 порт(авторизация через WEB в NetAMS для получения пользователями локальной сети доступа в интернет). в) Перенаправление(порт форвардинг) запросов из вне на сервер терминалов по порту 5555(взаимодействие с КПК) протокол TCP. г) ДНС запросы(TCP, UDP 53 порт) идут напрямую, минуя NetAMS. д) Разрешена почта только "провайдерная"(бесплатная) и электронная отчетность, и она(почта) так же идет напрямую, минуя NetAMS. Для обеспечения надежности работы организации. В случае падения NetAMS главная артерия документооборота будет продолжать функционировать в штатном режиме. ж) Пользователям локальной сети после WEB авторизации в NetAMS разрешено обращение в интернет по следующим портам протокола TCP: 80:82,443,1024:65535. з) Разрешено обращение VPN клиентов, пользователей как главного, так и удаленного офисов друг к другу по любым протоколам и портам. Установка системы: ADM Athlon 64 X2 3800, 1024 MB, SATA 160GB HDD, 2 сетевых интерфейса. Устанавливаем только базовую систему. Нам потребуются большие разделы для логов(/var) и для устанавливаемого ПО(/usr), для раздела /home не нужно много места, т.к. не будет пользователей, использующих роутер как файловый сервер. В первую очередь необходимо сконфигурировать сетевой интерфейс, подключенный к интернету, т.к. сразу же будут установлены и настроены обновления безопасности системы. После инсталляции установим пакет mc (Midnight Commander). Сначала добавляем все 3 DVD дистрибутива "в базу" системы установки apt. Добавление DVD дистрибутива в базу: apt-cdrom add После вставляем наш DVD в DVD-дисковод и нажимаем ввод. Повторяем для всех 3-х DVD. Установка пакета mc: apt-get install mc Далее для удобства будущего удаленного администрирования устанавливаем пакет ssh. apt-get install ssh Для того чтобы подключиться к нашему серверу из MS Windows необходима программа putty. В putty: вводим адрес сервера(небходимо сконфигурировать 2й сетевой интерфейс), а так же меняем кодировку(Window-Trancelation) на UTF-8(опционально). Конфигурируем 2-й сетевой интерфейс(/etc/network/interfaces), например: # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth1 iface eth1 inet static address IP адресс провайдера netmask 255.255.255.X network Х.Х.Х.0 broadcast Х.Х.Х.255 gateway Х.Х.Х.Х dns-nameservers Х.Х.Х.X Х.Х.Х.Х auto eth1 iface eth0 inet static address 192.168.Х.Х netmask 255.255.255.0 auto eth0 После необходимо перезапустить "сеть", чтобы ОС установила новые IP адреса: /etc/init.d/networking restart Вводим команду ifconfig и проверяем установленную конфигурацию сетевых интерфейсов. И команду route -N, в маршрутах должен быть адрес шлюза провайдера, который указан в файле /etc/network/interfaces. Адреса ДНС серверов находятся в файле /etc/resolf.conf: nameserver X.X.X.X nameserver X.X.X.X Теперь необходимо проверить, как все работает, вводим команду ping с параметрами: адрес компьютера в локальной сети и адрес шлюза провайдера, например: ping 192.168.1.3 ping 82.67.176.1 Пишем скрипт, чтобы обесречить доступ в интернет пользователям локальной сети. Назовем скрип goinet и установим права на запуск, запускаем: #!/bin/sh INET="eth1" INETIP="X.X.X.X" iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT #Для тэстирования NetAMS закомментировать iptables -P FORWARD ACCEPT #Для тэстирования NetAMS раскомментировать #iptables -P FORWARD DROP #iptables -A FORWARD -j QUEUE iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INETIP echo "1" > /proc/sys/net/ipv4/ip_forward После запуска этого скрипта на одной из рабочих станций под управлением MS Windows устанавливаем адрес шлюза = адресу нашего Линукс роутера в локальной сети, так же адреса ДНС серверов провайдера, пингуем шлюз провайдера и заходим в интернет. Если все работает, значит можно приступать к установке NetAMS. Настройку файрвола нужно проводить после установки и конфигурирования системы учета трафика и ВПН, чтобы свести к минимуму возможные конфиликты ПО с файрволом. *В случае дублирования IP адреса в локальной сети нашего интернет сервера *с одной из рабочих станций будут непредсказуемые ошибки во всей сети. *Если при пинговании одного из IP адресов локальной сети с роутера возникают *потери пакетов, то одна из возможных причин - это дублирование IP адреса. Установка и настройка NetAMS 3.3.5 (http://www.netams.com). 1.Устанавливаем пакеты необходимые для NetAMS и модули Perl, которые могут понадобиться в случае использования дополнительного ПО для администрирования NetAMS(модуль Perl, Crypt::GeneratePassword, может потребоваться при использовании билинга в NetAMS, http://search.cpan.org/CPAN/authors/id/J/JW/JWALT/Crypt-GeneratePassword-0.03.tar.gz ): apt-get install mysql-server mysql-client apache2 apache2-mpm-prefork libc6-dev \ libmysqlclient15-dev libapache2-mod-perl2 php5 php5-mysql binutils cpp gcc iptables-dev \ g++ make libssl-dev libpcap0.8-dev libnet-telnet-perl libdbd-mysql-perl libdbi-perl \ libcgi-perl libdate-calc-perl libgd-graph-perl 2.Собираем и устанавливаем NetAMS: Дистрибутивный архив имеет имя вида: netams-3.2.10.tar.gz где 3 - номер версии, 2 - номер подверсии и 10 - номер билда. Распаковываем: tar zxvf netams-3.2.XXXX.tar.gz cd netams-3.2.XXXX Запускаем сборку: make В конечном итоге в каталоге src/ вы должны получить исполняемые файлы: netams, netamsctl, flowprobe, ulog2netflow и ipfw2netflow. Запускаем их установку на место: make install 3. Создаем конфигурационный файл NetAMS(/etc/netams.cfg): debug none language ru user name admin real-name Admin password 123 permit all user name netams password 123 permit all user name nawt password 123 permit all Этими командами настраивается сервис main, причем явно писать "service main" не нужно. Вначале отключается вывод всей отладочной информации - это нужно для уменьшения размера лог-файла. Далее заводятся пользователи системы, имеющие в ней права администратора (permit all). Указанный пароль "123" потом будет храниться в зашифрованном виде. service server 0 login local listen 20001 max-conn 6 Этими командами настраивается сервис server, который обеспечивает подключение администратора и скриптов к работающему экземпляру NeTAMS по протоколу telnet. Входящие соединения принимаются только на локальный адрес 127.0.0.1, порт 20001, и возможно не более шести одновременных соединений. Согласно предыдущим строкам подключиться смогут только три пользователя. service processor lookup-delay 20 flow-lifetime 120 policy name urls target layer7-detect policy name localtrafik target file /etc/localtraf.txt policy name allip target proto ip policy name trafik target proto tcp port 80:82 443 1024:65535 policy name aska target proto tcp port 5190 restrict all drop local pass Настраивается главный сервис - processor. lookup-delay flow-lifetime задаются параметры, как часто будут проверяться списки юнитов и откладываться записи в базу данных. Следующие параметры задают политики, по которым будет идти учет трафика. Политика urls необходмима для протоколирования запрошенных ссылок(URL)(опционально). localtrafik учитывает бесплатный-локальный трафик, подсети локального трафика берутся из файла /etc/localtraf.txt, например: Х.Х.Х.Х /18 Х.Х.Х.Х /19 Политика "allip" задает весь IP-трафик, "trafik" - только тот, который идет по портам TCP 80:82 443 1024:65535, "aska" - тот, который использует программа ICQ. Последняя строка определяет, как поступать с пакетами, которые прошли через учет по списку юнитов и совпали (или не совпали) с каким-либо юнитом. Указанная конфигурация пропускает пакеты, которые принадлежат имеющимся в конфигурационном файле юнитам, и не пропускает остальные. Полезно использовать именно указанное сочетание, т.к. это поможет не пускать в сеть "незаконные" компьютеры. unit group name LAN acct-policy allip trafik aska unit net name local ip 192.168.1.0/24 no-local-pass acct-policy allip aska unit host name server ip 192.168.1.222 no-local-pass acct-policy allip unit net name all ip 0.0.0.0/0 no-local-pass acct-policy all-ip unit user name user1 sys-allow-login description "Скотт" password 123 parent LAN acct-policy allip %localtrafik trafik aska unit user name user2 sys-allow-login password 123 parent LAN acct-policy allip allip %localtrafik trafik aska aska fw-policy aska Здесь определяются юниты, или учётные объекты. В начале создается группа, которая будет родительской по отношению к включенным в нее юнитам. Затем следует юнит, обозначающий всю подсеть. Далее идут юниты, представляющие отдельные компьютеры. Для юнита local указан также параметр no-local-pass, который заставляет считать нелокальными все пакеты, принадлежащие сети и не описанные для других юнитов - этим мы отсекаем "неизвестные подключения". Если вы задаете последовательность из нескольких политик подсчета трафика подряд, то по умолчанию подсчет ведется для каждой политики и трафик суммируется. Чтобы при совпадении политики дальнейший подсчет прекратился используется break flag [%]. В данном случае будет учитываться общий трафик, в который входит локальный трафик и платный трафик, отдельно будет видно ICQ трафик, который уже входит в платный. Для юнита user2 введен параметр fw-policy aska, то есть весь трафик кроме этой политики будет блокирован для данного юнита. Чтобы разрешить прохождение трафика согласно политикам учета, необходимо убрать параметр fw-policy aska. Указан также пароль, который может быть использован для доступа к индивидуальной статистике в виде HTML-страниц. storage 1 all Указывает сервису processor на необходимость сохранять статистику в хранилище, описанном сервисом storage за номером 1. При этом запить будет идти в обе таблицы одновременно - raw и summary. service storage 1 type mysql accept all Определяет хранилище для статистики. Тип хранилища - MySQL, для доступа к базе будут использованы стандартные настройки: имя пользователя root, пустой пароль, работающий на той же машине SQL-сервер (подключение через unix socket). Имя базы данных - netams. service data-source 1 type ip-traffic source ipq layer7-detect urls Определяет, каким образом данные о трафике будут попадать в NeTAMS. ip-traffic - данные берутся путем перехвата ip-пакетов из ядра через netfilter. Параметр layer7-detect urls необходим, чтобы можно было протоколировать посещаемые url (Указать политику учета для тех юнитов, которые надо отслеживать). service monitor 0 monitor to storage 1 Сервис monitor позволяет осуществлять запись данных из заголовков пакетов, относящихся к указанным юнитам. При этом в базе данных сохраняется не только информация о локальном источнике-получателе пакета, размере и времени, но и об удаленной стороне. Для этого необходимо добавить, например, monitor unit user1. service login 0 storage 1 max-inact 3000 max-abs 3600 min-abs 1800 set-user-ip yes set name user1 password 123 inact 3000 abs 0 set name user2 password 123 inact 3000 abs 0 Сервис login необходим для управления процедурами доступа пользователей через веб-интерфейс. Для работы сервиса необходимо будет указать номер сервиса-хранилища данных. max_inact - максимально допустимая величина времени таймаута неактивности. max-abs - максимально допустимая величина времени абсолютного таймаута. min_abs - минимально допустимая величина времени абсолютного таймаута. Задается в секундах. set-user-ip - Указывает на необходимость в случае успешной авторизации перезаписать IP-адрес юнита (если он имеет тип user) на текущий; при наступлении таймаута или останове доступа адрес сбрасывается в 0.0.0.0. set - pаписывает в структуру данных юнита в памяти и одновременно в SQL-базу параметры юнита (определяется по имени или номеру OID). Для настройки параметров сервиса login необходимо подключиться к программе через telnet-интерфейс, перейти в режим настройки сервиса командой service login 0 и ввести команду set name user1 password 123 inact 3000 abs 0. После набираем команды: exit(выйти из упраления сервисом), вводим команду show login. service quota 0 storage 1 policy trafik set name user2 active month 70M in policy - задает политику учета (acct-policy), которая будет использоваться при проверке квот. Это политика по умолчанию для всех, существует возможность переопределить ее для конкретного юнита. Если не указано, используется первая политика из определенных policy XXX сервиса processor. Команда set используется аналогично как в сервисе login. service html 0 path /var/www/netams/stat run 2min client-pages all htaccess yes display-health yes display-top 5 Сервис html позволяет автоматически генерировать HTML-страницы с отчетами. Процесс netams будет автоматически создавать эти страницы раз в 2 минуты(далее нужно увеличить этот параметр) и складывать их в каталог /var/www/traffic. Будет создаваться как администраторская часть дерева страниц, так и клиентская. Доступ к статистике будет защищен паролем (на администраторскую " admin:123, клиентам " их логины-пароли). htaccess { yes | no } Включает и выключает механизм автоматической защиты каталогов с помощью файлов .htaccess и .htpassword. При этом используются пароли администратора NeTAMS (те, которые задаются в "user... crypted..." в начале конфигурационного файла и собственно пароли на юниты ("unit ... password ..."). При этом администратору доступны любые подкаталоги веб-дерева, а пользователям - только их собственные. client-pages { all | groups | none | group GG1 GG2 ... } Показывает, будут ли создаваться клиентские страницы для веб-представления статистики: all - будет создаваться все groups - только общая статистика и статистика подкаталоги для юнитов типа "группа" none - только общая статистика group GG1 GG2 ... - клиентские статистики только для перечисленных групп и содержащихся в них юнитах (не рекурсивно). Чтобы добавить или удалить группу в списке, необходимо дать команду с новым списком полностью. display-top N - Включает механизм генерации статических страниц, показывающих TOP N (N - число, желательно порядка 10) потребителей трафика (юниты типа USER и HOST) для периодов времени с начала часа, дня, недели и месяца. display-health { yes | no } - Включает и выключает механизм автоматического отображения "здоровья" системы (аналогично show health), т.е. свободного места на жестком диске и загрузки процессора. По умолчанию-выключено. 4.Запускаем нетамс /etc/init.d/netams.sh start, сам файл: #!/bin/sh daemondir=/usr/local/sbin path_to_etc=/etc case "$1" in start) sleep 3; /bin/mkdir -p /var/run/netams if [ -x $daemondir/netams ]; then if [ -f $path_to_etc/netams.cfg ]; then $daemondir/netams -lf $path_to_etc/netams.cfg > /dev/null && echo -e "\033[40;36;1mStart NetAMS daemon...ok\033[0m" fi fi ;; stop) killall netams rmdir /var/run/netams && echo -e "\033[40;36;1mStop NetAMS daemon...ok\033[0m" ;; *) echo "$0 start | stop" ;; esac 4. Подключаемся к NetAMS с помощью telnet: telnet localhost 20001 Вводим логин admin и пароль прописанный в конфиге /etc/netams.cfg далее вводим команду html, show config, show version, save. Выходим из telnet и перезапускаем NetAMS. (чтобы произошла корректная привязка сгенерированных OID юнитов к базе данных). Снова Подключаемся к NetAMS с помощью telnet. Устанавливаем квоты и логинЫ, из конфига эти параметры в базу не вносятся и если не установить в telnet, то после рестарта NetAMSa они пропадут. Так же после установки всех параметров и начального формирования конфига(можно и позже), необходимо его сохранить командой save в telnet и перезапустить демон NetAMS, иначе возможна неработоспособность сервиса генерирования html страниц. Или прописать в конфигурационном файле: service scheduler 0 time 2min action "html" 5. Изменяем скрипт, чтобы трафик проходил через NetAMS: #!/bin/sh INET="eth1" INETIP="X.X.X.X" iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT #Для тэстирования NetAMS закомментировать #iptables -P FORWARD ACCEPT #Для тэстирования NetAMS раскомментировать iptables -P FORWARD DROP iptables -A FORWARD -j QUEUE iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INETIP echo "1" > /proc/sys/net/ipv4/ip_forward 6. Добавляем в конфиг апача /etc/apache2/httpd.conf: <Location /netams> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all DefaultLanguage ru AddDefaultCharset WINDOWS-1251 </Location> <Location /netams/cgi-bin> Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride none Order allow,deny allow from all DefaultLanguage ru AddDefaultCharset WINDOWS-1251 </Location> <Location /netams/stat> Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride none Order allow,deny allow from all DefaultLanguage ru AddDefaultCharset WINDOWS-1251 </Location> AddHandler cgi-script .cgi ServerName lol <Directory /var/www/netams> Options FollowSymLinks ExecCGI Indexes AllowOverride All </Directory> ServerName rofl <Directory /var/www/login> Options FollowSymLinks ExecCGI Indexes AllowOverride All </Directory> Для того чтобы можно было через web интерфейс получить доступ к административному и пользовательскому интерфейсу NetAMS, например, по адресу: http://192.168.1.1/netams И для получения доступа к сервису login через web: http://192.168.1.1/login/login.cgi 7. Создаем каталог /var/www/login и в него копируем файлы config.cgi login.cgi netams_api.pl из каталога /var/www/netams/cgi-bin/ 1.создаем каталог /var/www/netams/cgi-bin/ и переписываем туда файлы из каталога cgi-bin дистрибутива NetAMS 2.создаем каталог /var/www/netams/images и /var/www/stat/images 3.переписываем туда файлы из каталога /var/www/netams/cgi-bin/images 4.переписываем файл admintool.cgi из /var/www/netams/cgi-bin/ в /var/www/netams/stat и правим его только в этом каталоге так: #!/usr/bin/perl # # $Id: admintool.cgi,v 1.29 2004/05/06 10:49:54 jura Exp $ use CGI qw/:standard/; $cgi=new CGI; #$uri=$ENV{"REQUEST_URI"}; $host=$ENV{"SERVER_NAME"}; #$uri=/admintool.cgi/admin\/index.cgi/; $uri="/netams/cgi-bin/admin/index.cgi"; $url="http://$host$uri"; #$url="$uri"; print $cgi->redirect($url); В файле /login/login.cgi прописываем пути, например: $url_to_stat="/netams/stat/clients/" <img src ="images/logo_small.gif" В файлах config.cgi(/var/www/netams/cgi-bin/,/var/www/netams/cgi-bin/admin и в /var/www/login) изменяем параметры логина к нетамсу(логин и пароль, прописанные в конфиге netams.conf, т.е. netams 123). А так же(если нужно) устанавливаем: $statistic_url="/netams/stat/" 8.Создаем каталог /var/www/login/images и переписыаем в него файл logo_small.gif. 9.Копируем файл .htaccess из /var/www/netams/stat/ в /var/www/netams/ 10.Удаляем(если они есть) файлы .htaccess из каталога cgi-bin и cgi-bin/admin. 11.Создаем файл /var/www/netams/index.html: <html><HEAD><!-- $Id: index.html,v 1.1 2008-01-02 13:31:38 anton Exp $ --> <META http-equiv="Pragma" content="no-cache"> <META http-equiv="Expires" content="-1"> <META http-equiv="Cache-Control" content="no-cache"> <META HTTP-EQUIV="refresh" CONTENT="5;URL=stat/"> </HEAD><title>NeTAMS</title> <body> <table width="770" height="100%" align="center" border=0 cellpadding=10 cellspacing=0> <tr align="center" valign="middle"><td align="center" valign="middle"> <table width=380 cellpadding=0 cellspacing=0 border=0> <tr align=center> <td align=center><img src="images/logo_sm.jpg" width=376 height=60 alt="" border="0"><br><br></td></tr> <tr align=left> <td><br><center><h3>You will be redirected soon...</h3></center><br> <ul> <li><a href="stat/"><b>Common statistic</b></a> <li><a href="cgi-bin/admin/index.cgi">Administration interface</a> </ul> </td></tr> </table> <tr><td></td></tr> </table> </body></html> 12.Перезагружаем апач: /etc/init.d/apache2 restart 13.Пробуем снова с рабочей станции получить доступ в интернет. Не должно пустить. Далее заходим на http://адресроутера/login/login.cgi и вводим логин пароль: user 123 и снова пробуем. Заходим на http://192.168.1.1/netams, вводим логин пароль админа. 14.Скрипт загрузки NetAMS при старте системы /etc/init.d/netams.sh: #!/bin/sh daemondir=/usr/local/sbin path_to_etc=/etc case "$1" in start) sleep 3; /bin/mkdir -p /var/run/netams if [ -x $daemondir/netams ]; then if [ -f $path_to_etc/netams.cfg ]; then $daemondir/netams -lf $path_to_etc/netams.cfg > /dev/null && echo -e "\033[40;36;1mStart NetAMS daemon...ok\033[0m" fi fi ;; stop) killall netams rmdir /var/run/netams && echo -e "\033[40;36;1mStop NetAMS daemon...ok\033[0m" ;; *) echo "$0 start | stop" ;; esac Добавляем в автозагрузку: update-rc.d netams.sh defaults 15. Перезагружаем систему(опционально). При загрузке должен запуститься NetAMS. Далее загружаем тэстовый скрипт для интернета и логинимся через веб, чтобы получить доспут в интернет. Если пользователь был "залогинен" до рестарта, то после перезагрузки у него все равно будет доступ, автоматическое отключение пользователя происходит через 3000 секунд его полной неактивности(задается в конфигурационном файле NetAMS). Установка и настройка OpenVPN 2.0 Для быстрой настройки OpenVPN используется пакет Webmin 1.410 и модуль к нему OpenVPN-2.5.wbm (http://www.webmin.com), а так же пакет bridge-utils: Устанавливаем пакет bridge-utils(пакеты для возможности использования соединения типа мост): apt-get install bridge-utils Устанавливаем пакет WebMin: dpkg -i webmin_1.410_all.deb После выполнения этой команды, dpkg выдаст много ошибок о нарушенных зависимостях и не хватке многих пакетов в системе. Для завершения установки вводим команду: apt-get install -f Далее заходим на https://Х.Х.Х.Х:10000/(соглашаемся продолжить), вводим логин пароль (root-xxx) и заходим в Webmin-Change Language and Theme, меняем(опционально) язык на русский, обновляем страницу. Идем в Настройки Webmin-Модули Webmin и загружаем уже скаченный модуль из файла OpenVPN-2.5.wbm, либо в Third party module from, жмем select и выбираем и устанавливаем модуль OpenVPN-admin(будет загружен с сайта http://www.webmin.com). После его установки Webmin напишет, где модуль появится. Обновляем страницу, заходим в модуль(Службы-OpenVPN + CA). Жмем настройка модуля и проверяем пути. Необходимо исправить следующее: Server Hint for Clients (*) - адрес VPN сервера, который будет прописан в строке ввода: адрес VPN сервера при создании клиента к нашему серверу. То есть пишем адрес нашего VPN сервера(опционально). Command to start Bridge - /usr/share/webmin/openvpn/br_scripts/bridge_start Command to stop Bridge - /usr/share/webmin/openvpn/br_scripts/bridge_end Path to DOWN-ROOT-PLUGIN - /usr/lib/openvpn/openvpn-down-root.so Жмем сохранить. Далее идем в сертификаты, и генерируем сертификат для нашего сервера и клиентов: Key size (bit) - 1024(при увелечении возрастает нагрузка на систему) Expiration time of - 3650 дней по умолчанию (10 лет) Certification Authority key (days) Сохраняем и генерируем ключи для сервера и клиентов, для каждого клиента свой ключ. Идем в VPN List и создаем сервер: Device - TAP Bridge Device - br0 Network Device for Bridge - eth0(интрефейс локальной сети) IP config for bridge IP-Address/Gateway - IP адрес и маску подсети, которые устнавлены на eth0 IP-Range for Bridge-Clients - диапазон адресов для VPN клиентов management (Enable Management) - Enable порт, например, 2222. Дает возможность видеть информацию о VPN подключениях(опционально). Net IP assigns (option server) - ничего не пишем Additional Configurations - push "dhcp-option DNS 192.х.х.х" (автоматическая установка DNS сервера, возможен повторный вызов для добавления нескольких серверов) Сохраняем. Наш сервер готов к работе. Заходим в Client List и генерируем клиентов. Понадобится как минимум один - для обесепечения связи двух офисов. Экспортируем конфигурационные файлы клиента(ключ для клиента удаленного офиса необходимо сгенерировать без пароля). Получился следующий конфигурационный файл сервера: port 1194 proto udp dev tap1 ca keys/ххcertificat/ca.crt cert keys/ххcertificat/nvserver.crt key keys/ххcertificat/nvserver.key dh keys/ххcertificat/dh1024.pem server-bridge 192.168.х.х 255.255.255.0 192.х.х.150 192.х.х.170 #@@ br0 eth0 crl-verify keys/ххcertificat/crl.pem ifconfig-pool-persist servers/ххserver/logs/ipp.txt tls-auth servers/ххserver/ta.key 0 cipher DES-CBC user nobody group nogroup status servers/ххserver/logs/openvpn-status.log log-append servers/ххserver/logs/openvpn.log verb 2 mute 20 max-clients 100 management 127.0.0.1 2222 keepalive 10 120 client-config-dir /etc/openvpn/servers/ххserver/ccd client-to-client comp-lzo persist-key persist-tun float ccd-exclusive up servers/nvserver/bin/nvserver.up plugin /usr/lib/openvpn/openvpn-down-root.so "/etc/openvpn/servers/nvserver/bin/nvserver.down-root" push "dhcp-option DNS 192.х.х.х" Никакие маршруты прописывать не нужно, т.к. используется подключение типа мост. Установка и настройка файрвола (iptables). Немного теории: когда пакет попадает на наш роутер, сначала он попадает в таблицу mangle цепочка PREROUTING, далее он идет в таблицу nat-PREROUTING, далее, в зависимости от того куда направлен пакет, он идет либо: 1.mangle-INPUT..filter-INPUT..local_routing..mangle-OUTPUT..nat-OUTPUT..filter-OUTPUT..выход либо: 2.mangle-FORWARD..filter-FORWARD..выход потом на выход: mangle-POSTROUTING..nat-POSTROUTING. Интересуют только 2 цепочки таблицы filter: это INPUT - то есть все то, что идет непосредственно на наш сервер и цепочка FORWARD, то есть все то, что идет через роутер, как в локальную сеть, так и из нее. Еще раз конфигурация файрвола(политика: то что явно не разрешено - запрещено): а) Запрещена любая установка соединений из вне непосредственно с сервером, кроме ВПН(UDP:1194) и Webmin(TCP:10000) б) Из локальной сети разрешено обращаться напрямую к серверу только(+ пункт а): ssh(порт 22) и 80 порт(авторизация через WEB в NetAMS для получения пользователями локальной сети доступа в интернет). в) Перенаправление(порт форвардинг) запросов из вне на сервер терминалов по порту 5555(взаимодействие с КПК) протокол TCP. г) ДНС запросы(TCP, UDP 53 порт) идут напрямую минуя NetAMS. д) Разрешена почта только "провайдерная"(бесплатная) и электронная отчетность. Она(почта) так же идет напрямую, минуя NetAMS для обеспечения надежности работы организации. В случае падения NetAMS главная артерия документооборота будет продолжать функционировать в штатном режиме. ж) Пользователям локальной сети, после WEB авторизации в NetAMS, разрешено обращение в интернет по следующим портам,протокол TCP: 80:82,443,1024:65535. з) Разрешено обращение VPN клиентов, пользователей как главного, так и удаленного офисов друг к другу по любым протоколам и портам. файрвол(/etc/fw): #!/bin/sh SERVER1C="192.168.170.5" INET="eth1" NET="eth0" NET_NET="192.168.170.0/24" INETIP="84.53.199.198" LANIP="192.168.170.222" ELCOM_SMTP="84.53.200.28" ELCOM_POP="84.53.200.5" IRIDAN="213.87.26.54" UNPRIVPORTS="1024:65535" DNS_SERVER1="84.53.200.24" DNS_SERVER2="84.53.199.254" SYSADMIN="192.168.170.3" #Сбрасываем все правила iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT iptables -t nat -F iptables -t mangle -F #то что явно не разрешено - запрещено iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT DROP #Всякий кал бан iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP #Явный сброс всех запросов на соединение из инета, #кроме тех, какие нужны... iptables -A INPUT -d $INETIP -p TCP --syn --dport ! 10000 -j DROP #Даем Webmin iptables -A INPUT -p TCP --dport 10000 -j ACCEPT #Даем OpenVPN(и DHCP) iptables -A INPUT -p UDP --dport 1194 -j ACCEPT iptables -A INPUT -p UDP --dport 67 -j ACCEPT iptables -A OUTPUT -p UDP --dport 68 -j ACCEPT #Порт TCP:5555 форвардинг iptables -t nat -A PREROUTING -d $INETIP -p TCP --dport 5555 \ -j DNAT --to-destination $SERVER1C:5555 #Открываем TCP порты, которые слушать только из локалки iptables -A INPUT -s $NET_NET -p TCP -d $LANIP --dport 22 -j ACCEPT #Даем инет серверу(например, для обновлений безопастности) iptables -A INPUT -d $INETIP -p TCP --dport $UNPRIVPORTS \ -m state --state ESTABLISHED,RELATED -j ACCEPT #Разрешить DNS для сервера и для локалки(почта, аська) iptables -A INPUT -p UDP -s $DNS_SERVER1 -m state --state ESTABLISHED \ --sport 53 -j ACCEPT iptables -A INPUT -p TCP -s $DNS_SERVER1 --sport 53 --dport $UNPRIVPORTS \ -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p UDP -s $DNS_SERVER2 -m state --state ESTABLISHED \ --sport 53 -j ACCEPT iptables -A INPUT -p TCP -s $DNS_SERVER2 --sport 53 --dport $UNPRIVPORTS \ -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p UDP -s $NET_NET -d $DNS_SERVER1 --dport 53 -j ACCEPT iptables -A FORWARD -p UDP -s $DNS_SERVER1 -d $NET_NET --sport 53 \ -m state --state ESTABLISHED -j ACCEPT iptables -A FORWARD -p TCP -s $NET_NET -d $DNS_SERVER1 --dport 53 -j ACCEPT iptables -A FORWARD -p TCP -s $DNS_SERVER1 -d $NET_NET --sport 53 \ -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p UDP -s $NET_NET -d $DNS_SERVER2 --dport 53 -j ACCEPT iptables -A FORWARD -p UDP -s $DNS_SERVER2 -d $NET_NET --sport 53 \ -m state --state ESTABLISHED -j ACCEPT iptables -A FORWARD -p TCP -s $NET_NET -d $DNS_SERVER2 --dport 53 -j ACCEPT iptables -A FORWARD -p TCP -s $DNS_SERVER2 -d $NET_NET --sport 53 \ -m state --state ESTABLISHED,RELATED -j ACCEPT #Почта только провайдерная и электронная отчетность, iptables -A FORWARD -s $NET_NET -d $ELCOM_POP -p TCP --dport 110 -j ACCEPT iptables -A FORWARD -s $ELCOM_POP -d $NET_NET -p TCP --sport 110 \ -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -s $NET_NET -d $ELCOM_SMTP -p TCP --dport 25 -j ACCEPT iptables -A FORWARD -s $ELCOM_SMTP -d $NET_NET -p TCP --sport 25 \ -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -s $NET_NET -d $IRIDAN -p TCP --dport 110 -j ACCEPT iptables -A FORWARD -s $IRIDAN -d $NET_NET -p TCP --sport 110 \ -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -s $NET_NET -d $IRIDAN -p TCP --dport 25 -j ACCEPT iptables -A FORWARD -s $IRIDAN -d $NET_NET -p TCP --sport 25 \ -m state --state ESTABLISHED,RELATED -j ACCEPT #Даем возможность впн клиентам использовать файловые ресурсы #локальной сети iptables -A FORWARD -p ALL -s $NET_NET -d $NET_NET -j ACCEPT #Разрешаем КПКшкам обращаться к серверу AplusServer iptables -A FORWARD -p TCP -d $SERVER1C --dport 5555 -j ACCEPT iptables -A FORWARD -p TCP -s $SERVER1C --sport 5555 \ -m state --state ESTABLISHED,RELATED -j ACCEPT #Разрешаем авторизацию в NetAMS iptables -A INPUT -p TCP -s $NET_NET -d $LANIP --dport 80 -j ACCEPT #Разрешаем интеренет через NetAMS iptables -A FORWARD -p TCP -s $NET_NET --dport $UNPRIVPORTS -j QUEUE iptables -A FORWARD -p TCP -d $NET_NET --sport $UNPRIVPORTS \ -m state --state ESTABLISHED,RELATED -j QUEUE iptables -A FORWARD -p TCP -s $NET_NET -m multiport --dport 21,80,81,82,443 \ -j QUEUE iptables -A FORWARD -p TCP -d $NET_NET -m multiport --sport 21,80,81,82,443 \ -m state --state ESTABLISHED,RELATED -j QUEUE #Внутри демократия iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT iptables -A INPUT -p ALL -s $LANIP -i lo -j ACCEPT iptables -A INPUT -p ALL -s $INETIP -i lo -j ACCEPT iptables -A OUTPUT -p ALL -d 127.0.0.1 -o lo -j ACCEPT iptables -A OUTPUT -p ALL -s $INETIP -j ACCEPT iptables -A OUTPUT -p ALL -s $LANIP -j ACCEPT iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT #Даем torrent и т.п. сисадмину, минуя NetAMS(для локального трафика) iptables -A FORWARD -p TCP -d $SYSADMIN --dport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p TCP -s $SYSADMIN --sport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p UDP -d $SYSADMIN --dport $UNPRIVPORTS -j ACCEPT iptables -A FORWARD -p UDP -s $SYSADMIN --sport $UNPRIVPORTS -j ACCEPT #Есть некоторые провайдеры, которые очень не любят, когда одним #подключением пользуется несколько компьютеров, если мы начинаем #устанавливать на все пакеты одно и то же значение TTL, то тем #самым мы лишаем провайдера одного из критериев определения того, #что подключение к Интернету разделяется несколькими компьютерами. #Для примера можно привести число TTL = 64, которое является стандартным #для ядра Linux. iptables -t mangle -A PREROUTING -i $INET -j TTL --ttl-set 64 #Включаем НАТ iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INETIP echo "1" > /proc/sys/net/ipv4/ip_forward Добавляем после отладки наш файрвол в автозагрузку(/etc/rc.local), Устанавливаем права на fw: chmod 711 /etc/fw (полный доступ для владельца и запуск для всех остальных). Установка и настройка роутера в удаленном офисе. Система: Celeron 2.4, 1024+256 MB, IDE 20GB HDD, 2 сетевых интерфейса. Выход в интернет с динамическим IP адресом. При объединении сетей двух офисов будет использовано соединение типа мост: интерфейса локальной сети удаленного офиса и TAP интерфейса VPN клиента удаленного офиса. Bridge интерфейсу br0 будут заданы IP адрес и маска подсети диапазона сети главного офиса, то есть получим одну сеть, состоящую из двух подсетей офисов с единым адресным пространством. Взаимосвязь двух удаленных друг от друга офисов может осуществляться по любым протоколам и портам. Понадобятся следующие пакеты: pppoe, pppoeconf, bridge-utils, openvpn, webmin, ssh. Установка и настройка интернета (PPPoE). Установка пакета: apt-get install pppoe Установка пакета pppoeconf: apt-get install pppoeconf Вводим в диалоге, где нужно: логин, пароль от провайдера и т.п, получаем конфигурационные файлы, например: /etc/ppp/chap-secrets: # Secrets for authentication using CHAP # client server secret IP addresses "providerLOGIN" * "providerPASSWORD" /etc/ppp/resolf.conf: nameserver X.X.X.X nameserver X.X.X.X /etc/ppp/peers/dsl-provider: # Configuration file for PPP, using PPP over Ethernet # to connect to a DSL provider. # # See the manual page pppd(8) for information on all the options. ## # Section 1 # # Stuff to configure... # MUST CHANGE: Uncomment the following line, replacing the user@provider.net # by the DSL user name given to your by your DSL provider. # (There should be a matching entry in /etc/ppp/pap-secrets with the password.) #user myusername@myprovider.net # Use the pppoe program to send the ppp packets over the Ethernet link # This line should work fine if this computer is the only one accessing # the Internet through this DSL connection. This is the right line to use # for most people. #pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452" # An even more conservative version of the previous line, if things # don't work using -m 1452... #pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1412" # If the computer connected to the Internet using pppoe is not being used # by other computers as a gateway to the Internet, you can try the following # line instead, for a small gain in speed: #pty "/usr/sbin/pppoe -I eth0 -T 80" # The following two options should work fine for most DSL users. # Assumes that your IP address is allocated dynamically # by your DSL provider... noipdefault # Try to get the name server addresses from the ISP. usepeerdns # Use this connection as the default route. # Comment out if you already have the correct default route installed. defaultroute ## # Section 2 # # Uncomment if your DSL provider charges by minute connected # and you want to use demand-dialing. # # Disconnect after 300 seconds (5 minutes) of idle time. #demand #idle 300 ## # Section 3 # # You shouldn't need to change these options... hide-password lcp-echo-interval 20 lcp-echo-failure 3 # Override any connect script that may have been set in /etc/ppp/options. connect /bin/true noauth persist mtu 1492 # RFC 2516, paragraph 7 mandates that the following options MUST NOT be # requested and MUST be rejected if requested by the peer: # Address-and-Control-Field-Compression (ACFC) noaccomp # Asynchronous-Control-Character-Map (ACCM) default-asyncmap plugin rp-pppoe.so eth1 user "providerLOGIN" Файл /etc/network/interfaces: # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 # dns-* options are implemented by the resolvconf package, if installed auto dsl-provider iface dsl-provider inet ppp pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf provider dsl-provider auto eth1 iface eth1 inet manual Установка и настройка клиента OpenVPN и файрвола. Устанавливаем пакеты bridge-utils, openvpn, webmin, ssh: apt-get install bridge-utils apt-get install openvpn dpkg -i webmin_1.410_all.deb apt-get install -f apt-get install ssh В Webmin устанавливаем модуль OpenVPN-2.5.wbm, в данном случае очень вероятно, что роутер удаленного офиса в будущем может быть использован как VPN сервер, так же вместе с модулем будут установлены скрипты: /usr/share/webmin/openvpn/br_scripts/bridge_start /usr/share/webmin/openvpn/br_scripts/bridge_end Убираем из автозагрузки OpenVPN: update-rc.d openvpn remove Создаем скрипт /etc/ppp/ip-up.d/goinet: #!/bin/sh cd /etc/openvpn /usr/sbin/openvpn --config nvclient9.conf --daemon --writepid /var/run/openvpn.pid Теперь после установки соединения с провайдером, автоматически будет устанавливаться VPN соединение, используя конфигурационный файл clientname.conf(наш VPN клиент), например, следующего содержания: client proto udp dev tap ca ca.crt dh dh1024.pem cert nvclient7.crt key nvclient7.key remote х.х.х.х 1194 tls-auth ta.key 1 cipher DES-CBC user nobody group nogroup verb 2 mute 20 keepalive 10 120 comp-lzo persist-key persist-tun float resolv-retry infinite nobind #необходимо добавить в конфигурационный файл, #чтобы после установки соединения создавался мост и запускался файрвол up /etc/openvpn/start_bridge Копируем конфигурационные файлы OpenVPN клиента в /etc/OpenVPN/. (ca.crt, dh1024.pem, clientname.crt, clientname.key, ta.key, clientname.conf и clientname.ovpn - конфигурационный файл для OpenVPN GUI). И если нужно добавляем строку up /etc/openvpn/start_bridge Создаем скрипты: файл /etc/openvpn/start_bridge: #!/bin/bash #возможны ошибки при инициализации #tap интерфейса из-за этого скрипта и возможно нада будет прямо указать #интерфейс, например tap0 #Адрес TAP интерфейса VPN клиента может измениться, #определяем функцию получения IP адреса с интерфейса function get_addr() { IFCONFIG='/sbin/ifconfig'; HEAD='head -2'; TAIL='tail -1'; CUT='cut -d: -f2'; IP=`$IFCONFIG $1 | $HEAD | $TAIL | awk '{print $2}' | $CUT`; echo $IP; } #Получаем tap интерфейс, он не всегда может быть tap0 VPN=`/sbin/ifconfig | grep ^[t-t] | awk '{print $1}'` VPNIP=`get_addr $VPN` /usr/share/webmin/openvpn/br_scripts/bridge_start --setbr br=br0 eth=eth0 tap=tap0 ip=$VPNIP netmask=255.255.255.0 > /dev/null #запускаем файрвол после успешной или неуспешной установки VPN соединения /etc/openvpn/fw-server2 #end файл /etc/ppp/ip-down.d/stop_bridge: #!/bin/bash #возможны ошибки при инициализации #tap интерфейса из-за этого скрипта и возможно нада будет прямо указать #интерфейс, например tap0 VPN=`/sbin/ifconfig | grep ^[t-t] | awk '{print $1}'` /usr/share/webmin/openvpn/br_scripts/bridge_end --killbridge --seteth br=br0 eth=eth0 tap=$VPN ip=192.168.1.1 netmask=255.255.255.0 > /dev/null Файл /etc/openvpn/fw-server2: #!/bin/sh #IP адрес ppp0 интрефейса динамически назначается провайдером и #IP адрес TAP интерфейса VPN клиента может измениться, то #определяем функцию получения IP адреса с интерфейса function get_addr() { IFCONFIG='/sbin/ifconfig'; HEAD='head -2'; TAIL='tail -1'; CUT='cut -d: -f2'; IP=`$IFCONFIG $1 | $HEAD | $TAIL | awk '{print $2}' | $CUT`; echo $IP; } #Получаем PPP интерфейс, он не всегда может быть ppp0 INET=`/sbin/ifconfig | grep ^[p-p] | awk '{print $1}'` NET="br0" NET_NET="192.168.170.0/24" INETIP=`get_addr $INET` LANIP=`get_addr $NET` UNPRIVPORTS="1024:65535" DNS_SERVER1="84.53.200.24" DNS_SERVER2="84.53.199.254" #Сбрасываем все правила iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT #Политика по умолчанию - все запрещено iptables -P FORWARD DROP iptables -P INPUT DROP iptables -P OUTPUT DROP #Явный бан всех запросов на соединение из инета #кроме Webmin iptables -A INPUT -d $INETIP -p TCP --syn --dport ! 10000 -j DROP #Даем Webmin iptables -A INPUT -p TCP --dport 10000 -j ACCEPT #Даем OpenVPN(и DHCP для OpenVPN клиента) iptables -A INPUT -p UDP --sport 1194 -j ACCEPT iptables -A INPUT -p UDP --dport 68 -j ACCEPT iptables -A OUTPUT -p UDP --dport 67 -j ACCEPT #Открываем TCP порты которые слушать только из локалки iptables -A INPUT -s $NET_NET -p TCP -d $LANIP --dport 22 -j ACCEPT #Даем инет серверу(для обновлений безопастности и т.п.) iptables -A INPUT -d $INETIP -p TCP --dport $UNPRIVPORTS \ -m state --state ESTABLISHED,RELATED -j ACCEPT #Разрешить DNS для сервера iptables -A INPUT -p UDP -s $DNS_SERVER1 -m state --state ESTABLISHED \ --sport 53 -j ACCEPT iptables -A INPUT -p TCP -s $DNS_SERVER1 --sport 53 --dport $UNPRIVPORTS \ -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p UDP -s $DNS_SERVER2 -m state --state ESTABLISHED \ --sport 53 -j ACCEPT iptables -A INPUT -p TCP -s $DNS_SERVER2 --sport 53 --dport $UNPRIVPORTS \ -m state --state ESTABLISHED,RELATED -j ACCEPT #Обеспечиваем сетевой доступ обоих офисов друг к другу iptables -A FORWARD -p ALL -j ACCEPT #Внутри демократия iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT iptables -A INPUT -p ALL -i lo -j ACCEPT iptables -A INPUT -p ALL -i lo -j ACCEPT iptables -A OUTPUT -p ALL -j ACCEPT #Включаем IP forwarding echo "1" > /proc/sys/net/ipv4/ip_forward Еще раз кратко, что нужно сделать: 1. Установить PPPoE соединение с провайдером и получить доступ в интернет. 2. Установить пакеты для VPN клиента. 3. Переписать и, если нужно, дополнить конфигурационный файл clientname.conf. 4. Создать/переписать файлы: /etc/openvpn/start_bridge /etc/ppp/ip-down.d/stop_bridge /etc/openvpn/fw-server2 Получился следующий механизм: Установка интернет соединения->Установка VPN соединения->организация подключения типа мост->запуск файрвола. Разрыв интернет соединения->остановка соединения типа мост. P.S. При доступе из удаленного офиса на сервер терминалов в программу 1С могут возникнуть временные простои при печати больших объемов на локальный принтер. Это связано с пропускной способностью исходящего трафика на канале ADSL. Возможно два решения этой задачи: 1. Печать в файл(необходима установка драйвера-эмулятора принтера на сервере терминалов, например, Zan_Image_Printer_v5.0.2-Primax и настройка печать в файл типа TIFF) на локальную машину. Общая скорость печати больших объемов увеличится в 4-5 раз. 2. Установка SDSL технологии для доступа в интернет. 3. Комбинировать первый и второй пункт при очень больших объемах печати. Пример скрипта для восстановления связи после обрыва: #!/bin/sh sovok=0 PIDFILE="/var/run/openvpn.pid" ping -c 3 x.x.x.x > /dev/null sovok=$? if [ $sovok != 0 ]; then poff #для VPN клиента, сервер можно не перезапускать kill `cat $PIDFILE` || true rm $PIDFILE # pon dsl-provider fi Добавляем его в /etc/crontab: */3 * * * * root /полный путь до скрипта раз в 3 минуты

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Rain (??), 21:10, 16/07/2008 [ответить]  
  • +/
    У меня необходимость поставить OpenVPN сервер, в нете инструкций мало, а так как использую на сервере Webadmin то статья подошла. Правда еще не все сделал.
    Очень долго просидел над пунктом создать сертификат. Сервер мне все писал что нет активных сертификатов. Уже и на сайт опенвпн сходил и с собакой погулял. И только минут через 30 дошло как сделать правильно сертификат. Так что в этой части советую расписать подробнее.

    После создания сертификата, наживаю запустить опенвпн, а он похоже не запускается, так как на странице продолжает висеть кнопка стартвпн, сейчас буду ковырять из=за чего.

     
  • 2, Negation (ok), 07:44, 17/12/2008 [ответить]  
  • +/
    /etc/resolf.conf
    поменять на
    /etc/resolv.conf:
     
  • 3, Crespo (ok), 22:19, 07/11/2011 [ответить]  
  • +/
    Очень признателен за данную статью, только после её прочтения по буквам смог наконец-то завести впн-сервак
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру