Установка из исходников OpenConnect VPN-сервера (ocserv) на Debian 11
Разберем как установить из исходников актуальную (на момент написания статьи) версию VPN-сервера OpenConnect 1.2.2 на Debian 11 Bullseye.
JUQwJTlFJUQwJUIxJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUJCJUQxJThGJUQwJUI1JUQwJUJDJUMyJUEwJUQwJUI4JUQwJUJEJUQxJTg0JUQwJUJFJUQxJTgwJUQwJUJDJUQwJUIwJUQxJTg2JUQwJUI4JUQxJThFJTIwJUQwJUJFJTIwJUQxJTgwJUQwJUI1JUQwJUJGJUQwJUJFJUQwJUI3JUQwJUI4JUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQxJThGJUQxJTg1JTIwJUQwJUI4JTIwJUQwJUJFJUQwJUIxJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUJCJUQxJThGJUQwJUI1JUQwJUJDJTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUJFJUQwJUIyJUQwJUJCJUQwJUI1JUQwJUJEJUQwJUJEJUQxJThCJUQwJUI1JTIwJUQwJUJGJUQwJUIwJUQwJUJBJUQwJUI1JUQxJTgyJUQxJThCLg==
YXB0LWdldCUyMHVwZGF0ZSUyMCUyNiUyNiUyMGFwdC1nZXQlMjB1cGdyYWRlJTIwLXk=
Устанавливаем необходимые зависимости.
apt-get install build-essential make pkg-config libgnutls28-dev libev-dev libpam0g-dev liblz4-dev libseccomp-dev libreadline-dev libnl-route-3-dev libkrb5-dev libradcli-dev libpcl1-dev libcjose-dev libjansson-dev liboath-dev libprotobuf-c-dev libtalloc-dev libhttp-parser-dev libcurlpp-dev libssl-dev libmaxminddb-dev libbsd-dev libsystemd-dev libwrap0-dev libuid-wrapper libpam-wrapper libnss-wrapper libsocket-wrapper gss-ntlmssp tcpdump protobuf-c-compiler iperf3 lcov ssl-cert libpam-oath -y
Скачиваем и распаковываем исходники OpenConnect (на момент написания статьи последняя версия 1.2.2).
d2dldCUyMC1QJTIwJTJGb3B0JTJGJTIwaHR0cHMlM0ElMkYlMkZ3d3cuaW5mcmFkZWFkLm9yZyUyRm9jc2VydiUyRmRvd25sb2FkJTJGb2NzZXJ2LTEuMi4yLnRhci54eg==
dGFyJTIwLXh2ZiUyMCUyRm9wdCUyRm9jc2Vydi0xLjIuMi50YXIueHolMjAtQyUyMCUyRm9wdCUyRiUyMA==
cd /opt/ocserv-1.2.2
JUQwJUExJUQwJUJFJUQwJUIxJUQwJUI4JUQxJTgwJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUI4JTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUIwJUQwJUIyJUQwJUJCJUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUUyJTgwJTk0JTIwT3BlbkNvbm5lY3Qu
./configure --prefix= --enable-oidc-auth
bWFrZSUyMCUyNiUyNiUyMG1ha2UlMjBpbnN0YWxs
JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUJFJUQxJTg3JUQwJUI4JUQwJUI5JTIwJUQwJUJBJUQwJUIwJUQxJTgyJUQwJUIwJUQwJUJCJUQwJUJFJUQwJUIzJTIwJUQwJUI0JUQwJUJCJUQxJThGJTIwb2NzZXJ2JTIwJUQwJUI4JTIwJUQwJUJBJUQwJUJFJUQwJUJGJUQwJUI4JUQxJTgwJUQxJTgzJUQwJUI1JUQwJUJDJTIwJUQwJUJGJUQxJTgwJUQwJUI4JUQwJUJDJUQwJUI1JUQxJTgwJUQxJThCJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJUQwJUJFJUQwJUIyJTIwJUQwJUJBJUQwJUJFJUQwJUJEJUQxJTg0JUQwJUI4JUQwJUIzJUQxJTgzJUQxJTgwJUQwJUIwJUQxJTg2JUQwJUI4JUQwJUI4JUMyJUEwJUQwJUIyJTIwJUQwJUJEJUQwJUI1JUQwJUIzJUQwJUJFLg==
mkdir -p /etc/ocserv/
Y3AlMjBkb2MlMkZzYW1wbGUuY29uZmlnJTIwJTJGZXRjJTJGb2NzZXJ2JTJGb2NzZXJ2LmNvbmY=
cp doc/sample.passwd /etc/ocserv/
Y3AlMjBkb2MlMkZzYW1wbGUub3RwJTIwJTJGZXRjJTJGb2NzZXJ2JTJG
cp doc/profile.xml /etc/ocserv/
JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUJGJUQwJUJFJUQwJUJCJUQxJThDJUQwJUI3JUQwJUJFJUQwJUIyJUQwJUIwJUQxJTgyJUQwJUI1JUQwJUJCJUQxJThGJTIwb2NzZXJ2JTIwJUQwJUJFJUQxJTgyJTIwJUQwJUJBJUQwJUJFJUQxJTgyJUQwJUJFJUQxJTgwJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQwJUIxJUQxJTgzJUQwJUI0JUQwJUI1JUQxJTgyJTIwJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUJFJUQxJTgyJUQwJUIwJUQxJTgyJUQxJThDJTIwJUQxJTgxJUQwJUJCJUQxJTgzJUQwJUI2JUQwJUIxJUQwJUIwLg==
useradd -r -M -U -s /usr/sbin/nologin ocserv
JUQwJTlGJUQxJTgwJUQwJUI4JUQwJUIyJUQwJUJFJUQwJUI0JUQwJUI4JUQwJUJDJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJTIwJUQwJUJBJUQwJUJFJUQwJUJEJUQxJTg0JUQwJUI4JUQwJUIzJUQxJTgzJUQxJTgwJUQwJUIwJUQxJTg2JUQwJUI4JUQwJUI4JTIwJTJGZXRjJTJGb2NzZXJ2JTJGb2NzZXJ2LmNvbmYlMjAlRDAlQkElMjAlRDAlQjQlRDAlQjUlRDElODQlRDAlQkUlRDAlQkIlRDElODIlRDAlQkQlRDElOEIlRDAlQkMlMjAlRDAlQjclRDAlQkQlRDAlQjAlRDElODclRDAlQjUlRDAlQkQlRDAlQjglRDElOEYlRDAlQkMu
sed -i 's/auth = "plain\[passwd=\.\/sample\.passwd\]"/#&/' /etc/ocserv/ocserv.conf
sed -i 's/^#auth = "pam\[gid-min=1000\]"/auth = "pam[gid-min=1000]"/' /etc/ocserv/ocserv.conf
c2VkJTIwLWklMjAncyUyRnJ1bi1hcy11c2VyJTIwJTNEJTIwbm9ib2R5JTJGcnVuLWFzLXVzZXIlMjAlM0QlMjBvY3NlcnYlMkZnJyUyMCUyRmV0YyUyRm9jc2VydiUyRm9jc2Vydi5jb25m
c2VkJUMyJUEwLWklQzIlQTAncyUyRnJ1bi1hcy1ncm91cCUyMCUzRCUyMGRhZW1vbiUyRnJ1bi1hcy1ncm91cCUyMCUzRCUyMG9jc2VydiUyRmcnJUMyJUEwJTJGZXRjJTJGb2NzZXJ2JTJGb2NzZXJ2LmNvbmY=
c2VkJTIwLWklMjAncyUyM3NlcnZlci1jZXJ0JTIwJTNEJTIwJTVDLiU1Qy4lMkZ0ZXN0cyUyRmNlcnRzJTJGc2VydmVyLWNlcnQlNUMucGVtJTIzc2VydmVyLWNlcnQlMjAlM0QlMjAlMkZldGMlMkZzc2wlMkZjZXJ0cyUyRnNzbC1jZXJ0LXNuYWtlb2lsLnBlbSUyMyclMjAlMkZldGMlMkZvY3NlcnYlMkZvY3NlcnYuY29uZg==
sed -i 's#server-key = \.\./tests/certs/server-key\.pem#server-key = /etc/ssl/private/ssl-cert-snakeoil.key#' /etc/ocserv/ocserv.conf
sed -i 's#ca-cert = \.\./tests/certs/ca\.pem#ca-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem#' /etc/ocserv/ocserv.conf
c2VkJUMyJUEwLWklQzIlQTAnNzQ3JTJDJTI0cyUyRiU1RSUyRiUyMyVDMiVBMCUyRiclQzIlQTAlMkZldGMlMkZvY3NlcnYlMkZvY3NlcnYuY29uZg==
JUQwJTk0JUQwJUJFJUQwJUIxJUQwJUIwJUQwJUIyJUQwJUI4JUQwJUJDJTIwJUQwJUJDJUQwJUJFJUQwJUI0JUQxJTgzJUQwJUJCJUQxJThDJTIwJUQwJUIwJUQxJTgzJUQxJTgyJUQwJUI1JUQwJUJEJUQxJTgyJUQwJUI4JUQxJTg0JUQwJUI4JUQwJUJBJUQwJUIwJUQxJTg2JUQwJUI4JUQwJUI4JTIwKFBBTSklMjAlRDAlQjQlRDAlQkIlRDElOEYlMjBvY3NlcnYu
cat << EOF > /etc/pam.d/ocserv
#
JTIzJTIwJTJGZXRjJTJGcGFtLmQlMkZvY3NlcnYlMjAtJTIwc3BlY2lmeSUyMHRoZSUyMFBBTSUyMGJlaGF2aW91ciUyMG9mJTIwb2NzZXJ2
JTIz
# Standard Un*x authentication.
JTQwaW5jbHVkZSUyMGNvbW1vbi1hdXRo
JTIzJTIwRGlzYWxsb3clMjBub24tcm9vdCUyMGxvZ2lucyUyMHdoZW4lMjAlMkZldGMlMkZub2xvZ2luJTIwZXhpc3RzLg==
YWNjb3VudCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlcXVpcmVkJTIwJTIwJTIwJTIwJTIwcGFtX25vbG9naW4uc28=
# Uncomment and edit /etc/security/access.conf if you need to set complex
# access limits.
# account required pam_access.so
# Standard Un*x authorization.
JTQwaW5jbHVkZSUyMGNvbW1vbi1hY2NvdW50
JTIzJTIwU0VMaW51eCUyMG5lZWRzJTIwdG8lMjBiZSUyMHRoZSUyMGZpcnN0JTIwc2Vzc2lvbiUyMHJ1bGUuJTIwVGhpcyUyMGVuc3VyZXMlMjB0aGF0JTIwYW55
JTIzJTIwbGluZ2VyaW5nJTIwY29udGV4dCUyMGhhcyUyMGJlZW4lMjBjbGVhcmVkLiUyMFdpdGhvdXQlMjBvdXQlMjB0aGlzJTIwaXQlMjBpcyUyMHBvc3NpYmxl
JTIzJTIwdGhhdCUyMGElMjBtb2R1bGUlMjBjb3VsZCUyMGV4ZWN1dGUlMjBjb2RlJTIwaW4lMjB0aGUlMjB3cm9uZyUyMGRvbWFpbi4=
c2Vzc2lvbiUyMCUyMCUyMCUyMCU1QnN1Y2Nlc3MlM0RvayUyMGlnbm9yZSUzRGlnbm9yZSUyMG1vZHVsZV91bmtub3duJTNEaWdub3JlJTIwZGVmYXVsdCUzRGJhZCU1RCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhbV9zZWxpbnV4LnNvJTIwY2xvc2U=
JTIzJTIwU3RhbmRhcmQlMjBVbip4JTIwc2Vzc2lvbiUyMHNldHVwJTIwYW5kJTIwdGVhcmRvd24u
@include common-session
# Set up user limits from /etc/security/limits.conf.
session required pam_limits.so
# SELinux needs to intervene at login time to ensure that the process starts
# in the proper default security context. Only sessions which are intended
JTIzJTIwdG8lMjBydW4lMjBpbiUyMHRoZSUyMHVzZXIncyUyMGNvbnRleHQlMjBzaG91bGQlMjBiZSUyMHJ1biUyMGFmdGVyJTIwdGhpcy4=
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
@include common-password
EOF
JUQwJTlBJUQwJUJFJUQwJUJGJUQwJUI4JUQxJTgwJUQxJTgzJUQwJUI1JUQwJUJDJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJTIwJUQxJTgxJUQwJUI1JUQxJTgwJUQwJUIyJUQwJUI4JUQxJTgxJUQwJUIwJTIwb2NzZXJ2LnNlcnZpY2UlMjAlRDAlQjIlMjAlRDElODElRDAlQjglRDElODElRDElODIlRDAlQjUlRDAlQkMlRDAlQkQlRDElODMlRDElOEUlMjAlRDAlQjElRDAlQjglRDAlQjElRDAlQkIlRDAlQjglRDAlQkUlRDElODIlRDAlQjUlRDAlQkElRDElODMlMjAlRDAlQjglMjAlRDAlQjQlRDAlQkUlRDAlQjElRDAlQjAlRDAlQjIlRDAlQjglRDAlQkMlMjAlRDElODElRDAlQjUlRDElODAlRDAlQjIlRDAlQjglRDElODElMjAlRDAlQjIlMjAlRDAlQjAlRDAlQjIlRDElODIlRDAlQkUlRDAlQjclRDAlQjAlRDAlQjMlRDElODAlRDElODMlRDAlQjclRDAlQkElRDElODMu
cp doc/systemd/standalone/ocserv.service /lib/systemd/system/
c3lzdGVtY3RsJUMyJUEwZGFlbW9uLXJlbG9hZA==
systemctl enable ocserv.service
Создадим init
скрипт для запуска ocserv
.
Y2F0JTIwJTNDJTNDJTIwRU9GJTIwJTNFJTIwJTJGZXRjJTJGaW5pdC5kJTJGb2NzZXJ2
#! /bin/sh
JTIzJTIzJTIzJTIwQkVHSU4lMjBJTklUJTIwSU5GTw==
# Provides: ocserv
JTIzJTIwUmVxdWlyZWQtU3RhcnQlM0ElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjRyZW1vdGVfZnMlMjAlMjRzeXNsb2clMjBkYnVz
# Required-Stop: $remote_fs $syslog dbus
# Default-Start: 2 3 4 5
JTIzJTIwRGVmYXVsdC1TdG9wJTNBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMCUyMDElMjA2
JTIzJTIwU2hvcnQtRGVzY3JpcHRpb24lM0ElMjAlMjAlMjAlMjBPcGVuQ29ubmVjdCUyMFNTTCUyMFZQTiUyMHNlcnZlcg==
# Description: secure, small, fast and configurable OpenConnect SSL VPN server
### END INIT INFO
c2V0JTIwLWU=
NAME=ocserv
DESC="OpenConnect SSL VPN server"
REFFTU9OJTNEJTJGdXNyJTJGc2JpbiUyRm9jc2Vydg==
REFFTU9OX0NPTkZJRyUzRCUyRmV0YyUyRiUyNCU3Qk5BTUUlN0QlMkYlMjQlN0JOQU1FJTdELmNvbmY=
DAEMON_PIDFILE=/run/${NAME}.pid
DAEMON_ARGS="--pid-file $DAEMON_PIDFILE --config $DAEMON_CONFIG"
dGVzdCUyMC14JTIwJTI0REFFTU9OJTIwJTdDJTdDJTIwZXhpdCUyMDA=
dW1hc2slMjAwMjI=
. /lib/lsb/init-functions
ZXhwb3J0JTIwUEFUSCUzRCUyMiUyNCU3QlBBVEglM0ElMkIlMjRQQVRIJTNBJTdEJTJGdXNyJTJGc2JpbiUzQSUyRnNiaW4lMjI=
ZGFlbW9uX3N0YXJ0KCk=
JTdC
JTIwJTIwJTIwJTIwaWYlMjAlNUIlMjAhJTIwLXMlMjAlMjIlMjREQUVNT05fQ09ORklHJTIyJTIwJTVEJTNCJTIwdGhlbg==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX2ZhaWx1cmVfbXNnJTIwJTIycGxlYXNlJTIwY3JlYXRlJTIwJTI0JTdCREFFTU9OX0NPTkZJRyU3RCUyQyUyMG5vdCUyMHN0YXJ0aW5nLi4uJTIy
log_end_msg 1
exit 0
fi
JTIwJTIwJTIwJTIwbG9nX2RhZW1vbl9tc2clMjAlMjJTdGFydGluZyUyMCUyNERFU0MlMjIlMjAlMjIlMjROQU1FJTIyJTIwJTdDJTdDJTIwdHJ1ZQ==
JTIwJTIwJTIwJTIwaWYlMjBzdGFydC1zdG9wLWRhZW1vbiUyMC0tc3RhcnQlMjAtLXF1aWV0JTIwLS1va25vZG8lMjAtLXBpZGZpbGUlMjAlMjREQUVNT05fUElERklMRSUyMC0tZXhlYyUyMCUyNERBRU1PTiUyMC0tJTIwJTI0REFFTU9OX0FSR1MlMjAlM0IlMjB0aGVu
log_end_msg 0 || true
else
log_end_msg 1 || true
JTIwJTIwJTIwJTIwZmk=
}
Y2FzZSUyMCUyMiUyNDElMjIlMjBpbg==
JTIwJTIwc3RhcnQp
daemon_start
JTIwJTIwJTIwJTIwJTNCJTNC
stop)
JTIwJTIwJTIwJTIwbG9nX2RhZW1vbl9tc2clMjAlMjJTdG9wcGluZyUyMCUyNERFU0MlMjIlMjAlMjIlMjROQU1FJTIyJTIwJTdDJTdDJTIwdHJ1ZQ==
if start-stop-daemon --stop --quiet --oknodo --pidfile $DAEMON_PIDFILE; then
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX2VuZF9tc2clMjAwJTIwJTdDJTdDJTIwdHJ1ZQ==
else
log_end_msg 1 || true
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZmk=
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNCJTNC
JTIwJTIwcmVsb2FkJTdDZm9yY2UtcmVsb2FkKQ==
log_daemon_msg "Reloading $DESC" "$NAME" || true
if start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $DAEMON_PIDFILE --exec $DAEMON; then
log_end_msg 0 || true
else
log_end_msg 1 || true
fi
;;
JTIwJTIwcmVzdGFydCk=
log_daemon_msg "Restarting $DESC" "$NAME" || true
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3RhcnQtc3RvcC1kYWVtb24lMjAtLXN0b3AlMjAtLXF1aWV0JTIwLS1va25vZG8lMjAtLXJldHJ5JTIwMzAlMjAtLXBpZGZpbGUlMjAlMjREQUVNT05fUElERklMRQ==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZGFlbW9uX3N0YXJ0
;;
JTIwJTIwdHJ5LXJlc3RhcnQp
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX2RhZW1vbl9tc2clMjAlMjJSZXN0YXJ0aW5nJTIwJTI0REVTQyUyMiUyMCUyMiUyNE5BTUUlMjIlMjAlN0MlN0MlMjB0cnVl
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwUkVUJTNEMA==
start-stop-daemon --stop --quiet --retry 30 --pidfile $DAEMON_PIDFILE || RET="$?"
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY2FzZSUyMCUyNFJFVCUyMGlu
0)
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwb2xkJTIwZGFlbW9uJTIwc3RvcHBlZA==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZGFlbW9uX3N0YXJ0
;;
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMSk=
# daemon not running
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX3Byb2dyZXNzX21zZyUyMCUyMihub3QlMjBydW5uaW5nKSUyMiUyMCU3QyU3QyUyMHRydWU=
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX2VuZF9tc2clMjAwJTIwJTdDJTdDJTIwdHJ1ZQ==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNCJTNC
*)
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwZmFpbGVkJTIwdG8lMjBzdG9w
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX3Byb2dyZXNzX21zZyUyMCUyMihmYWlsZWQlMjB0byUyMHN0b3ApJTIyJTIwJTdDJTdDJTIwdHJ1ZQ==
log_end_msg 1 || true
;;
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZXNhYw==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNCJTNC
status)
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3RhdHVzX29mX3Byb2MlMjAtcCUyMCUyNERBRU1PTl9QSURGSUxFJTIwJTI0REFFTU9OJTIwJTI0TkFNRSUyMCUyNiUyNiUyMGV4aXQlMjAwJTIwJTdDJTdDJTIwZXhpdCUyMCUyNCUzRg==
;;
JTIwJTIwKik=
log_action_msg "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|try-restart|status}" || true
exit 1
ZXNhYw==
ZXhpdCUyMDA=
EOF
JUQwJTk0JUQwJUI1JUQwJUJCJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQxJThGJUQwJUI1JUQwJUJDJUQxJThCJUQwJUJDJTIwJUQwJUI4JTIwJUQwJUI3JUQwJUIwJUQwJUJGJUQxJTgzJUQxJTgxJUQwJUJBJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUI1JUQxJTgwJUQwJUIyJUQwJUI4JUQxJTgxJTIwb2NzZXJ2Lg==
chmod +x /etc/init.d/ocserv
/etc/init.d/ocserv start
JTJGZXRjJTJGaW5pdC5kJTJGb2NzZXJ2JTIwc3RhdHVz
JUQwJTkyJUQxJThCJUQwJUIyJUQwJUJFJUQwJUI0JTIwJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUJFJUQxJTgyJUQwJUIwJUQxJThFJUQxJTg5JUQwJUI1JUQwJUIzJUQwJUJFJTIwJUQxJTgxJUQwJUI1JUQxJTgwJUQwJUIyJUQwJUI4JUQxJTgxJUQwJUIwJUMyJUEwb2NzZXJ2Lg==
U3RhcnRpbmclMjBvY3NlcnYlMjAodmlhJTIwc3lzdGVtY3RsKSUzQSUyMG9jc2Vydi5zZXJ2aWNlLg==
● ocserv.service - OpenConnect SSL VPN server
JTIwJTIwJTIwJTIwJTIwTG9hZGVkJTNBJTIwbG9hZGVkJTIwKCUyRmxpYiUyRnN5c3RlbWQlMkZzeXN0ZW0lMkZvY3NlcnYuc2VydmljZSUzQiUyMGVuYWJsZWQlM0IlMjB2ZW5kb3IlMjBwcmVzZXQlM0ElMjBlbmFibGVkKQ==
Active: active (running) since Fri 2023-10-13 09:49:04 MSK; 28ms ago
JTIwJTIwJTIwJTIwJTIwJTIwJTIwRG9jcyUzQSUyMG1hbiUzQW9jc2Vydig4KQ==
Main PID: 24725 (ocserv-main)
JTIwJTIwJTIwJTIwJTIwJTIwVGFza3MlM0ElMjAyJTIwKGxpbWl0JTNBJTIwMjI4MCk=
Memory: 2.4M
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwQ1BVJTNBJTIwMTBtcw==
CGroup: /system.slice/ocserv.service
├─24725 ocserv-main
└─24729 ocserv-sm
окт 13 09:49:04 deb10 ocserv[24725]: ocserv[24725]: main: initializing control unix socket: /var/run/occtl.socket
JUQwJUJFJUQwJUJBJUQxJTgyJTIwMTMlMjAwOSUzQTQ5JTNBMDQlMjBkZWIxMCUyMG9jc2VydiU1QjI0NzI1JTVEJTNBJTIwbWFpbiUzQSUyMGluaXRpYWxpemluZyUyMGNvbnRyb2wlMjB1bml4JTIwc29ja2V0JTNBJTIwJTJGdmFyJTJGcnVuJTJGb2NjdGwuc29ja2V0
окт 13 09:49:04 deb10 ocserv[24725]: ocserv[24725]: main: initialized ocserv 1.2.2
окт 13 09:49:04 deb10 ocserv[24725]: main: initialized ocserv 1.2.2
окт 13 09:49:04 deb10 ocserv[24729]: ocserv[24729]: sec-mod: reading supplemental config from files
окт 13 09:49:04 deb10 ocserv[24729]: sec-mod: reading supplemental config from files
JUQwJUJFJUQwJUJBJUQxJTgyJTIwMTMlMjAwOSUzQTQ5JTNBMDQlMjBkZWIxMCUyMG9jc2VydiU1QjI0NzI5JTVEJTNBJTIwb2NzZXJ2JTVCMjQ3MjklNUQlM0ElMjBzZWMtbW9kJTNBJTIwbG9hZGVkJTIwMSUyMGtleXM=
окт 13 09:49:04 deb10 ocserv[24729]: sec-mod: loaded 1 keys
окт 13 09:49:04 deb10 ocserv[24729]: ocserv[24729]: sec-mod: sec-mod initialized (socket: /var/run/ocserv-socket.75fb90ca.0)
JUQwJUJFJUQwJUJBJUQxJTgyJTIwMTMlMjAwOSUzQTQ5JTNBMDQlMjBkZWIxMCUyMG9jc2VydiU1QjI0NzI5JTVEJTNBJTIwc2VjLW1vZCUzQSUyMHNlYy1tb2QlMjBpbml0aWFsaXplZCUyMChzb2NrZXQlM0ElMjAlMkZ2YXIlMkZydW4lMkZvY3NlcnYtc29ja2V0Ljc1ZmI5MGNhLjAp
Выведем информацию об установленной версии ocserv
.
b2NzZXJ2JTIwLXY=
b2NzZXJ2JTIwMS4yLjI=
Q29tcGlsZWQlMjB3aXRoJTNBJTIwc2VjY29tcCUyQyUyMHRjcC13cmFwcGVycyUyQyUyMG9hdGglMkMlMjByYWRpdXMlMkMlMjBnc3NhcGklMkMlMjBQQU0lMkMlMjBQS0NTJTIzMTElMkMlMjBBbnlDb25uZWN0JTJDJTIwb2lkY19hdXRo
GnuTLS version: 3.7.1
JUQwJTlCJUQwJUJFJUQwJUIzJUQwJUI4JTIwJUQxJTgxJUQwJUI1JUQxJTgwJUQwJUIyJUQwJUI4JUQxJTgxJUQwJUIwJTIwb2NzZXJ2JTIwJUQwJUJGJUQwJUI4JUQxJTg4JUQxJTgzJUQxJTgyJUQxJTgxJUQxJThGJTIwJUQwJUIyJUMyJUEwJTJGdmFyJTJGbG9nJTJGc3lzbG9nJTJDJTIwJUQwJUI0JUQwJUJCJUQxJThGJTIwJUQxJTgzJUQwJUI0JUQwJUJFJUQwJUIxJUQwJUJEJUQwJUJFJUQwJUIzJUQwJUJFJTIwJUQwJUJGJUQxJTgwJUQwJUJFJUQxJTgxJUQwJUJDJUQwJUJFJUQxJTgyJUQxJTgwJUQwJUIwJTIwJUQwJUI4JUQxJTg1JTIwJUQwJUIyJTIwdGFpbCUyMCVEMSU4MCVEMCVCNSVEMCVCNiVEMCVCOCVEMCVCQyVEMCVCNSUyMCVEMCVCMiVEMCVCRSVEMSU4MSVEMCVCRiVEMCVCRSVEMCVCQiVEMSU4QyVEMCVCNyVEMSU4MyVEMCVCNSVEMCVCQyVEMSU4MSVEMSU4RiUyMCVEMCVCQSVEMCVCRSVEMCVCQyVEMCVCMCVEMCVCRCVEMCVCNCVEMCVCRSVEMCVCOS4=
journalctl -f -u ocserv
Можно провести тестовое подключение к поднятому VPN-серверу, к примеру через Cisco AnyConnect (OpenConnect прекрасно с ним работает). В дефолтной конфигурации авторизация на VPN-сервере через локальные учетные записи. В случае если все сделали правильно, то авторизация будет успешной.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Привет.
А ни кто не пытался настроить межсетевое взаимодействие?
Например:
Физическая сеть клиента №1 192.168.2.0/24
Физическая сеть клиента №2 192.168.3.0/24
Сервер ocserv находится в сети №3 192.168.4.0/24
Виртуальная сеть 10.10.0.0/16
Прописал в конфигах клиентов:
expose-iroutes = true
iroute = подсеть клиента
route = подсеть второго клиента
ip show route на клиенте показывает новый маршрут: 192.168.2.0/24 dev tun0 scope link
но пинг не проходит.
tcpdump показывает, что пинг обрывается на стороне сервера.
Если вручную прописать маршруты на сервере (ip route add 192.168.2.0/24 via 10.10.123.456 dev vpns1), то запросы доходят до второго клиента, но при этом не возвращаются.
С zerotier все работает, но его местами блокируют.
Мне кажется я делаю что-то не так, особенно прописывая вручную маршруты на самом сервере.
По умолчанию forward разрешен, пробовал отключать ufw, но без результата.
В официальном примере https://docs.openconnect-vpn.net/recipes/ocserv-site-to-site/ все как-то проще.
Я совсем что-то не понимаю, как прописать директивы route и no-route
Есть внутренние подсети и есть весь остальной интернет
Можно как-то прописать, чтобы весь трафик, кроме внутренних подсетей, шел через vpn?
Сначала подумал можно прописать route = default, но при это перестаёт резолвиться совсем всё
если route нет то весь траффик перенаправляется. или route = default и просто добавь no route = внутреннии сети
***вы совсем уже с такой капчей***
Без нее, просто неимоверное количество спам комментариаев шарашит..
Добрый день, у меня на Debian ругается на отсутствие ocserv в /usr/sbin. Он при сборке туда сам положиться должен или как? Версия 1.2.4.
Добрый день,
Вы при конфигурировании так указывали —
./configure --prefix= --enable-oidc-auth
?Он туда должен положится при установке а не при сборке/компилияции.
А вы весь трафик через OpenConnect заворачиваете ? или частично ?
но вот засада с в openconnect именно с instagramm, всё остальное работае. как поправить так и не понял.
Добрый день! поднял openconnect для жены, что бы она могла в инстогрмм лазать, но вот незадача, почмеу-то вылезает HTTP ERROR 429 при попытки войти в instagramm.com как это можно решить?
Смотрите какой трафик перенаправляется в VPN тунель, а вообще да этих целей лучше поднять WireGuard, я так себе и сделал. На мобильнике очень удобно, да и на ПК.
Чуть позже напишу статью как это все развернуть, может будет полезно.
Так РКН лочит WireGuard и т.д. (( Ваша статья как нельзя к месту ) Спасибо за труд !
хз что у вас там лочит, у меня все пашет))
Спасибо, приятно осознавать что оказываешься полезен кому то!
Да вот сюда(openconnect) и полез, т.к. WG поломали 15ого числа. ну может shadowsock только если к нему прикручивать
Хмм. Перезагрузил еще раз, пропала ошибка. Спасибо.
Да не за что
Да подключение происходит норм, не падает. пинги до сервера бегают. Тока ошибка в логах постоянно эта выходит
Ubuntu 20.4
ocserv 1.2.3
GnuTLS 3.6.13
libgnutls28-dev установлен.
На убунту не тестировал, все делал на Debian 11. Что то в настройках TLS смотрите. Сертификаты указанные в настройках
ocserv
существуют ?Заработало!
Проверил параметры:
/etc/sysctl.conf:
«net.ipv4.ip_forward = 1»
/etc/systemd/timesyncd.conf:
«NTP=0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org»
и перезапуск: «systemctl restart systemd-timesyncd»
открыл фаервол:
«ufw allow 80,443/tcp»
К сожалению нет, ошибка опять полезла в логах.
Может есть еще какие то варианты?
Точно все по статье делал ? На какой системе ставил ? gnutls в системе пакет установлен ? Для Debian должен быть обязательно установлен — libgnutls28-dev
Подскажи, почему выдает ошибку после запуска /etc/init.d/ocserv status:
«gnutls error (at worker-vpn.c888) error in the pull function»
«systemctl deamon reload»
может так:
«systemctl daemon-reload»
Да, верно, опечатался, тире забыл. Исправил. Спасибо за наблюдение.
Рад что ты жив!
Спасибо) Конечно я жив)