Появилась задачка, посмотреть куда же ходят любимые сотрудники вместо работы, ну и увеличить скорость загрузки фишек и прочих айфанов. Но при этом не менять структуру сети и не прописывать прокси в браузере.
Решение - Squid в режиме прозрачности и LightSquid для отчетов. Крутиться это все добро будет на виртуалке. Поставим туда Debian 6.
1. Поднимаем Squid
apt-get install squid
На данный момент в репозитариях лежит 2.7 версия, что меня вполне устроила.
/etc/squid/squid.conf
acl all src all
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src адрес локальной сети
http_access allow localhost
http_access allow localnet
icp_access allow localnet
icp_access deny all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
cache_dir ufs /var/spool/squid 80000 16 256
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern .
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
memory_pools_limit 768 MB
coredump_dir /var/spool/squid
2. Настраиваем правила.
Мне повезло, у меня роутер, который позволяет вводить команды напрямую.
Router part:
iptables -t mangle -A PREROUTING -j ACCEPT -p tcp --dport 80 -s адрес Squid
iptables -t mangle -A PREROUTING -j MARK --set-mark 3 -p tcp --dport 80
ip rule add fwmark 3 table 2
ip route add default via адрес Squid dev интерфейс lan table 2
Я до конца не разобрался в этих командах, честно - просто брал примеры из документации. Плюс - при такой схеме сохраняются IP адреса машин, сделавших запрос.
В таком случае все запросы на 80-й порт будут перенаправляться на 80-й порт нашего Squid. В таком случае на squid тоже надо сделать перенаправление:
Squid part:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Перезапускаем Squid и роутер. После этого все должно работать. Проверить - просто просмотреть файл /var/log/squid/access.log на наличие записей.
3. Настраиваем отчеты:
apt-get install lighttpd
/etc/lighttpd/lighttpd.conf
server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
"mod_cgi"
# "mod_rewrite",
)
server.port = 8080
server.document-root = "/var/www"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm",
" index.lighttpd.html","index.cgi" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
include_shell "/usr/share/lighttpd/use-ipv6.pl"
dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ( "application/x-javascript", "text/css", "text/html", "text/plain" )
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
#### CGI module
cgi.assign = ( ".pl" => "/usr/bin/perl",
".cgi" => "/usr/bin/perl" )
Скачиваем и настраиваем LightSquid по его инструкции, благо, она очень простая.
Только не забудьте поправить пути в lightsquid.cfg.
Перезапускаем lighttpd и получаем страничку с отчетами на порту 8080.
Friday, July 8, 2011
Tuesday, March 1, 2011
Немного подправленный Asterisk n-way call
Было найдено тут.
Немного копипасты:
http://www.voip-info.org/wiki/view/Asterisk+n-way+call+HOWTO
Надо просто немного подправить скрипт..
теперь инициатор собирает конференцию (и не вываливается!!!), все кто есть в конференции тоже могут приглашать народ, если остается один человек - ему играется музыка ождания и он может начать приглашать людей!
в extensions.conf
[default]
exten => _XXX,1,Set(DYNAMIC_FEATURES=nway-start)
exten => _XXX,n,Dial(SIP/${EXTEN})
[dynamic-nway]
exten => _XXX,1,Answer
exten => _XXX,n,Set(CONFNO=${EXTEN})
exten => _XXX,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _XXX,n,Set(DYNAMIC_FEATURES=)
exten => _XXX,n,MeetMe(${CONFNO},pdMX)
exten => _XXX,n,Hangup
[dynamic-nway-invite]
exten => 0,1,Read(DEST,dial,,i)
exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => 0,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => 0,n,Set(DYNAMIC_FEATURES=)
exten => 0,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)
[dynamic-nway-dest]
exten => _XXX,1,Dial(SIP/${EXTEN})
[macro-nway-start]
exten => s,1,Set(CONFNO=${FindFreeConf()})
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest) #УБИРАЕМ ОПЦИЮ "g"!!!!
#exten => s,n,Set(DYNAMIC_FEATURES=) #коментим, ибо не работает
#exten => s,n,Goto(dynamic-nway,${CONFNO},1) #коментим, ибо не работает
[macro-nway-ok]
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,2,Set(DYNAMIC_FEATURES=) # добавляем
exten => s,3,Goto(dynamic-nway,${CONFNO},1) # добавляем
[macro-nway-notok]
exten => s,1,SoftHangup(${BRIDGEPEER})
exten => s,2,Set(DYNAMIC_FEATURES=) # добавляем
exten => s,3,Goto(dynamic-nway,${CONFNO},1) # добавляем
ну и в features.conf все, как в ссылке:
[applicationmap]
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok
Немного копипасты:
http://www.voip-info.org/wiki/view/Asterisk+n-way+call+HOWTO
Надо просто немного подправить скрипт..
теперь инициатор собирает конференцию (и не вываливается!!!), все кто есть в конференции тоже могут приглашать народ, если остается один человек - ему играется музыка ождания и он может начать приглашать людей!
в extensions.conf
[default]
exten => _XXX,1,Set(DYNAMIC_FEATURES=nway-start)
exten => _XXX,n,Dial(SIP/${EXTEN})
[dynamic-nway]
exten => _XXX,1,Answer
exten => _XXX,n,Set(CONFNO=${EXTEN})
exten => _XXX,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _XXX,n,Set(DYNAMIC_FEATURES=)
exten => _XXX,n,MeetMe(${CONFNO},pdMX)
exten => _XXX,n,Hangup
[dynamic-nway-invite]
exten => 0,1,Read(DEST,dial,,i)
exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => 0,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => 0,n,Set(DYNAMIC_FEATURES=)
exten => 0,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)
[dynamic-nway-dest]
exten => _XXX,1,Dial(SIP/${EXTEN})
[macro-nway-start]
exten => s,1,Set(CONFNO=${FindFreeConf()})
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest) #УБИРАЕМ ОПЦИЮ "g"!!!!
#exten => s,n,Set(DYNAMIC_FEATURES=) #коментим, ибо не работает
#exten => s,n,Goto(dynamic-nway,${CONFNO},1) #коментим, ибо не работает
[macro-nway-ok]
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,2,Set(DYNAMIC_FEATURES=) # добавляем
exten => s,3,Goto(dynamic-nway,${CONFNO},1) # добавляем
[macro-nway-notok]
exten => s,1,SoftHangup(${BRIDGEPEER})
exten => s,2,Set(DYNAMIC_FEATURES=) # добавляем
exten => s,3,Goto(dynamic-nway,${CONFNO},1) # добавляем
ну и в features.conf все, как в ссылке:
[applicationmap]
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok
Мониторинг хостов/Asterisk с помощью Nagios/SSH
Возник вопрос - а как же держать ту кучу серверов, что я обслуживаю под контролем. При чем больше всего на них меня волнует вопрос дискового пространства и загрузки процессора. Астериск, также мониторится c помощью плагина Nagisk. Доступ на сервера есть только через SSH.
Использованная литература:
1. http://www.daemony.ru/?p=673
2. Документация по Nagios
Итак... Традиционно для Debian Lenny, уже 6.0
apt-get install nagios3 nagios-plugins apache2
В процессе установки попросит ввести пароль для nagiosadmin
После этого по адресу http://servip/nagios3 после ввода имени nagiosadmin и пароля, который задали при установке, попадаете на основную страничку Nagios.
Теперь небольшая копипаста:
Нам необходимо:
сгенерировать пару RSA ключей на сервере и открытый ключ скопировать на клиент
завести на клиенте пользователя nagios
скопировать на клиента папку с плагинами нагиоса
описать в конфиге нагиоса соответствующие команды и сервисы
Случилось так, что системный пользователь nagios не имеет возможности залогиниться в систему. Но эту неприятность мы переживем :) Домашняя его директория находится в /var/spool/nagios/. Итак, логинимся в систему пользователем nagios и генерируем RSA ключи:
Тут мы получаем общий ключ id_rsa.pub, который будем использовать далее.
Теперь несколько скриптов для упрощения жизни:
runnonhost.sh
#! /bin/sh
adduser nagios
mkdir -p /home/nagios
mkdir -p /home/nagios/.ssh
mkdir -p /home/nagios/plugins
echo "nagios ALL=NOPASSWD: /usr/sbin/asterisk" >> /etc/sudoers
mkdir -p /usr/share/terminfo/u
cp /usr/share/terminfo/l/linux /usr/share/terminfo/u/unknown
mv /home/user/id_rsa.pub /home/nagios/.ssh/authorized_keys
chown -R nagios:nagios /home/nagios/*
chown -R nagios:nagios /home/nagios
chmod 700 /home/nagios/.ssh
chmod 600 /home/nagios/.ssh/authorized_keys
Это скрипт, который запускается на самом сервере, который будем мониторить. Для этого в папке пользователя user должен лежать id_rsa.pub, который мы получили ранее. Для этого проще всего воспользоваться sftp или чем-то подобным.
6я строчка - для возможности получения пользователем nagios доступа к консоли Asterisk.
7я и 8я зависят от дистрибутива и его версии. Дело в том, что nagisk не может выполняться на dumb терминале. Выполняется он на unknown, для чего мы его и подсовываем.
Также для CentOS необходимо в sudoers добавить строчку
Defaults:nagios !requiretty
Скрипт номер 2:
#! /bin/sh
HOST="$1"
PORT="$2"
NAME="$3"
sudo -u nagios /bin/bash -c "scp -P $PORT /usr/lib/nagios/plugins/* $HOST:~/plugins && exit"
echo >> /etc/nagios3/conf.d/host-clients.cfg
echo "define host {" >> /etc/nagios3/conf.d/host-clients.cfg
echo "host_name $NAME" >> /etc/nagios3/conf.d/host-clients.cfg
echo "alias $NAME" >> /etc/nagios3/conf.d/host-clients.cfg
echo "address $HOST" >> /etc/nagios3/conf.d/host-clients.cfg
echo "_PORT $PORT" >> /etc/nagios3/conf.d/host-clients.cfg
echo "_WARNCHAN 10" >> /etc/nagios3/conf.d/host-clients.cfg
echo "use generic-host" >> /etc/nagios3/conf.d/host-clients.cfg
echo "}" >> /etc/nagios3/conf.d/host-clients.cfg
Скрипт, который запускается на хостовой машине с Nagios. Принимает 3 параметра. Собственно, хост, порт для ssh, и имя, которое используется в Nagios. Конфиг хоста записывает в host-client.cfg. После этого руками надо добавить его в какую-либо хостгруппу в файле
Теперь файлы самого Nagios:
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Asterisk Version
check_command check_ssh_asterisk_version!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Asterisk Channels
check_command check_ssh_asterisk_channels!$_HOSTPORT$!$_HOSTWARNCHAN$
notifications_enabled 1
}
define host {
host_name HOSTNAME
alias HOSTNAME
address IPaddress
_PORT PORT
_WARNCHAN 60
use generic-host
}
После этого перезапускаем Nagios и любуемся.
Использованная литература:
1. http://www.daemony.ru/?p=673
2. Документация по Nagios
Итак... Традиционно для Debian Lenny, уже 6.0
apt-get install nagios3 nagios-plugins apache2
В процессе установки попросит ввести пароль для nagiosadmin
После этого по адресу http://servip/nagios3 после ввода имени nagiosadmin и пароля, который задали при установке, попадаете на основную страничку Nagios.
Теперь небольшая копипаста:
Нам необходимо:
Случилось так, что системный пользователь nagios не имеет возможности залогиниться в систему. Но эту неприятность мы переживем :) Домашняя его директория находится в /var/spool/nagios/. Итак, логинимся в систему пользователем nagios и генерируем RSA ключи:
sudo -u nagios /bin/bash
cd ~
mkdir .ssh
chmod 700 .ssh
ssh-keygen -t rsa
cd ~
mkdir .ssh
chmod 700 .ssh
ssh-keygen -t rsa
Тут мы получаем общий ключ id_rsa.pub, который будем использовать далее.
Теперь несколько скриптов для упрощения жизни:
runnonhost.sh
adduser nagios
mkdir -p /home/nagios
mkdir -p /home/nagios/.ssh
mkdir -p /home/nagios/plugins
echo "nagios ALL=NOPASSWD: /usr/sbin/asterisk" >> /etc/sudoers
mkdir -p /usr/share/terminfo/u
cp /usr/share/terminfo/l/linux /usr/share/terminfo/u/unknown
mv /home/user/id_rsa.pub /home/nagios/.ssh/authorized_keys
chown -R nagios:nagios /home/nagios/*
chown -R nagios:nagios /home/nagios
chmod 700 /home/nagios/.ssh
chmod 600 /home/nagios/.ssh/authorized_keys
Это скрипт, который запускается на самом сервере, который будем мониторить. Для этого в папке пользователя user должен лежать id_rsa.pub, который мы получили ранее. Для этого проще всего воспользоваться sftp или чем-то подобным.
6я строчка - для возможности получения пользователем nagios доступа к консоли Asterisk.
7я и 8я зависят от дистрибутива и его версии. Дело в том, что nagisk не может выполняться на dumb терминале. Выполняется он на unknown, для чего мы его и подсовываем.
Также для CentOS необходимо в sudoers добавить строчку
Defaults:nagios !requiretty
Скрипт номер 2:
addhost.sh
#! /bin/sh
HOST="$1"
PORT="$2"
NAME="$3"
sudo -u nagios /bin/bash -c "scp -P $PORT /usr/lib/nagios/plugins/* $HOST:~/plugins && exit"
echo >> /etc/nagios3/conf.d/host-clients.cfg
echo "define host {" >> /etc/nagios3/conf.d/host-clients.cfg
echo "host_name $NAME" >> /etc/nagios3/conf.d/host-clients.cfg
echo "alias $NAME" >> /etc/nagios3/conf.d/host-clients.cfg
echo "address $HOST" >> /etc/nagios3/conf.d/host-clients.cfg
echo "_PORT $PORT" >> /etc/nagios3/conf.d/host-clients.cfg
echo "_WARNCHAN 10" >> /etc/nagios3/conf.d/host-clients.cfg
echo "use generic-host" >> /etc/nagios3/conf.d/host-clients.cfg
echo "}" >> /etc/nagios3/conf.d/host-clients.cfg
Скрипт, который запускается на хостовой машине с Nagios. Принимает 3 параметра. Собственно, хост, порт для ssh, и имя, которое используется в Nagios. Конфиг хоста записывает в host-client.cfg. После этого руками надо добавить его в какую-либо хостгруппу в файле
/etc/nagios3/conf.d/hostgroups_nagios2.cfg
Теперь файлы самого Nagios:
/etc/nagios3/commands.cfg
define command {
command_name check_ssh_disk
command_line $USER1$/check_by_ssh -p $ARG4$ -H $HOSTADDRESS$ -C "~/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$"
}
define command {
command_name check_ssh_CPU
command_line $USER1$/check_by_ssh -p $ARG7$ -H $HOSTADDRESS$ -C "~/plugins/check_load -w $ARG1$,$ARG2$,$ARG3$ -c $ARG4$,$ARG5$,$ARG6$"
}
define command {
command_name check_ssh_asterisk_version
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c version 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_channels
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c channels -w $ARG2$ 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_peers
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c peers 2>>/dev/null"
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Root Partition
check_command check_ssh_disk!10%!5%!/!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Home Partition
check_command check_ssh_disk!10%!5%!/home!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description CPU Load
check_command check_ssh_CPU!5.0!4.0!3.0!10.0!6.0!4.0!$_HOSTPORT$
notifications_enabled 1
}
command_name check_ssh_disk
command_line $USER1$/check_by_ssh -p $ARG4$ -H $HOSTADDRESS$ -C "~/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$"
}
define command {
command_name check_ssh_CPU
command_line $USER1$/check_by_ssh -p $ARG7$ -H $HOSTADDRESS$ -C "~/plugins/check_load -w $ARG1$,$ARG2$,$ARG3$ -c $ARG4$,$ARG5$,$ARG6$"
}
define command {
command_name check_ssh_asterisk_version
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c version 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_channels
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c channels -w $ARG2$ 2>>/dev/null"
}
define command {
command_name check_ssh_asterisk_peers
command_line $USER1$/check_by_ssh -p $ARG1$ -H $HOSTADDRESS$ -C "~/plugins/nagisk.pl -c peers 2>>/dev/null"
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Root Partition
check_command check_ssh_disk!10%!5%!/!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Home Partition
check_command check_ssh_disk!10%!5%!/home!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description CPU Load
check_command check_ssh_CPU!5.0!4.0!3.0!10.0!6.0!4.0!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Asterisk Version
check_command check_ssh_asterisk_version!$_HOSTPORT$
notifications_enabled 1
}
define service {
use generic-service
hostgroup_name AAA,BBB
service_description Asterisk Channels
check_command check_ssh_asterisk_channels!$_HOSTPORT$!$_HOSTWARNCHAN$
notifications_enabled 1
}
/etc/nagios3/conf.d/host-clients.cfg
define host {
host_name HOSTNAME
alias HOSTNAME
address IPaddress
_PORT PORT
_WARNCHAN 60
use generic-host
}
/etc/nagios3/conf.d/hostgroups_nagios2.cfg
define hostgroup {
hostgroup_name AAA
alias Client Servers
members HOSTNAME1, HOSTNAME2, HOSTNAME3
hostgroup_name AAA
alias Client Servers
members HOSTNAME1, HOSTNAME2, HOSTNAME3
}
После этого перезапускаем Nagios и любуемся.
Tuesday, February 1, 2011
OpenVPN. По горячим следам
Понадобилось мне подключить пользователей к нашей корпоративной сети. Задача не новая, но не для меня. Было решено использовать для этих целей OpenVPN.
Итак, схема сети имеет следующий вид:
WAN - Router/Gateway (ip a.1) - LAN (a/24)
На сам роутер установить OpenVPN не представляется возможным. Посему сервер будет внутри сети. После долгих проб и ошибок вылезла такая схема
WAN - Rt/Gw (ip a.1) - LAN1 (a/24) - VPN Server (ip a.2 )
На роутере сделан проброс udp порта 1194 на ip a.2.
Теперь кратко по конфигам сервера и клиента
Сервер:
vi /etc/openvpn/server.conf
port 1194
proto udp
dev tap0
#Путь к ключам
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
ifconfig-pool-persist ipp.txt
# Между адресами a.10 и a.11 будут получать IP-шники клиенты VPN
server-bridge <адрес a.2> 255.255.255.0 <адрес a.10> <адрес a.11>
comp-lzo
persist-key
persist-tun
log-append /var/log/openvpn.log
verb 3
echo 1 > /proc/sys/net/ipv4/ip_forward
Теперь о клиенте. Клиент простой, виндовый.
client.ovpn
client
dev tap
proto udp
remote 1194
# Ключи лежат в той же директории, что и client.ovpn
ca ca.crt
cert client.crt
key client.key
persist-key
persist-tun
nobind
comp-lzo
Естественно, тут все описано крайне неполно. За доп. инфо - на сайт Openvpn. Там подробно описано как делать ключи.
ЗЫ: В дальнейшем думаю разобраться, возможна ли просто password аутентификация и подключение штатными средствами винды.
Итак, схема сети имеет следующий вид:
WAN - Router/Gateway (ip a.1) - LAN (a/24)
На сам роутер установить OpenVPN не представляется возможным. Посему сервер будет внутри сети. После долгих проб и ошибок вылезла такая схема
WAN - Rt/Gw (ip a.1) - LAN1 (a/24) - VPN Server (ip a.2 )
На роутере сделан проброс udp порта 1194 на ip a.2.
Теперь кратко по конфигам сервера и клиента
Сервер:
vi /etc/openvpn/server.conf
port 1194
proto udp
dev tap0
#Путь к ключам
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
ifconfig-pool-persist ipp.txt
# Между адресами a.10 и a.11 будут получать IP-шники клиенты VPN
server-bridge <адрес a.2> 255.255.255.0 <адрес a.10> <адрес a.11>
client-config-dir ccd
client-to-client
comp-lzo
persist-key
persist-tun
log-append /var/log/openvpn.log
verb 3
echo 1 > /proc/sys/net/ipv4/ip_forward
Теперь о клиенте. Клиент простой, виндовый.
client.ovpn
client
dev tap
proto udp
remote
# Ключи лежат в той же директории, что и client.ovpn
ca ca.crt
cert client.crt
key client.key
persist-key
persist-tun
nobind
comp-lzo
Естественно, тут все описано крайне неполно. За доп. инфо - на сайт Openvpn. Там подробно описано как делать ключи.
ЗЫ: В дальнейшем думаю разобраться, возможна ли просто password аутентификация и подключение штатными средствами винды.
Monday, January 17, 2011
Локальный кэширующий DNS сервер
Необходим для Астериска, ибо при пропадании канала при очередном DNS Lookup может зависнуть.
apt-get install bind9
vi /etc/bind/named.conf.options
acl "corpnets" {192.168.240.0/24; 127.0.0.1/8; localhost;}; //Тут прописать диапазон сетей, которые могут обращаться к нашему серверу
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
allow-query {"corpnets";};
forwarders {
8.8.8.8; // Тут прописать корневой DNS сервер
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
/etc/init.d/bind9 restart
vi /etc/resolv.conf
nameserver 127.0.0.1
Все. Наслаждаемся локальным DNS.
apt-get install bind9
vi /etc/bind/named.conf.options
acl "corpnets" {192.168.240.0/24; 127.0.0.1/8; localhost;}; //Тут прописать диапазон сетей, которые могут обращаться к нашему серверу
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
allow-query {"corpnets";};
forwarders {
8.8.8.8; // Тут прописать корневой DNS сервер
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
/etc/init.d/bind9 restart
vi /etc/resolv.conf
nameserver 127.0.0.1
Все. Наслаждаемся локальным DNS.
Subscribe to:
Posts (Atom)