Установка VPN-сервера на Gentoo Linux
Установку VPN-сервера можно разделить на четыре части:
- Установка Oracle.
- Установка radius-сервера.
- Установка pptpd и pppd.
- Установка биллинга.
Необходимое ПО:
- Установленный Gentoo Linux c X-сервером.
X-сервер необходим только для инсталляции Oracle и биллинга.
Можно также использовать внешний X-сервер.
Дистрибутив можно скачать на http://www.gentoo.org.
- Инсталляционные файлы Oracle 9.2.0.4.0.
ship_9204_linux_disk1.cpio.gz, размер 538 906 295;
ship_9204_linux_disk2.cpio.gz, размер 632 756 922;
ship_9204_linux_disk3.cpio.gz, размер 296 127 243.
Дистрибутив можно скачать на http://www.oracle.com.
- Обновления для Oracle.
а. Обновление дистрибутива p3006854_9204_LINUX.zip, размер 1 523;
б. Обновление Oracle до 9.2.0.5.0 p3501955_9205_LINUX.zip, размер 328 923 077;
в. Инструмент для работы с патчами p2617419_220_GENERIC.zip, размер 225 374;
г. Патч для agentctl p3238244_9204_LINUX.zip, размер 286 639.
Патчи можно скачать с http://support.oracle.com. Тем же, кто не имеет пароля, можно поискать их на http://www.google.com и http://www.filesearch.ru.
Патч Б является не обязательным. Патчи В и Г входят в патч Б. Вам необходимо достать или то, или другое.
Всю установку будем производить в /opt и условимся, что наш сервер имеет ip-адрес 10.0.0.1, локальная сеть 10.0.0.0/24, VPN-сеть 192.168.0.0/24.
Установка Oracle
Для удобства перед установкой сложим все установочные файлы по местам:
Инсталляционные файлы Oracle в /opt/install/oracle, обновления для Oracle в /opt/install/oracle_update.
Распакуем инсталляционные файлы:
# cd /opt/install/oracle
# gunzip *.gz
# cpio -idmv <ship_9204_linux_disk1.cpio
# cpio -idmv <ship_9204_linux_disk2.cpio
# cpio -idmv <ship_9204_linux_disk3.cpio
Перед распаковкой обновлений убедимся, что у нас установлен unzip:
# emerge -u app-arch/unzip
Распакуем обновления:
# cd /opt/install/oracle_update
# unzip p3501955_9205_LINUX.zip
# unzip p3006854_9204_LINUX.zip
# unzip p2617419_220_GENERIC.zip
# unzip p3238244_9204_LINUX.zip
# cpio -idmv <9205_lnx32_release.cpio
Для установки нам потребуются библиотеки совместимости:
# emerge sys-libs/lib-compat
И менеджер пакетов Redhat:
# emerge app-arch/rpm
Так как инсталляция Oracle проводится не от root, необходимо создать группу и пользователя:
# groupadd -g 407 dba
# useradd -u 407 -g dba -d /opt/oracle -s /bin/bash -m oracle
Конфигурируем параметры ядра, для этого в файл /etc/sysctl.conf необходимо добавить:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
Устанавливаем Shell Limits:
В файл /etc/security/limits добавляем:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 63536
В файл /opt/oracle/.bash_profile добавляем:
ulimit -u 16384 -n 63536
Настраиваем переменные окружения Oracle:
Создаем файл /etc/env.d/87oracle, в нем указываем:
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/OraHome
ORACLE_SID=GRAD
ORACLE_TERM=xterm
ORACLE_OWNER=oracle
LD_LIBRARY_PATH=${ORACLE_HOME}/lib
LD_PATH=${ORACLE_HOME}/lib
PATH="${ORACLE_HOME}/bin"
Применяем переменные окружения:
# env-update
# source /etc/profile
Так как в дистрибутиве Oracle содержится ошибка, применяем патч А:
# sh /opt/install/oracle_update/3006854/rhel3_pre_install.sh
Теперь можно начать установку. Как написано выше, она производится от пользователя oracle. Меняем пользователя:
# su - oracle
Если вы используете внешний X-сервер, установите переменную окружения DISPLAY:
$ export DISPLAY=x-server-ip:0.0
Запускаем инсталлятор:
$ cd /opt/install/oracle/Disk1
$ ./runInstaller
После его запуска, вы должны увидеть окно инсталлятора:
На следующем экране оставьте все по-умолчанию:
Укажите группу пользователя oracle - dba:
Перейдите в консоль и запустите скрипт /tmp/orainstRoot.sh от пользователя root. Затем вернитесь в графический режим и нажмите <CONTINUE>.
Здесь все также нужно оставить по-умолчанию:
Указываем необходимый продукт - Oracle 9i Database 9.2.0.4.0:
Указываем тип инсталляции - Enterprise Edition:
Базу данных пока что не устанавливаем, выбираем Software Only:
Все готово к установке - нажимаем <Install>
Перед окончанием установки необходимо запустить от рута скрипт /opt/oracle/OraHome/root.sh:
Установка завершена. Нажимаем <Exit>:
Запустится Enterprise Manager - закрываем его, пока что он не нужен.
Теперь необходимо исправить ошибку с agentctl. Этот шаг могут пропустить те, у кто скачал обновление до Oracle 9.2.0.5.0 (патч Б).
$ export PATH=$PATH:/opt/install/oracle_update/OPatch
$ cd /opt/install/oracle_update/3238244
$ opatch apply
Патч спросит о нашем согласии применить обновление. Соглашаемся не раздумывая.
После этого необходимо перелинковать dbsnmp:
$ cd $ORACLE_HOME/network/lib
$ make -f ins_oemagent.mk install
После этих мероприятий agentctl начнет работать.
Следующий шаг - исправляем ошибку с dbca:
Запускаем от пользователя root:
# echo "dummy" > /etc/rac_on
Для тех, кто скачал обновление до Oracle 9.2.0.5.0 (патч Б) - обновим наш Oracle до версии 9.2.0.5.0.
Запускаем инсталлятор:
$ cd /opt/install/oracle_update/Disk1
$ ./runInstaller -ignoreSysPrereqs
На второй вкладке в разделе Destination в поле name нужно выбрать OUIHome:
Сначала устанавливаем Oracle Universal Installer:
Дожидаемся окончания установки, затем снова запускаем инсталлятор и ставим Oracle 9iR2 Patchsets 9.2.0.5.0.
Снова выполняем скрипт /opt/oracle/OraHome/root.sh от пользователя root.
На запрос перезаписать файлы в /usr/local/bin отвечаем положительно.
Добавим Oracle в автозагрузку. Для этого создаем в /etc/init.d файл oracle:
#!/sbin/runscript
source /etc/profile
source ~oracle/.bash_profile
export PATH="${ORACLE_HOME}/bin:${PATH}"
start() {
ebegin "Starting Oracle"
su oracle -c $ORACLE_HOME/bin/sqlplus /nolog <<EOF
connect /as sysdba
startup
EOF
su oracle -c "$ORACLE_HOME/bin/lsnrctl start"
eend $?
}
stop() {
ebegin "Stopping Oracle"
su oracle -c $ORACLE_HOME/bin/sqlplus /nolog <<EOF
connect /as sysdba
shutdown immediate
EOF
su oracle -c "$ORACLE_HOME/bin/lsnrctl stop"
eend $?
}
И добавляем полученный скрипт в автозагрузку:
# rc-update add oracle default
Существует несколько способов создать базу в Oracle. Вот один из них:
Создаем файл /opt/oracle/OraHome/dbs/initGRAD.ora:
instance_name='GRAD'
db_block_size=8192
db_cache_size=290455552
db_name=GRAD
db_domain='local.net'
db_files = 1000
db_file_multiblock_read_count = 32
shared_pool_size=96468992
large_pool_size=56623104
log_checkpoint_interval = 10000
processes = 200
parallel_max_servers = 16
log_buffer = 163840
max_dump_file_size = 10240
global_names = TRUE
control_files='/opt/oracle/OraHome/dbs/control01.ctl','/opt/oracle/OraHome/dbs/control02.ctl','/opt/oracle/OraHome/dbs/control03.ctl'
compatible='9.2.0.0.0'
dispatchers='(protocol=TCP)'
fast_start_mttr_target=300
hash_join_enabled=TRUE
java_pool_size=20971520
job_queue_processes=20
open_cursors=300
pga_aggregate_target=128974848
query_rewrite_enabled='FALSE'
sort_area_size=524288
star_transformation_enabled='FALSE'
timed_statistics=TRUE
Запускаем sqlplus:
$ sqlplus /nolog
Выполняем в нем следующие команды (не забудьте поменять пароли на свои!):
connect /as sysdba
startup
create database GRAD character set RU8PC866;
alter tablespace SYSTEM
add datafile '/opt/oracle/OraHome/dbs/dbs2GRAD.dbf'
size 10M autoextend on;
@$ORACLE_HOME/rdbms/admin/catalog.sql
@$ORACLE_HOME/rdbms/admin/catproc.sql
CREATE TABLESPACE GRAD_DATA
DATAFILE ' /opt/oracle/OraHome/dbs/GRAD.dbf' SIZE 128M AUTOEXTEND ON NEXT 20M MAXSIZE UNLIMITED
DEFAULT STORAGE (INITIAL 1K NEXT 1K MINEXTENTS 1 MAXEXTENTS UNLIMITED);
CREATE TABLESPACE ROLLBACK_DATA
DATAFILE '/opt/oracle/OraHome/dbs/rollback.dbf' SIZE 50M AUTOEXTEND ON NEXT 20M MAXSIZE UNLIMITED
DEFAULT STORAGE (INITIAL 20M NEXT 20M MINEXTENTS 10 MAXEXTENTS UNLIMITED);
create public rollback segment temp;
alter rollback segment temp online;
CREATE PUBLIC ROLLBACK SEGMENT ROLLBACK TABLESPACE ROLLBACK_DATA
STORAGE ( INITIAL 20M NEXT 20M MINEXTENTS 10 OPTIMAL 200M MAXEXTENTS UNLIMITED );
alter rollback segment temp offline;
drop public rollback segment temp;
ALTER ROLLBACK SEGMENT ROLLBACK ONLINE;
ALTER USER sys IDENTIFIED BY mypassword;
alter user sys account unlock;
ALTER USER system IDENTIFIED BY mypassword;
alter user system account unlock;
Заодно создадим пользователя для биллинга:
CREATE USER "GRAD" PROFILE "DEFAULT"
IDENTIFIED BY "mybillingpassword" DEFAULT TABLESPACE "GRAD_DATA"
ACCOUNT UNLOCK;
GRANT CONNECT TO "GRAD";
GRANT ALTER ANY SEQUENCE TO "GRAD";
GRANT CREATE ANY DIRECTORY TO "GRAD";
GRANT CREATE ANY SEQUENCE TO "GRAD";
GRANT DROP ANY DIRECTORY TO "GRAD";
GRANT DROP ANY SEQUENCE TO "GRAD";
GRANT EXECUTE ON "SYS"."DBMS_LOCK" TO "GRAD";
GRANT "CONNECT" TO "GRAD";
GRANT "RESOURCE" TO "GRAD";
Останавливаем базу:
shutdown immediate
Выходим из sqlplus:
exit
Теперь настроим listener. Для этого создадим файл /opt/oracle/OraHome/network/admin/listener.ora:
LISTENER =
(ADDRESS_LIST =
(ADDRESS= (PROTOCOL= TCP)(Host=10.0.0.1)(Port= 1521))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME= grad-db.local.net)
(ORACLE_HOME= /opt/oracle/OraHome)
(SID_NAME = GRAD)
)
)
STARTUP_WAIT_TIME_LISTENER = 0
CONNECT_TIMEOUT_LISTENER = 10
TRACE_LEVEL_LISTENER = OFF
Предварительно заменив 10.0.0.1 на Ваш ip-адрес и grad-db.local.net на dns-имя сервера.
Теперь настроим алиас для соединения с базой. Создаем файл /opt/oracle/OraHome/network/admin/tnsnames.ora:
GRAD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = GRAD)
(SERVER = DEDICATED)
)
)
В нем также необходимо заменить 10.0.0.1 на ip-адрес сервера.
Все, Oracle установлен и готов к первому запуску. Запускаем:
# /etc/init.d/oracle start
Установка radius-сервера
Для установки radius-сервера необходимо наложить патч radius.patch. Для этого копируем его в /usr/portage/net-dialup/freeradius/files.
Затем исправляем последний ebuild (на момент написания статьи freeradius-1.0.1.ebuild): находим строку "unpack ${P}.tar.gz", добавляем после нее "epatch ${FILESDIR}/radius.patch".
Теперь можно устанавливать:
# emerge freeradius
Настраиваем. В файле /etc/raddb/radiusd.conf находим секцию pam. Она должна быть раскомментирована, после строки
pam_auth = radiusd
добавляем строку
chap_password = yes
В секции authenticate раскомментируем строчку pam.
В секции detail исправляем
detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d
на
detailfile = ${radacctdir}/detail.log
Файл users приводим к такому виду:
DEFAULT Auth-Type = Pam
Fall-Through = 1
DEFAULT Service-Type == Framed-User
Framed-IP-Address = 255.255.255.254,
Framed-MTU = 576,
Service-Type = Framed-User,
Fall-Through = Yes,
Acct-Interim-Interval = 60
DEFAULT Framed-Protocol == PPP
Framed-Protocol = PPP,
Framed-Compression = Van-Jacobson-TCP-IP
DEFAULT Hint == "CSLIP"
Framed-Protocol = SLIP,
Framed-Compression = Van-Jacobson-TCP-IP
DEFAULT Hint == "SLIP"
Framed-Protocol = SLIP
Строка Acct-Interim-Interval указывает время в секундах, через которое pppd будет сбрасывать статистику radius-серверу.
В файле clients.conf стираем все строки и пишем:
client 127.0.0.1 {
secret = myradiussecret
shortname = localhost
}
Не забудьте заменить myradiussecret на свой пароль.
Теперь настроим PAM:
Создаем файл /etc/pam.d/radiusd:
auth required /opt/Billing/lib/pam_billing.so dummy --hname Inet -ORBInitRef NameService=corbaloc::10.0.0.1:3901/NameService
account required /opt/Billing/lib/pam_billing.so dummy --hname Inet -ORBInitRef NameService=corbaloc::10.0.0.1:3901/NameService
10.0.0.1 замените на ip-адрес Вашего сервера.
Добавляем radius в автозагрузку, но пока что не запускаем его:
rc-update add radiusd default
Установка radius-сервера закончена.
Установка pptpd и pppd
Устанавливаем pptpd:
# emerge pptpd
Для того, чтобы Ваш сервер поддерживал протокол шифрования MPPE и протокол сжатия MPPC (с которыми работает Microsoft Windows), нужно применить MPPE-MPPC патч к ядру. Его можно взять по адресу http://www.polbox.com/h/hs001/. В ядре должны быть включены опции:
<*> PPP (point-to-point protocol) support
[*] PPP filtering
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
<*> PPP Deflate compression
<*> PPP BSD-Compress compression
<*> Microsoft PPP compression/encryption (MPPC/MPPE)
Для установки pppd необходимо наложить патч pppd.patch. Для этого копируем его в /usr/portage/net-dialup/ppp/files.
Затем исправляем последний ebuild (на момент написания статьи ppp-2.4.3.ebuild): находим строку "unpack ${A}", добавляем после нее "epatch ${FILESDIR}/pppd.patch".
Чтобы установилась самая последняя версия pppd, добавляем в файл /etc/portage/package.keywords (если его нет - создаем) строку:
net-dialup/ppp ~*
Теперь можно устанавливать:
# USE='mppe-mppc' emerge ppp
Устанавливаем radiusclient:
# emerge radiusclient
Теперь настраиваем.
/etc/pptpd.conf:
speed 115200
option /etc/ppp/options-pptpd
localip 10.0.0.1
remoteip 192.168.0.1-254
Где 10.0.0.1 - ip-адрес Вашего сервера,
192.168.0.1-254 - диапазон адресов для клиентов.
/etc/ppp/options-pptpd:
lock
name pptpd
mtu 1490
mru 1490
ms-dns 10.0.0.1
proxyarp
auth
refuse-pap
refuse-chap
refuse-mschap
refuse-eap
require-mschap-v2
mppe required,stateless,no40,no56
lcp-echo-failure 3
lcp-echo-interval 5
deflate 0
plugin radius.so
plugin radattr.so
noipx
asyncmap 0
Где 10.0.0.1 - адрес DNS-сервера.
/etc/radiusclient/servers:
127.0.0.1 myradiussecret
Не забудьте заменить myradiussecret на свой пароль, который Вы указывали при настройке radius-сервера.
Осталось добавить pptpd в автозагрузку:
# rc-update add pptpd default
И запустить его:
# /etc/init.d/pptpd start
Установка биллинга
Для установки нам понадобится jre. Установим его:
# emerge jre
Обновим переменные окружения:
# env-update
# source /etc/profile
Предполагается, что дистрибутив биллинга находится в /opt/install/grad.
Если вы используете внешний X-сервер, установите переменную окружения DISPLAY:
# export DISPLAY=x-server-ip:0.0
Запускаем инсталлятор:
# cd /opt/install/grad
# java -jar Billing*.jar
Выбираем язык, на котором будет происходить установка:
Указываем каталог установки - /opt/Billing.
Указываем параметры:
ip-адрес хоста - ip-адрес сервера;
Oracle Home - /opt/oracle/OraHome;
Логин - GRAD;
Пароль - mybillingpassword;
Алиас базы данных - GRAD;
SMTP-сервер - ip-адрс SMTP сервера.
Так как базы у нас еще нет, выбираем "Пересоздать".
Указываем данные для сертификата - пароль, и реквизиты Вашей компании.
Указываем серийный номер биллинга:
Выбираем необходимые нам компоненты:
Обязательно нужно оставить PAM module и Radius Collector.
Установка файлов успешно завершена.
Теперь создается база и сертификаты:
После завершения этой процедуры биллинг установлен.
Запустите его:
# /opt/Billing/bin/startBilling.sh >/dev/null 2>&1 &
Добавьте также эту команду в файл /etc/conf.d/local.start для автоматического запуска биллинга при старте системы.
Также запустите добавьте в /etc/conf.d/local.start PPPDKicker, для отключения пользователей, у которых закончились деньги на счету:
# /opt/Billing/bin/PPPDKicker --check-interval 15 -ORBInitRef NameService=corbaloc
::10.0.0.1:3901/NameService --hname Inet --leave-on-failure >/dev/null 2>&1 &
И коллектор трафика:
# tail -f /var/log/radius/radacct/detail.log | /opt/Billing/bin/RadiusCollector --online -ORBInitRef NameService= corbaloc::10.0.0.1:3901/NameService -OrbNoResolve -ORBCallTimeout 5 --aggregation-time 15 >/dev/null 2>&1 &
Ваш биллинг доступен по адресу:
https://10.0.0.1:8082 - для администраторов
и
http://10.0.0.1:8081 - для пользователей
Указываем путь к библиотекам биллинга:
Создаем файл /etc/env.d/88billing, в нем указываем:
LDPATH="/opt/Billing/lib"
Применяем изменения:
# env-update
Теперь запускаем radius:
/etc/init.d/radiusd start
И нам остается только настроить тарифные планы, создать пользователей и VPN-сервер готов к работе.
Альтманн Николай Сергеевич,
Пятигорский государственный лингвистический университет.
|