Auteur Topic: De Dead Peer Detection staat op Synology OpenVPN werkt niet correct.  (gelezen 301 keer)

Offline UnixExpertWannaBe

  • Bedankjes
  • -Gegeven: 0
  • -Ontvangen: 0
  • Berichten: 1
Hallo. Ik gebruik een vertaler omdat ik geen Nederlands spreek, dus wees geduldig.

Mijn probleem is dat het gebruik van de standaard keepalive richtlijn in het OpenVPN server bestand niet voldoet aan mijn behoeften, omdat ik de detectie van Synology's OpenVPN Server van afgelopen, dode VPN-verbindingen (van een bepaalde CN = Common Name) erg onstabiel vind. Volgens de logbestanden heeft de server 120 seconden nodig om een dode VPN-sessie (van een bepaalde CN) te verbreken, wat te lang is.

Ik zou de keepalive-richtlijn drastisch kunnen verlagen, maar gezien het feit dat veel van de laptops die de VPN gebruiken om verbinding te maken met de NAS deze onstabiele mobiele breedband 4G modem/router USB-sticks gebruiken, zou dit er toe leiden dat de laptops de VPN-verbinding steeds weer verbreken, dus dat is in mijn geval niet echt een optie.

Wat zijn mijn opties? Ik heb een python-script geschreven dat de klus zou moeten klaren, maar ik weet niet zeker of dit op dit moment de beste manier is. Hoe dan ook, hier is mijn python-script:





#!/usr/bin/env python3

import socket
import sys
import time
import argparse
import logging

logging.basicConfig(filename='/path/to/logfile.log', level=logging.INFO)

def send_command_to_socket(command, socket_path="/path/to/socket"):
    try:
        sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
        sock.connect(socket_path)
        sock.sendall(f"{command}\n".encode())
        response = receive_all(sock)
        sock.close()
        return response
    except socket.error as e:
        logging.error(f"Socket error: {e}")
        return None

def receive_all(sock):
    response = ""
    sock.settimeout(5)
    try:
        while True:
            data = sock.recv(8192).decode()
            if not data:
                break
            response += data
            if "END" in data or "ERROR:" in data:
                break
    except socket.timeout:
        logging.error("Socket timed out while receiving data.")
    return response

def is_client_connected(status_output, client_cn):
    lines = status_output.split('\n')
    client_list_started = False
    for line in lines:
        if line.startswith('CLIENT_LIST'):
            client_list_started = True
            parts = line.strip().split(',')
            if len(parts) > 1 and parts[1] == client_cn:
                return True
        elif client_list_started and line == 'END':
            break
    return False

def wait_for_disconnect(client_cn, socket_path, timeout=10):
    start_time = time.time()
    while time.time() - start_time < timeout:
        time.sleep(1)
        status_output = send_command_to_socket("status", socket_path=socket_path)
        if status_output is None:
            logging.error("Failed to retrieve status while waiting for disconnect.")
            return False
        if not is_client_connected(status_output, client_cn):
            return True
    return False

parser = argparse.ArgumentParser(description='Manage OpenVPN client sessions.')
parser.add_argument('client_cn', help='Client common name')
parser.add_argument('client_ip', help='Client IP address')
args = parser.parse_args()

client_cn = args.client_cn
client_ip = args.client_ip

status_output = send_command_to_socket("status")

if status_output is None:
    logging.error("Failed to retrieve status from OpenVPN management interface.")
    sys.exit(1)
elif is_client_connected(status_output, client_cn):
    logging.info(f"Existing connection found for client: {client_cn}. Killing old session.")
    send_command_to_socket(f"kill {client_cn}")
    if wait_for_disconnect(client_cn, socket_path="/path/to/socket"):
        logging.info(f"Session for {client_cn} successfully killed.")
    else:
        logging.error(f"Failed to kill session for {client_cn}.")
else:
    logging.info(f"No existing session for client: {client_cn}.")
  • Mijn Synology: DS118
  • HDD's: 11TB 7200RPM

Offline Babylonia

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 898
  • -Ontvangen: 1475
  • Berichten: 7.917
Re: De Dead Peer Detection staat op Synology OpenVPN werkt niet correct.
« Reactie #1 Gepost op: 03 oktober 2024, 01:12:21 »
Ik vind het al heel wat dat je in ieder geval probeert je reactie in het Nederlands te stellen.

Omdat dit een Nederlandstalig forum is, schrijf ik in principe ook mijn reactie „in het Nederlands“ (ik ken niet je moedertaal).
Er zijn ook internationale gebruikers communities van Synology:

        Because this is a Dutch-language forum, I will also write my response "in Dutch" in principle.
        (I don't know your native language).      There are also international user communities of Synology:

https://community.synology.com/enu/forum/1
https://www.synoforum.com/
https://www.synology.com/en-global/support/community
https://www.reddit.com/r/synology/

https://mariushosting.com/


Vertalen / translate:
Het gemakkelijkste de huidige "AI" versie „Microsoft Edge“ webbrowser te gebruiken, om terug te vertalen naar je eigen taal.
(Weet namelijk niet wat je eigen moedertaal is).

        The easiest way to use the current AI version of "Microsoft Edge" web browser, to translate back to your own language.
        (I don't know what your own native language is).


1. Mogelijke oplossing die ik vond om een kortere "reconnect" tijd in te stellen:
    (Vermijd de code om naar een andere server te gaan zoeken):
    https://forums.openvpn.net/viewtopic.php?t=30877

2. Bij mobiele connecties met mogelijke verbrekingen / overgang tussen de ene mobiele zendmast en een andere zendmast.
    Aanpassing OpenVPN configuratiebestand.     Gebruik van het commando  "float".

    Dat commando is zodanig krachtig, dat het een VPN verbinding herstelt, als je tijdens een VPN-verbindingg via "vast internet",
    overgaat naar een mobiele hotspot verbinding.  (Van WiFi met thuisnetwerk, handmatig wisselen naar WiFi SSID mobiele hotspot).
    Standaard, zonder verdere aanpassingen van code, wordt de VPN-verbinding hiermee binnen een minuut hersteld.

    Mogelijk nog te combineren met een kortere responstijd / reconnect zoals bij punt 1. omschreven.
    Overigens heb ik die laatste mogelijkheid in combinatie met punt 1. zelf niet werkend gekregen.
    (Als U tot een kortere responstijd kan komen, hoor ik dat graag).

# The "float" tells OpenVPN to accept authenticated packets from any address,
# not only the address which was specified in the --remote option.
# This is useful when you are connecting to a peer which holds a dynamic address
# such as a dial-in user or DHCP client.
# (Please refer to the manual of OpenVPN for more information.)

float


OpenVPN:
OpenVPN is eigenlijk altijd al een „zorgenkindje“, omdat implementaties voor een Synology NAS (of router),
doorgaans altijd al ver achterlopen met updates van OpenVPN zelf.
En dat is ook nog afhankelijk welke versie DSM versie je gebruikt voor een NAS  (of SRM voor een Synology router).

Met betrekking tot een „onbetrouwbare“ en „onstabiele“ VPN-connectie, denk ik dat je het in de verkeerde aanpassingen zoekt.

Het gaat niet zozeer om een verkorting van de tijd om een nieuwe VPN connectie op te zetten,
na storingen en verbreking van een onstabiele VPN verbinding.
Maar om een VPN verbinding veel stabieler te maken, zodat verbrekingen gewoonweg niet (nauwelijks) voorkomen.

Eerder heb ik eens een „marathon“ VPN-test uitgevoerd. (Echt meer dan "42 VPN connecties" tests).
Met aanbevelingen waar op te letten.
https://www.synology-forum.nl/synology-router/bug-in-laatste-versie-vpn-plus-1-4-2-0533/msg305776/#msg305776

Wel testen met VPN verbindingen van/naar (of vanuit)  een Synology router.
Maar overlapt tevens de functies ook die van een VPN server geïnstalleerd op een NAS.

M.b.t. OpenVPN

Daar zou ik nu nog meer aanvullende „correcties“ op kunnen toevoegen aan „code“
die in een OpenVPN configuratie bestand "tegenwoordig" moeten worden toegevoegd.
Om te voldoen aan de „huidige“ OpenVPN standaarden. (Bijgewerkt tot pakweg zomer 2024).

Afhankelijk waarop je nu problemen ervaart, is daar mogelijk nog specifiek advies op te geven.
Bedenk verder ook nogal wat "gedonder" als je internetverbindingen tevens ook met IPv6 zijn geconfigureerd.
De meeste  "Synology VPN verbindingen"  en opties met "VPN Server"  (op een NAS), zijn enkel nog "IPv4" gerelateerd.

Overigens ben ikzelf helemaal niet thuis in "python-scripts".   :o  :geek:
DS213j   2x 6TB WD Ultrastar     -  DSM 6.2  -  glasvezel 1 Gbps  (Odido) ZyXEL EX5601 + RT1900ac (AP) + Apple Airport Express (bridge)
DS415+  4x 4TB HGST Deskstar  -  DSM 6.2  -  glasvezel 100/100  (KPN) + 2x "SupeWifi" + RT6600ax + RT2600ac + MR2200ac  -  NVDIA Shield TV Pro
DS920+  4x 4TB WD Red Plus     -  DSM 6.2         +         DS420j   4x 4TB WD Red Plus   -  DSM 7.2.2
             Ervaring met routers van  DrayTek, Fritzbox, TP-Link  -  switches Netgear, ZyXEL  -  Access Points TP-Link, Grandstream.....


 

photoserver synology

Gestart door ErwinBoard Photo Station / Photos

Reacties: 2
Gelezen: 7338
Laatste bericht 20 juni 2006, 10:21:27
door Bob
Vragen over Synology DS-106e

Gestart door EastmasterBoard NAS hardware vragen

Reacties: 55
Gelezen: 40151
Laatste bericht 06 november 2006, 23:09:28
door Anonymous
Probleem met Synology DS-106e

Gestart door dutchmoleBoard NAS hardware vragen

Reacties: 8
Gelezen: 8552
Laatste bericht 03 september 2006, 22:37:32
door Anonymous
firmware update Synology DS-106e

Gestart door EastmasterBoard Web Station

Reacties: 10
Gelezen: 11875
Laatste bericht 06 september 2006, 12:31:33
door Anonymous
Synology DS-101j en HP PSC 1350

Gestart door AnonymousBoard Externe harddisks en Printers

Reacties: 3
Gelezen: 4780
Laatste bericht 04 augustus 2006, 00:26:05
door Anonymous