Мне удалось настроить openvpn, но теперь я хочу интегрировать метод аутентификации пользователя / прохода, поэтому, хотя я не добавил auth-nocache
в конфигурации сервера всякий раз, когда я пытаюсь подключиться, он возвращается со следующим сообщением на стороне клиента:
ERROR: could not read Auth username from stdin
Мой файл server.conf содержит базовые вещи, все работает, пока я не попытаюсь реализовать это для аутентификации.
mode server
dev tun
proto tcp
port 1194
keepalive 10 120
plugin /usr/lib/openvpn/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name
auth-user-pass-verify /etc/openvpn/auth.pl via-env
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
user nobody
group nogroup
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
#persist-local-ip
status openvpn-status.log
verb 3
client-to-client
push "redirect-gateway def1"
push "dhcp-option DNS 10.8.0.1"
log-append /var/log/openvpn
comp-lzo
Я искал решение по всей сети, и все ответы, похоже, связаны с параметром auth-nocache, который я не установил.
Директива auth-user-pass-verify /etc/openvpn/auth.pl via-env
указывает на сценарий, который выполняется для аутентификации. Ложная аутентификация должна приводить к выходу 1, а истинная - к выходу 0. Для тестирования этот скрипт auth.pl возвращает выход 0 независимо от того, что вводится, но кажется, что файл не выполняется до возникновения ошибки.
auth.pl содержимое файла:
#!/usr/bin/perl
my $user = $ENV{username};
my $passwd = $ENV{password};
printf("$user : $passwd\n");
exit 0;
Любые идеи?
Вы пробовали предоставить script-security 3
возможность разрешить openvpn запускать внешние программы?
Хотя лучшим решением для запроса пароля, вероятно, было бы настроить OpenVPN для прослушивания порта управления и удержания. Вы можете написать сценарий / интерфейс, который будет собирать учетные данные от пользователя, а затем вы можете установить соединение с сокетом и предоставить учетные данные и освободить удержание.