SCROLL
Среднее время на прочтение: 6 мин.

Установка из исходников OpenConnect VPN-сервера (ocserv) на Debian 11

Разберем как установить из исходников актуальную (на момент написания статьи) версию VPN-сервера OpenConnect 1.2.2 на Debian 11 Bullseye.

Все ниже действия будут производится из под root.

Обновляем информацию о репозиториях и обновляем установленные пакеты.

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

JUQwJUExJUQwJUJBJUQwJUIwJUQxJTg3JUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUI4JTIwJUQxJTgwJUQwJUIwJUQxJTgxJUQwJUJGJUQwJUIwJUQwJUJBJUQwJUJFJUQwJUIyJUQxJThCJUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUI4JUQxJTgxJUQxJTg1JUQwJUJFJUQwJUI0JUQwJUJEJUQwJUI4JUQwJUJBJUQwJUI4JTIwT3BlbkNvbm5lY3QlMjAoJUQwJUJEJUQwJUIwJTIwJUQwJUJDJUQwJUJFJUQwJUJDJUQwJUI1JUQwJUJEJUQxJTgyJTIwJUQwJUJEJUQwJUIwJUQwJUJGJUQwJUI4JUQxJTgxJUQwJUIwJUQwJUJEJUQwJUI4JUQxJThGJTIwJUQxJTgxJUQxJTgyJUQwJUIwJUQxJTgyJUQxJThDJUQwJUI4JTIwJUQwJUJGJUQwJUJFJUQxJTgxJUQwJUJCJUQwJUI1JUQwJUI0JUQwJUJEJUQxJThGJUQxJThGJTIwJUQwJUIyJUQwJUI1JUQxJTgwJUQxJTgxJUQwJUI4JUQxJThGJTIwMS4yLjIpLg==

wget -P /opt/ https://www.infradead.org/ocserv/download/ocserv-1.2.2.tar.xz
dGFyJTIwLXh2ZiUyMCUyRm9wdCUyRm9jc2Vydi0xLjIuMi50YXIueHolMjAtQyUyMCUyRm9wdCUyRiUyMA==

Y2QlMjAlMkZvcHQlMkZvY3NlcnYtMS4yLjI=

JUQwJUExJUQwJUJFJUQwJUIxJUQwJUI4JUQxJTgwJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUI4JTIwJUQxJTgzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUIwJUQwJUIyJUQwJUJCJUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUUyJTgwJTk0JTIwT3BlbkNvbm5lY3Qu

./configure --prefix= --enable-oidc-auth

make && make install

JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUJFJUQxJTg3JUQwJUI4JUQwJUI5JTIwJUQwJUJBJUQwJUIwJUQxJTgyJUQwJUIwJUQwJUJCJUQwJUJFJUQwJUIzJTIwJUQwJUI0JUQwJUJCJUQxJThGJTIwb2NzZXJ2JTIwJUQwJUI4JTIwJUQwJUJBJUQwJUJFJUQwJUJGJUQwJUI4JUQxJTgwJUQxJTgzJUQwJUI1JUQwJUJDJTIwJUQwJUJGJUQxJTgwJUQwJUI4JUQwJUJDJUQwJUI1JUQxJTgwJUQxJThCJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJUQwJUJFJUQwJUIyJTIwJUQwJUJBJUQwJUJFJUQwJUJEJUQxJTg0JUQwJUI4JUQwJUIzJUQxJTgzJUQxJTgwJUQwJUIwJUQxJTg2JUQwJUI4JUQwJUI4JUMyJUEwJUQwJUIyJTIwJUQwJUJEJUQwJUI1JUQwJUIzJUQwJUJFLg==

bWtkaXIlMjAtcCUyMCUyRmV0YyUyRm9jc2VydiUyRg==

cp doc/sample.config /etc/ocserv/ocserv.conf
cp doc/sample.passwd /etc/ocserv/
Y3AlMjBkb2MlMkZzYW1wbGUub3RwJTIwJTJGZXRjJTJGb2NzZXJ2JTJG
cp doc/profile.xml /etc/ocserv/

Создаем пользователя ocserv от которого будет работать служба.

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
sed -i 's/run-as-group = daemon/run-as-group = ocserv/g' /etc/ocserv/ocserv.conf

c2VkJTIwLWklMjAncyUyM3NlcnZlci1jZXJ0JTIwJTNEJTIwJTVDLiU1Qy4lMkZ0ZXN0cyUyRmNlcnRzJTJGc2VydmVyLWNlcnQlNUMucGVtJTIzc2VydmVyLWNlcnQlMjAlM0QlMjAlMkZldGMlMkZzc2wlMkZjZXJ0cyUyRnNzbC1jZXJ0LXNuYWtlb2lsLnBlbSUyMyclMjAlMkZldGMlMkZvY3NlcnYlMkZvY3NlcnYuY29uZg==
sed -i 's#server-key = \.\./tests/certs/server-key\.pem#server-key = /etc/ssl/private/ssl-cert-snakeoil.key#' /etc/ocserv/ocserv.conf
c2VkJUMyJUEwLWklQzIlQTAncyUyM2NhLWNlcnQlMjAlM0QlQzIlQTAlNUMuJTVDLiUyRnRlc3RzJTJGY2VydHMlMkZjYSU1Qy5wZW0lMjNjYS1jZXJ0JTIwJTNEJTIwJTJGZXRjJTJGc3NsJTJGY2VydHMlMkZzc2wtY2VydC1zbmFrZW9pbC5wZW0lMjMnJUMyJUEwJTJGZXRjJTJGb2NzZXJ2JTJGb2NzZXJ2LmNvbmY=

c2VkJUMyJUEwLWklQzIlQTAnNzQ3JTJDJTI0cyUyRiU1RSUyRiUyMyVDMiVBMCUyRiclQzIlQTAlMkZldGMlMkZvY3NlcnYlMkZvY3NlcnYuY29uZg==

JUQwJTk0JUQwJUJFJUQwJUIxJUQwJUIwJUQwJUIyJUQwJUI4JUQwJUJDJTIwJUQwJUJDJUQwJUJFJUQwJUI0JUQxJTgzJUQwJUJCJUQxJThDJTIwJUQwJUIwJUQxJTgzJUQxJTgyJUQwJUI1JUQwJUJEJUQxJTgyJUQwJUI4JUQxJTg0JUQwJUI4JUQwJUJBJUQwJUIwJUQxJTg2JUQwJUI4JUQwJUI4JTIwKFBBTSklMjAlRDAlQjQlRDAlQkIlRDElOEYlMjBvY3NlcnYu

Y2F0JTIwJTNDJTNDJTIwRU9GJTIwJTNFJTIwJTJGZXRjJTJGcGFtLmQlMkZvY3NlcnY=
#
# /etc/pam.d/ocserv - specify the PAM behaviour of ocserv
#

# Standard Un*x authentication.
@include common-auth

# Disallow non-root logins when /etc/nologin exists.
account       required     pam_nologin.so

# Uncomment and edit /etc/security/access.conf if you need to set complex
JTIzJTIwYWNjZXNzJTIwbGltaXRzLg==
JTIzJTIwYWNjb3VudCUyMCUyMHJlcXVpcmVkJTIwJTIwJTIwJTIwJTIwcGFtX2FjY2Vzcy5zbw==

# Standard Un*x authorization.
JTQwaW5jbHVkZSUyMGNvbW1vbi1hY2NvdW50

# SELinux needs to be the first session rule. This ensures that any
# lingering context has been cleared. Without out this it is possible
# that a module could execute code in the wrong domain.
c2Vzc2lvbiUyMCUyMCUyMCUyMCU1QnN1Y2Nlc3MlM0RvayUyMGlnbm9yZSUzRGlnbm9yZSUyMG1vZHVsZV91bmtub3duJTNEaWdub3JlJTIwZGVmYXVsdCUzRGJhZCU1RCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhbV9zZWxpbnV4LnNvJTIwY2xvc2U=

JTIzJTIwU3RhbmRhcmQlMjBVbip4JTIwc2Vzc2lvbiUyMHNldHVwJTIwYW5kJTIwdGVhcmRvd24u
@include common-session

JTIzJTIwU2V0JTIwdXAlMjB1c2VyJTIwbGltaXRzJTIwZnJvbSUyMCUyRmV0YyUyRnNlY3VyaXR5JTJGbGltaXRzLmNvbmYu
c2Vzc2lvbiUyMCUyMCUyMCUyMHJlcXVpcmVkJTIwJTIwJTIwJTIwJTIwcGFtX2xpbWl0cy5zbw==

JTIzJTIwU0VMaW51eCUyMG5lZWRzJTIwdG8lMjBpbnRlcnZlbmUlMjBhdCUyMGxvZ2luJTIwdGltZSUyMHRvJTIwZW5zdXJlJTIwdGhhdCUyMHRoZSUyMHByb2Nlc3MlMjBzdGFydHM=
JTIzJTIwaW4lMjB0aGUlMjBwcm9wZXIlMjBkZWZhdWx0JTIwc2VjdXJpdHklMjBjb250ZXh0LiUyMCUyME9ubHklMjBzZXNzaW9ucyUyMHdoaWNoJTIwYXJlJTIwaW50ZW5kZWQ=
JTIzJTIwdG8lMjBydW4lMjBpbiUyMHRoZSUyMHVzZXIncyUyMGNvbnRleHQlMjBzaG91bGQlMjBiZSUyMHJ1biUyMGFmdGVyJTIwdGhpcy4=
c2Vzc2lvbiUyMCUyMCUyMCUyMCU1QnN1Y2Nlc3MlM0RvayUyMGlnbm9yZSUzRGlnbm9yZSUyMG1vZHVsZV91bmtub3duJTNEaWdub3JlJTIwZGVmYXVsdCUzRGJhZCU1RCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhbV9zZWxpbnV4LnNvJTIwb3Blbg==

JTQwaW5jbHVkZSUyMGNvbW1vbi1wYXNzd29yZA==
RU9G

JUQwJTlBJUQwJUJFJUQwJUJGJUQwJUI4JUQxJTgwJUQxJTgzJUQwJUI1JUQwJUJDJTIwJUQxJTg0JUQwJUIwJUQwJUI5JUQwJUJCJTIwJUQxJTgxJUQwJUI1JUQxJTgwJUQwJUIyJUQwJUI4JUQxJTgxJUQwJUIwJTIwb2NzZXJ2LnNlcnZpY2UlMjAlRDAlQjIlMjAlRDElODElRDAlQjglRDElODElRDElODIlRDAlQjUlRDAlQkMlRDAlQkQlRDElODMlRDElOEUlMjAlRDAlQjElRDAlQjglRDAlQjElRDAlQkIlRDAlQjglRDAlQkUlRDElODIlRDAlQjUlRDAlQkElRDElODMlMjAlRDAlQjglMjAlRDAlQjQlRDAlQkUlRDAlQjElRDAlQjAlRDAlQjIlRDAlQjglRDAlQkMlMjAlRDElODElRDAlQjUlRDElODAlRDAlQjIlRDAlQjglRDElODElMjAlRDAlQjIlMjAlRDAlQjAlRDAlQjIlRDElODIlRDAlQkUlRDAlQjclRDAlQjAlRDAlQjMlRDElODAlRDElODMlRDAlQjclRDAlQkElRDElODMu

Y3AlMjBkb2MlMkZzeXN0ZW1kJTJGc3RhbmRhbG9uZSUyRm9jc2Vydi5zZXJ2aWNlJTIwJTJGbGliJTJGc3lzdGVtZCUyRnN5c3RlbSUyRg==

c3lzdGVtY3RsJUMyJUEwZGFlbW9uLXJlbG9hZA==
c3lzdGVtY3RsJTIwZW5hYmxlJTIwb2NzZXJ2LnNlcnZpY2U=

Создадим init скрипт для запуска ocserv.

cat << EOF > /etc/init.d/ocserv
JTIzISUyMCUyRmJpbiUyRnNo
### BEGIN INIT INFO
# Provides:             ocserv
JTIzJTIwUmVxdWlyZWQtU3RhcnQlM0ElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjRyZW1vdGVfZnMlMjAlMjRzeXNsb2clMjBkYnVz
JTIzJTIwUmVxdWlyZWQtU3RvcCUzQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyNHJlbW90ZV9mcyUyMCUyNHN5c2xvZyUyMGRidXM=
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    OpenConnect SSL VPN server
JTIzJTIwRGVzY3JpcHRpb24lM0ElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzZWN1cmUlMkMlMjBzbWFsbCUyQyUyMGZhc3QlMjBhbmQlMjBjb25maWd1cmFibGUlMjBPcGVuQ29ubmVjdCUyMFNTTCUyMFZQTiUyMHNlcnZlcg==
### END INIT INFO
set -e

NAME=ocserv
REVTQyUzRCUyMk9wZW5Db25uZWN0JTIwU1NMJTIwVlBOJTIwc2VydmVyJTIy

REFFTU9OJTNEJTJGdXNyJTJGc2JpbiUyRm9jc2Vydg==
REFFTU9OX0NPTkZJRyUzRCUyRmV0YyUyRiUyNCU3Qk5BTUUlN0QlMkYlMjQlN0JOQU1FJTdELmNvbmY=
REFFTU9OX1BJREZJTEUlM0QlMkZydW4lMkYlMjQlN0JOQU1FJTdELnBpZA==
REFFTU9OX0FSR1MlM0QlMjItLXBpZC1maWxlJTIwJTI0REFFTU9OX1BJREZJTEUlMjAtLWNvbmZpZyUyMCUyNERBRU1PTl9DT05GSUclMjI=

test -x $DAEMON || exit 0

umask 022

LiUyMCUyRmxpYiUyRmxzYiUyRmluaXQtZnVuY3Rpb25z

export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"

ZGFlbW9uX3N0YXJ0KCk=
{
JTIwJTIwJTIwJTIwaWYlMjAlNUIlMjAhJTIwLXMlMjAlMjIlMjREQUVNT05fQ09ORklHJTIyJTIwJTVEJTNCJTIwdGhlbg==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX2ZhaWx1cmVfbXNnJTIwJTIycGxlYXNlJTIwY3JlYXRlJTIwJTI0JTdCREFFTU9OX0NPTkZJRyU3RCUyQyUyMG5vdCUyMHN0YXJ0aW5nLi4uJTIy
        log_end_msg 1
        exit 0
JTIwJTIwJTIwJTIwZmk=
JTIwJTIwJTIwJTIwbG9nX2RhZW1vbl9tc2clMjAlMjJTdGFydGluZyUyMCUyNERFU0MlMjIlMjAlMjIlMjROQU1FJTIyJTIwJTdDJTdDJTIwdHJ1ZQ==
JTIwJTIwJTIwJTIwaWYlMjBzdGFydC1zdG9wLWRhZW1vbiUyMC0tc3RhcnQlMjAtLXF1aWV0JTIwLS1va25vZG8lMjAtLXBpZGZpbGUlMjAlMjREQUVNT05fUElERklMRSUyMC0tZXhlYyUyMCUyNERBRU1PTiUyMC0tJTIwJTI0REFFTU9OX0FSR1MlMjAlM0IlMjB0aGVu
        log_end_msg 0 || true
JTIwJTIwJTIwJTIwZWxzZQ==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX2VuZF9tc2clMjAxJTIwJTdDJTdDJTIwdHJ1ZQ==
    fi
}

case "$1" in
  start)
JTIwJTIwJTIwJTIwZGFlbW9uX3N0YXJ0
    ;;
  stop)
JTIwJTIwJTIwJTIwbG9nX2RhZW1vbl9tc2clMjAlMjJTdG9wcGluZyUyMCUyNERFU0MlMjIlMjAlMjIlMjROQU1FJTIyJTIwJTdDJTdDJTIwdHJ1ZQ==
JTIwJTIwJTIwJTIwaWYlMjBzdGFydC1zdG9wLWRhZW1vbiUyMC0tc3RvcCUyMC0tcXVpZXQlMjAtLW9rbm9kbyUyMC0tcGlkZmlsZSUyMCUyNERBRU1PTl9QSURGSUxFJTNCJTIwdGhlbg==
            log_end_msg 0 || true
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZWxzZQ==
            log_end_msg 1 || true
        fi
        ;;

JTIwJTIwcmVsb2FkJTdDZm9yY2UtcmVsb2FkKQ==
        log_daemon_msg "Reloading $DESC" "$NAME" || true
        if start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $DAEMON_PIDFILE --exec $DAEMON; then
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX2VuZF9tc2clMjAwJTIwJTdDJTdDJTIwdHJ1ZQ==
        else
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX2VuZF9tc2clMjAxJTIwJTdDJTdDJTIwdHJ1ZQ==
        fi
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNCJTNC

JTIwJTIwcmVzdGFydCk=
        log_daemon_msg "Restarting $DESC" "$NAME" || true
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3RhcnQtc3RvcC1kYWVtb24lMjAtLXN0b3AlMjAtLXF1aWV0JTIwLS1va25vZG8lMjAtLXJldHJ5JTIwMzAlMjAtLXBpZGZpbGUlMjAlMjREQUVNT05fUElERklMRQ==
        daemon_start
        ;;

  try-restart)
        log_daemon_msg "Restarting $DESC" "$NAME" || true
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwUkVUJTNEMA==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3RhcnQtc3RvcC1kYWVtb24lMjAtLXN0b3AlMjAtLXF1aWV0JTIwLS1yZXRyeSUyMDMwJTIwLS1waWRmaWxlJTIwJTI0REFFTU9OX1BJREZJTEUlMjAlN0MlN0MlMjBSRVQlM0QlMjIlMjQlM0YlMjI=
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY2FzZSUyMCUyNFJFVCUyMGlu
            0)
                # old daemon stopped
                daemon_start
                ;;
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMSk=
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwZGFlbW9uJTIwbm90JTIwcnVubmluZw==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX3Byb2dyZXNzX21zZyUyMCUyMihub3QlMjBydW5uaW5nKSUyMiUyMCU3QyU3QyUyMHRydWU=
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX2VuZF9tc2clMjAwJTIwJTdDJTdDJTIwdHJ1ZQ==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNCJTNC
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKik=
                # failed to stop
                log_progress_msg "(failed to stop)" || true
                log_end_msg 1 || true
                ;;
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZXNhYw==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTNCJTNC

  status)
        status_of_proc -p $DAEMON_PIDFILE $DAEMON $NAME && exit 0 || exit $?
        ;;

  *)
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9nX2FjdGlvbl9tc2clMjAlMjJVc2FnZSUzQSUyMCUyRmV0YyUyRmluaXQuZCUyRiUyNE5BTUUlMjAlN0JzdGFydCU3Q3N0b3AlN0NyZWxvYWQlN0Nmb3JjZS1yZWxvYWQlN0NyZXN0YXJ0JTdDdHJ5LXJlc3RhcnQlN0NzdGF0dXMlN0QlMjIlMjAlN0MlN0MlMjB0cnVl
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZXhpdCUyMDE=
ZXNhYw==

ZXhpdCUyMDA=
EOF

JUQwJTk0JUQwJUI1JUQwJUJCJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUJBJUQxJTgwJUQwJUI4JUQwJUJGJUQxJTgyJTIwJUQwJUI4JUQxJTgxJUQwJUJGJUQwJUJFJUQwJUJCJUQwJUJEJUQxJThGJUQwJUI1JUQwJUJDJUQxJThCJUQwJUJDJTIwJUQwJUI4JTIwJUQwJUI3JUQwJUIwJUQwJUJGJUQxJTgzJUQxJTgxJUQwJUJBJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUI1JUQxJTgwJUQwJUIyJUQwJUI4JUQxJTgxJTIwb2NzZXJ2Lg==

Y2htb2QlMjAlMkJ4JTIwJTJGZXRjJTJGaW5pdC5kJTJGb2NzZXJ2

/etc/init.d/ocserv start
JTJGZXRjJTJGaW5pdC5kJTJGb2NzZXJ2JTIwc3RhdHVz

JUQwJTkyJUQxJThCJUQwJUIyJUQwJUJFJUQwJUI0JTIwJUQxJTgwJUQwJUIwJUQwJUIxJUQwJUJFJUQxJTgyJUQwJUIwJUQxJThFJUQxJTg5JUQwJUI1JUQwJUIzJUQwJUJFJTIwJUQxJTgxJUQwJUI1JUQxJTgwJUQwJUIyJUQwJUI4JUQxJTgxJUQwJUIwJUMyJUEwb2NzZXJ2Lg==

U3RhcnRpbmclMjBvY3NlcnYlMjAodmlhJTIwc3lzdGVtY3RsKSUzQSUyMG9jc2Vydi5zZXJ2aWNlLg==
ocserv.service - OpenConnect SSL VPN server
     Loaded: loaded (/lib/systemd/system/ocserv.service; enabled; vendor preset: enabled)
JTIwJTIwJTIwJTIwJTIwQWN0aXZlJTNBJTIwYWN0aXZlJTIwKHJ1bm5pbmcpJTIwc2luY2UlMjBGcmklMjAyMDIzLTEwLTEzJTIwMDklM0E0OSUzQTA0JTIwTVNLJTNCJTIwMjhtcyUyMGFnbw==
JTIwJTIwJTIwJTIwJTIwJTIwJTIwRG9jcyUzQSUyMG1hbiUzQW9jc2Vydig4KQ==
   Main PID: 24725 (ocserv-main)
      Tasks: 2 (limit: 2280)
     Memory: 2.4M
        CPU: 10ms
     CGroup: /system.slice/ocserv.service
             ├─24725 ocserv-main
JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJUUyJTk0JTk0JUUyJTk0JTgwMjQ3MjklMjBvY3NlcnYtc20=

окт 13 09:49:04 deb10 ocserv[24725]: ocserv[24725]: main: initializing control unix socket: /var/run/occtl.socket
окт 13 09:49:04 deb10 ocserv[24725]: main: initializing control unix socket: /var/run/occtl.socket
JUQwJUJFJUQwJUJBJUQxJTgyJTIwMTMlMjAwOSUzQTQ5JTNBMDQlMjBkZWIxMCUyMG9jc2VydiU1QjI0NzI1JTVEJTNBJTIwb2NzZXJ2JTVCMjQ3MjUlNUQlM0ElMjBtYWluJTNBJTIwaW5pdGlhbGl6ZWQlMjBvY3NlcnYlMjAxLjIuMg==
JUQwJUJFJUQwJUJBJUQxJTgyJTIwMTMlMjAwOSUzQTQ5JTNBMDQlMjBkZWIxMCUyMG9jc2VydiU1QjI0NzI1JTVEJTNBJTIwbWFpbiUzQSUyMGluaXRpYWxpemVkJTIwb2NzZXJ2JTIwMS4yLjI=
JUQwJUJFJUQwJUJBJUQxJTgyJTIwMTMlMjAwOSUzQTQ5JTNBMDQlMjBkZWIxMCUyMG9jc2VydiU1QjI0NzI5JTVEJTNBJTIwb2NzZXJ2JTVCMjQ3MjklNUQlM0ElMjBzZWMtbW9kJTNBJTIwcmVhZGluZyUyMHN1cHBsZW1lbnRhbCUyMGNvbmZpZyUyMGZyb20lMjBmaWxlcw==
JUQwJUJFJUQwJUJBJUQxJTgyJTIwMTMlMjAwOSUzQTQ5JTNBMDQlMjBkZWIxMCUyMG9jc2VydiU1QjI0NzI5JTVEJTNBJTIwc2VjLW1vZCUzQSUyMHJlYWRpbmclMjBzdXBwbGVtZW50YWwlMjBjb25maWclMjBmcm9tJTIwZmlsZXM=
окт 13 09:49:04 deb10 ocserv[24729]: ocserv[24729]: sec-mod: loaded 1 keys
JUQwJUJFJUQwJUJBJUQxJTgyJTIwMTMlMjAwOSUzQTQ5JTNBMDQlMjBkZWIxMCUyMG9jc2VydiU1QjI0NzI5JTVEJTNBJTIwc2VjLW1vZCUzQSUyMGxvYWRlZCUyMDElMjBrZXlz
окт 13 09:49:04 deb10 ocserv[24729]: ocserv[24729]: sec-mod: sec-mod initialized (socket: /var/run/ocserv-socket.75fb90ca.0)
JUQwJUJFJUQwJUJBJUQxJTgyJTIwMTMlMjAwOSUzQTQ5JTNBMDQlMjBkZWIxMCUyMG9jc2VydiU1QjI0NzI5JTVEJTNBJTIwc2VjLW1vZCUzQSUyMHNlYy1tb2QlMjBpbml0aWFsaXplZCUyMChzb2NrZXQlM0ElMjAlMkZ2YXIlMkZydW4lMkZvY3NlcnYtc29ja2V0Ljc1ZmI5MGNhLjAp

Выведем информацию об установленной версии ocserv.

b2NzZXJ2JTIwLXY=

ocserv 1.2.2

Q29tcGlsZWQlMjB3aXRoJTNBJTIwc2VjY29tcCUyQyUyMHRjcC13cmFwcGVycyUyQyUyMG9hdGglMkMlMjByYWRpdXMlMkMlMjBnc3NhcGklMkMlMjBQQU0lMkMlMjBQS0NTJTIzMTElMkMlMjBBbnlDb25uZWN0JTJDJTIwb2lkY19hdXRo
R251VExTJTIwdmVyc2lvbiUzQSUyMDMuNy4x

Логи сервиса ocserv пишутся в /var/log/syslog, для удобного просмотра их в tail режиме воспользуемся командой.

journalctl -f -u ocserv

JUQwJTlDJUQwJUJFJUQwJUI2JUQwJUJEJUQwJUJFJTIwJUQwJUJGJUQxJTgwJUQwJUJFJUQwJUIyJUQwJUI1JUQxJTgxJUQxJTgyJUQwJUI4JTIwJUQxJTgyJUQwJUI1JUQxJTgxJUQxJTgyJUQwJUJFJUQwJUIyJUQwJUJFJUQwJUI1JTIwJUQwJUJGJUQwJUJFJUQwJUI0JUQwJUJBJUQwJUJCJUQxJThFJUQxJTg3JUQwJUI1JUQwJUJEJUQwJUI4JUQwJUI1JTIwJUQwJUJBJTIwJUQwJUJGJUQwJUJFJUQwJUI0JUQwJUJEJUQxJThGJUQxJTgyJUQwJUJFJUQwJUJDJUQxJTgzJTIwVlBOLSVEMSU4MSVEMCVCNSVEMSU4MCVEMCVCMiVEMCVCNSVEMSU4MCVEMSU4MyUyQyUyMCVEMCVCQSUyMCVEMCVCRiVEMSU4MCVEMCVCOCVEMCVCQyVEMCVCNSVEMSU4MCVEMSU4MyUyMCVEMSU4NyVEMCVCNSVEMSU4MCVEMCVCNSVEMCVCNyUyMENpc2NvJTIwQW55Q29ubmVjdCUyMChPcGVuQ29ubmVjdCUyMCVEMCVCRiVEMSU4MCVEMCVCNSVEMCVCQSVEMSU4MCVEMCVCMCVEMSU4MSVEMCVCRCVEMCVCRSUyMCVEMSU4MSUyMCVEMCVCRCVEMCVCOCVEMCVCQyUyMCVEMSU4MCVEMCVCMCVEMCVCMSVEMCVCRSVEMSU4MiVEMCVCMCVEMCVCNSVEMSU4MikuJTIwJUQwJTkyJTIwJUQwJUI0JUQwJUI1JUQxJTg0JUQwJUJFJUQwJUJCJUQxJTgyJUQwJUJEJUQwJUJFJUQwJUI5JTIwJUQwJUJBJUQwJUJFJUQwJUJEJUQxJTg0JUQwJUI4JUQwJUIzJUQxJTgzJUQxJTgwJUQwJUIwJUQxJTg2JUQwJUI4JUQwJUI4JTIwJUQwJUIwJUQwJUIyJUQxJTgyJUQwJUJFJUQxJTgwJUQwJUI4JUQwJUI3JUQwJUIwJUQxJTg2JUQwJUI4JUQxJThGJTIwJUQwJUJEJUQwJUIwJTIwVlBOLSVEMSU4MSVEMCVCNSVEMSU4MCVEMCVCMiVEMCVCNSVEMSU4MCVEMCVCNSUyMCVEMSU4NyVEMCVCNSVEMSU4MCVEMCVCNSVEMCVCNyUyMCVEMCVCQiVEMCVCRSVEMCVCQSVEMCVCMCVEMCVCQiVEMSU4QyVEMCVCRCVEMSU4QiVEMCVCNSUyMCVEMSU4MyVEMSU4NyVEMCVCNSVEMSU4MiVEMCVCRCVEMSU4QiVEMCVCNSUyMCVEMCVCNyVEMCVCMCVEMCVCRiVEMCVCOCVEMSU4MSVEMCVCOC4lMjAlRDAlOTIlMjAlRDElODElRDAlQkIlRDElODMlRDElODclRDAlQjAlRDAlQjUlMjAlRDAlQjUlRDElODElRDAlQkIlRDAlQjglMjAlRDAlQjIlRDElODElRDAlQjUlMjAlRDElODElRDAlQjQlRDAlQjUlRDAlQkIlRDAlQjAlRDAlQkIlRDAlQjglMjAlRDAlQkYlRDElODAlRDAlQjAlRDAlQjIlRDAlQjglRDAlQkIlRDElOEMlRDAlQkQlRDAlQkUlMkMlMjAlRDElODIlRDAlQkUlMjAlRDAlQjAlRDAlQjIlRDElODIlRDAlQkUlRDElODAlRDAlQjglRDAlQjclRDAlQjAlRDElODYlRDAlQjglRDElOEYlMjAlRDAlQjElRDElODMlRDAlQjQlRDAlQjUlRDElODIlMjAlRDElODMlRDElODElRDAlQkYlRDAlQjUlRDElODglRDAlQkQlRDAlQkUlRDAlQjku

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

Ответ на комментарий ЖакондаОтмена ответа
26 комментариев
  • Привет.

    А ни кто не пытался настроить межсетевое взаимодействие?
    Например:
    Физическая сеть клиента №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, но при это перестаёт резолвиться совсем всё

    • Это ответ на комментарий Roman

      если route нет то весь траффик перенаправляется. или route = default и просто добавь no route = внутреннии сети

      ***вы совсем уже с такой капчей***

      • Это ответ на комментарий кекс

        Без нее, просто неимоверное количество спам комментариаев шарашит..

  • Добрый день, у меня на Debian ругается на отсутствие ocserv в /usr/sbin. Он при сборке туда сам положиться должен или как? Версия 1.2.4.

    • Это ответ на комментарий Ivan

      Добрый день,
      Вы при конфигурировании так указывали — ./configure --prefix= --enable-oidc-auth ?
      Он туда должен положится при установке а не при сборке/компилияции.

  • А вы весь трафик через OpenConnect заворачиваете ? или частично ?

  • но вот засада с в openconnect именно с instagramm, всё остальное работае. как поправить так и не понял.

  • Добрый день! поднял openconnect для жены, что бы она могла в инстогрмм лазать, но вот незадача, почмеу-то вылезает HTTP ERROR 429 при попытки войти в instagramm.com как это можно решить?

    • Это ответ на комментарий Dmitry

      Смотрите какой трафик перенаправляется в 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»

    • Это ответ на комментарий Роман

      Да, верно, опечатался, тире забыл. Исправил. Спасибо за наблюдение.