Понадобилось как-то поднять ВПН туннель между рутером и Астериск. В-первую очередь, для обхода NAT и немного поднять секьюрность. Так как в качестве рутера была Cisco, то решили поднимать IPSec. Кошку настраивал не я, так что не смогу показать ее конфиги. Для тех, кому интересно как настроить на CentOS 6, прошу под кат.Итак, мы имее — VDS под управление CentOS 6, на котором поднят Asterisk + FreePBX 2.11. Сервер с одним реальным адресом.
Вначале установим пакеты для Ipsec
yum install openswan
Затем нужно создать виртуальную подсеть на сервере. Типа, как будто сервер является Линукс рутером. Эту сетку нужно будет указать на циске.
cd /etc/sysconfig/network-scripts/ cp ifcfg-lo ifcfg-lo:1
Здесь я скопировал loopback интерфейс. Именно он будет являться LAN адресом для нашей виртуальной сети, таким себе шлюзом.
Настройки сетевушки ifcfg-lo:1
DEVICE=lo:1 IPADDR=172.16.255.1 NETMASK=255.255.255.0 NETWORK=172.16.255.0 BROADCAST=172.16.255.255 ONBOOT=yes
За Centos есть виртуальная локальная сеть — 172.16.255.0./24
Поднимаем ее
ifconfig lo:1 up
Настраиваем перенаправление пакетов в ядре. Редактируем файл — /etc/sysctl.conf
# Controls IP packet forwarding net.ipv4.ip_forward = 1 #disable ICP redirects net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0
Применяем правила
sysctl -p
Теперь переходим к настройке OpenSwan. Редактируем файл — /etc/ipsec.conf. Привожу свой конфиг.
config setup
interfaces=%defaultroute
klipsdebug=all #enable debugging
plutodebug=all
protostack=netkey
nat_traversal=yes
virtual_private=%v4:172.16.255.1/24
oe=off #opportunistic encryption is off
protostack=netkey #use netkey over klips(old version)
plutostderrlog=/var/log/pluto.log
conn remoteOffice
auto=start
type=tunnel
#local - centos
left=4.4.4.4 # WAN адрес CentOS
leftsubnet=172.16.255.1/24 # Виртуальная сетка, которую создали
leftsourceip=172.16.255.1 # this is needed so Openswan knows what IP to source from when packets originate on this side of the tunnel.
#remote - cisco
right=5.5.5.5 # WAN адрес циски
rightsubnet=192.168.1.0/24 # локальная подсетка за циской. В ней телефоны.
keyexchange=ike
ike=3des-md5-modp1024,aes256-sha1-modp1024
ikelifetime=86400s
authby=secret #use presharedkey
rekey=yes #should we rekey when key lifetime is about to expire
#Настройик для Фазы 2, я закоментировал, с ними не работало, видать на циске они были другие
#phase 2 encryption-pfsgroup
#phase2=esp #esp for encryption | ah for authentication only
#phase2alg=3des-md5;modp1024
#pfs=no
#forceencaps=yes
Далее настраиваем presharedkey. Создаем файл /etc/ipsec.d/remoteOffice.secrets c таким содержанием.
5.5.5.5 4.4.4.4: PSK "тут Ваш прешаред ключ"
В этом файле, обязательно должна быть пустая строчка, иначе Ipsec будет ругаться.
Добавляем сервис ipsec в автозагрузку и стартуем его.
chkconfig ispec --level 235 on service ipsec start
Проверяем статус ipsec
ipsec auto --status
Если вы увидели в логе — ISAKMP SA established, значит тунель поднялся
000 #2367: "remoteOffice":500 STATE_QUICK_I2 (sent QI2, IPsec SA established); EVENT_SA_REPLACE in 27333s; newest IPSEC; eroute owner; isakmp#2366; idle; import:admin initiate 000 #2367: "remoteOffice" esp.df0b43fd@XXX.XXX.XXX.XXX esp.d0f7bb9f@XXX.XXX.XXX.XXX tun.0@YYY.YYY.YYY.YYY tun.0@XXX.XXX.XXX.XXXref=0 refhim=4294901761 000 #2366: "remoteOffice":500 STATE_MAIN_I4 (ISAKMP SA established); EVENT_SA_REPLACE in 85079s; newest ISAKMP; lastdpd=-1s(seq in:0 out:0); idle; import:admin initiate
Используйте команду — «ipsec auto —help», она поможет удалить/создать/вывести информацию.