...

понедельник, 28 июля 2014 г.

Бесплатный аналог AnyConnect VPN Server



В прошлой своей заметке я описывал Softether VPN Server и как его установить из исходников. За прошедшее время я очень сильно разочаровался в данном сервере так как за все время мне не удалось заставить его работать с нормальной скоростью. Я писал на форум разработчиков, но так и не получил внятного ответа в чем же дело (Ветка форума). Ну делать нечего придется выбрать другое решение.



Я пробовал StrongSwan VPN server, но сервер оказался сложным в настройке, а также он не сумел заработать через http-Proxy (и кстати не должен).

В итоге я остановил свой выбор на Open Connect Server, бесплатной и отличной реализацией Cisco AnyConnect server.

я думаю многим из вас знаком Any Connect server, проприетарный vpnserver для роутеров Cisco.

К сожалению у меня нет сведений есть ли данная программа в репозитории Debian или в каком либо еще, но мы можем собрать ее из исходников.


InstallNettle()

{

if [ "$isget" = «get» ]

then

rm -rfv ./nettle*

wget -c http://ift.tt/1rSgA34

tar -xvf nettle-2.7.1.tar.gz

fi

cd nettle-2.7.1

#autoreconf

./configure --prefix=/ --host=$HOST

check_success

make V=0 -j 4 LDFLAGS="-ldl"

check_success

make V=0 install DESTDIR=$SYSROOT

check_success

cd…

}


InstallGnutls()

{

if [ "$isget" = «get» ]

then

rm -rfv ./gnutls*

git clone git://gitorious.org/gnutls/gnutls.git

fi

cd gnutls

make autoreconf

check_success

./configure --prefix=/ --host=$HOST NETTLE_CFLAGS="-I$SYSROOT/include" NETTLE_LIBS="-L$SYSROOT/lib -lnettle" \

HOGWEED_CFLAGS="-I$SYSROOT/include" HOGWEED_LIBS="-L$SYSROOT/lib -lhogweed" \

--disable-doc --with-default-trust-store-file="/etc/ssl/ca-bundle.crt" --enable-local-libopts=yes


check_success

make V=0 -j 4

check_success

make V=0 install DESTDIR=$SYSROOT

check_success

cd…

}


InstallOpenConnect()

{

if [ "$isget" = «get» ]

then

rm -rfv ./ocserv*

git clone git://git.infradead.org/ocserv.git

fi

cd ocserv

make autoreconf

chmod +x ./autogen.sh

./autogen.sh

./configure --prefix=/ --host=$HOST LIBGNUTLS_CFLAGS="-I$SYSROOT/include" LIBGNUTLS_LIBS="-L$SYSROOT/lib -lgnutls" \

LIBREADLINE_CFLAGS="-I$SYSROOT/include/readline" LIBREADLINE_LIBS="-L$SYSROOT/lib -lreadline -lncurses" \

--enable-local-libopts=yes


check_success

make V=0 AUTOGEN=«autogen»

check_success

sed -i -e 's|/bin/true|autogen|g' ./doc/Makefile

make V=0 install DESTDIR=$SYSROOT

check_success

cd…

}


InstallGmp()

{

if [ "$isget" = «get» ]

then

rm -rfv ./gmp-6.0.0a

wget -c «http://ift.tt/1rSgA3d»

tar -xf ./gmp-6.0.0a.tar.bz2

fi

cd gmp-6.0.0

make V=0 clean

./configure --prefix=/ --host=$HOST


check_success

make V=0 -j 4

check_success

make V=0 install DESTDIR=$SYSROOT

check_success

cd…

}


Генерация сертификатов

#!/bin/bash

certtool --generate-privkey --outfile ca-key.pem

cat << _EOF_ >ca.tmpl

cn = «loft.dtdns.net»

organization = «loft inc.»

serial = 1

expiration_days = 999

ca

signing_key

cert_signing_key

crl_signing_key

_EOF_


certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --o utfile ca-cert.pem


certtool --generate-privkey --outfile server-key.pem

cat << _EOF_ >server.tmpl

cn = «loft.dtdns.net»

organization = «loft inc.»

serial = 2

expiration_days = 999

signing_key

encryption_key #only if the generated key is an RSA one

tls_www_server

_EOF_


certtool --generate-certificate --load-privkey server-key.pem --load-ca-certific ate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile se rver-cert.pem


mv -fv ./server-cert.pem /etc/

mv -fv ./server-key.pem /etc/

ocpasswd root -c /etc/ocpasswd


Файл настроек

cat /etc/ocserv.conf



max-clients = 16

max-same-clients = 16

tcp-port = 443

udp-port = 443

keepalive = 32400

dpd = 90

mobile-dpd = 1800

try-mtu-discovery = false

auth = «plain[/etc/ocpasswd]»

server-cert = /etc/server-cert.pem

server-key = /etc/server-key.pem


tls-priorities = «NORMAL:%SERVER_PRECEDENCE:%COMPAT»


auth-timeout = 40

cookie-timeout = 300

deny-roaming = false

rekey-time = 172800

rekey-method = ssl


use-utmp = true

use-occtl = true


pid-file = /var/run/ocserv.pid

socket-file = /var/run/ocserv-socket


run-as-user = root

run-as-group = root

cgroup = «cpuset,cpu:test»

device = vpns

cisco-client-compat = true

predictable-ips = true


default-domain = example.com


# The pool of addresses that leases will be given from.

ipv4-network = 192.168.2.0

ipv4-netmask = 255.255.255.0


dns = 8.8.8.8


ping-leases = false


Юнит для запуска в systemd

[Unit]

Description=OpenConnect server

After=network.target

[Service]

Type=forking

Environment=«LD_LIBRARY_PATH=/lib:/lib»

PIDFile=/var/run/ocserv.pid

ExecStart=/sbin/ocserv --config=/etc/ocserv.conf

Restart=always

[Install]

WantedBy=multi-user.target


После запуска сервера командой "/sbin/ocserv --config=/etc/ocserv.conf"

мы можем подключится при помощи официального AnyConnect Клиента.



через официальное приложение IOS.


Ну и в окончание хочу сказать что проект мне очень понравился. я переписывался с разработчиком и он мне очень оперативно и подробно отвечал.

Сервер очень шустрый мне показалось, что скорость не режется вообще

Не проходите мимо!


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий