Безкоштовний аналог 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 ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz
 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 «gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2 »
 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.
 
 
Ну і в закінчення хочу сказати що проект мені дуже сподобався. я листувався з розробником і він мені дуже оперативно і детально відповідав.
Сервер дуже спритний мені здалося, що швидкість не ріжеться взагалі
Не проходьте мимо!
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.