я использую pivpn чтобы настроить VPN между моим компьютером и экземпляром AWS. Это автоматически сгенерированный файл конфигурации для сервера (я изменил только значения keepalive
).
dev tun
proto udp
port 1194
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server_VzlgR4iTajic3eep.crt
key /etc/openvpn/easy-rsa/pki/private/server_VzlgR4iTajic3eep.key
dh none
topology subnet
server 10.8.0.0 255.255.255.0
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "block-outside-dns"
push "redirect-gateway def1"
client-to-client
keepalive 10 60
remote-cert-tls client
tls-version-min 1.2
tls-crypt /etc/openvpn/easy-rsa/pki/ta.key
cipher AES-256-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
crl-verify /etc/openvpn/crl.pem
status /var/log/openvpn-status.log 20
status-version 3
syslog
verb 3
У меня две проблемы.
keepalive
требуется много времени для повторного подключенияНасколько я понимаю keepalive 10 60
вариант вызывает ping-restart
что посылает SIGUSR1
к процессу, чтобы повторно подключиться к серверу. Если я запускаю openvpn на своем клиенте и выключаю и включаю сетевой интерфейс, для запуска повторного подключения потребуется до 3 минут, в то время как я ожидал, что это произойдет через 60 секунд.
Wed May 29 01:26:50 2019 Initialization Sequence Completed
Wed May 29 01:29:54 2019 [server_VzlgR4iTajic3eep] Inactivity timeout (--ping-restart), restarting
Если я инициирую переподключение с SIGUSR1
или если я подожду 3 минуты, процесс openvpn остановится на
Wed May 29 01:06:56 2019 Initialization Sequence Completed
Wed May 29 01:07:58 2019 [server_VzlgR4iTajic3eep] Inactivity timeout (--ping-restart), restarting
Wed May 29 01:07:58 2019 SIGUSR1[soft,ping-restart] received, process restarting
Wed May 29 01:07:58 2019 Restart pause, 5 second(s)
Wed May 29 01:08:03 2019 TCP/UDP: Preserving recently used remote address: [AF_INET]52.29.18.70:1194
Wed May 29 01:08:03 2019 Socket Buffers: R=[212992->212992] S=[212992->212992]
Wed May 29 01:08:03 2019 UDP link local: (not bound)
Wed May 29 01:08:03 2019 UDP link remote: [AF_INET]xx.xx.xx.xx:1194
Я предполагаю, что вариант persist-tun
не работает, когда сетевой интерфейс отключается (возможно, зависимость между tun
и wlan0
). Я пытался отключить persist-tun
в конфигурации клиента, и он повторно подключается, как ожидалось. Даже если это кажется решением, я бы хотел запустить свой openvpn
процесс как пользователь nobody
, но этот параметр не позволяет создать новый tun
интерфейс.
Wed May 29 01:34:31 2019 ERROR: Cannot ioctl TUNSETIFF tun: Operation not permitted (errno=1)
Wed May 29 01:34:31 2019 Exiting due to fatal error
В конце я создал собственный сценарий для проверки связи с сервером VPN и запуска systemctl restart openvpn@pivpn
если пинг не работает. Мне кажется, что это единственный разумный подход, если вы хотите запустить openvpn как nobody
.
TL; DR: есть ли openvpn способ переподключиться, не полагаясь на собственный сценарий? Я бы хотел положиться только на keepalive
но похоже, что это не работает должным образом. Кроме того, я думаю, что нет возможности запустить openvpn как nobody
и у вас есть разрешение на создание туннельного интерфейса.