Avatar
AhnizTech Portal Full Stack Developer
🏠 Home

📂 Blogs List | All Posts

531 Visiteurs
51 Articles
#52 Dernier ID
Blog N° 52

SQL NoSQL ( column and field )

Dans MongoDB (et les bases NoSQL orientées document), les données sont stockées sous forme de documents au format JSON (plus précisément BSON, qui est une version binaire optimisée de JSON).Dans un document JSON, il n'y a pas de tableau rigide avec des colonnes comme en SQL. À la place, les données sont organisées en paires clé / valeur :La clé (key) est ce qu'on appelle un field (champ).La valeur (value) est la donnée associée (texte, nombre, tableau, sous-document, etc.).Exemple concret :JSON{
"_id": "651a2b3c1234",
"username": "hanifi", // "username" est un field (champ)
"email": "user@test.com",// "email" est un field
"ports": [3000, 3001] // "ports" est un field qui contient un tableau
}
Résumé de la correspondance des termes :Base de données relationnelle (SQL : MySQL, Postgres...)Base de données Document (NoSQL : MongoDB)TableCollectionLigne (Row / Record)Document (Objet JSON)Colonne (Column)Champ (Field)
Author: Hanifi KhelafDate: 2026-10-04 13:54:15
Blog N° 50

PM2 (npm install -g pm2).

Rappel des étapes exécutées sur ta VM RHEL 9 :

Installation globale de PM2 (npm install -g pm2).

Navigation vers /home/labhak0/Documents/dev_projets/Familly-travel.

Lancement du processus family-tracker (pm2 start index.js --name "family-tracker").

Sauvegarde du dump de processus (pm2 save).

Configuration et enregistrement du service systemd (pm2 startup + exécution de la commande sudo env PATH...).

Aide-mémoire des commandes PM2 :

Gestion des processus : pm2 status, pm2 restart family-tracker, pm2 reload family-tracker, pm2 stop family-tracker, pm2 delete family-tracker.

Monitoring & Diagnostics : pm2 monit, pm2 show family-tracker, pm2 env 0.

Logs : pm2 logs, pm2 logs --lines 100, pm2 flush.

Pratiques avancées :

Structure complète d'un fichier ecosystem.config.js (mode cluster, gestion mémoire, variables d'environnement dev/prod, chemins de logs).

Stratégies d'auto-restart (limite mémoire --max-memory-restart, redémarrage CRON).

Gestion du service systemd RHEL (systemctl status pm2-labhak0.service).
Author: Hanifi KhelafDate: 2026-09-02 15:10:46
Blog N° 49

PM2 Nodejs

[labhak0@labvmrhel01 ~]$ sudo firewall-cmd --add-port=1194/udp --permanent
[sudo] password for labhak0:
Warning: ALREADY_ENABLED: 1194:udp
success
[labhak0@labvmrhel01 ~]$ sudo firewall-cmd --reload
success
[labhak0@labvmrhel01 ~]$ sudo systemctl status tailscaled
● tailscaled.service - Tailscale node agent
Loaded: loaded (/etc/systemd/system/tailscaled.service; enabled; preset: disabled)
Active: active (running) since Wed 2026-09-02 10:41:14 CET; 2h 5min ago
Docs: https://tailscale.com/docs/
Main PID: 1341 (tailscaled)
Status: "Connected; hanifi.rssi@gmail.com; 100.124.120.18 fd7a:115c:a1e0::4d2d:7813"
Tasks: 11 (limit: 22765)
Memory: 64.0M (peak: 108.1M)
CPU: 27.553s
CGroup: /system.slice/tailscaled.service
└─1341 /usr/sbin/tailscaled --state=/var/lib/tailscale/tailscaled.state --socket=/run/tailscale/t>

Sep 02 12:40:35 labvmrhel01 tailscaled[1341]: magicsock: adding connection to derp-19 for home-keep-alive
Sep 02 12:40:35 labvmrhel01 tailscaled[1341]: magicsock: 1 active derp conns: derp-19=cr0s,wr0s
Sep 02 12:40:35 labvmrhel01 tailscaled[1341]: derphttp.Client.Connect: connecting to derp-19 (mad)
Sep 02 12:40:35 labvmrhel01 tailscaled[1341]: magicsock: endpoints changed: 129.45.70.182:45105 (stun), 129.45>
Sep 02 12:40:35 labvmrhel01 tailscaled[1341]: control: NetInfo: NetInfo{varies=true ipv6=false ipv6os=true udp>
[labhak0@labvmrhel01 ~]$ sudo tailscale up
[labhak0@labvmrhel01 ~]$ sudo firewall-cmd --add-protocol=icmp --permanent
success
[labhak0@labvmrhel01 ~]$ sudo firewall-cmd --reload
success
[labhak0@labvmrhel01 ~]$ sudo npm install -g pm2
[sudo] password for labhak0:

added 77 packages in 22s

8 packages are looking for funding
run `npm fund` for details
[labhak0@labvmrhel01 ~]$ cd /home/labhak0/Documents/dev_projets/Familly-travel
[labhak0@labvmrhel01 Familly-travel]$ pm2 start index.js --name "family-tracker"

-------------

__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
_\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
_\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
_\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
_\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
_\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
_\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
_\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
_\///______________\///______________\///__\///////////////__


Runtime Edition

PM2 is a Production Process Manager for Node.js applications
with a built-in Load Balancer.

Start and Daemonize any application:
$ pm2 start app.js

Load Balance 4 instances of api.js:
$ pm2 start api.js -i 4

Monitor in production:
$ pm2 monitor

Make pm2 auto-boot at server restart:
$ pm2 startup

To go further checkout:
http://pm2.io/


-------------

[PM2] Spawning PM2 daemon with pm2_home=/home/labhak0/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /home/labhak0/Documents/dev_projets/Familly-travel/index.js in fork_mode (1 instance)
[PM2] Done.
┌────┬───────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├────┼───────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ family-tracker │ default │ 1.0.0 │ fork │ 28271 │ 0s │ 0 │ online │ 0% │ 30.9mb │ labhak0 │ disabled │
└────┴───────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[labhak0@labvmrhel01 Familly-travel]$ pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /home/labhak0/.pm2/dump.pm2
[labhak0@labvmrhel01 Familly-travel]$ pm2 startup
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u labhak0 --hp /home/labhak0
[labhak0@labvmrhel01 Familly-travel]$ sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u labhak0 --hp /home/labhak0
[sudo] password for labhak0:

-------------

__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
_\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
_\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
_\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
_\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
_\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
_\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
_\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
_\///______________\///______________\///__\///////////////__


Runtime Edition

PM2 is a Production Process Manager for Node.js applications
with a built-in Load Balancer.

Start and Daemonize any application:
$ pm2 start app.js

Load Balance 4 instances of api.js:
$ pm2 start api.js -i 4

Monitor in production:
$ pm2 monitor

Make pm2 auto-boot at server restart:
$ pm2 startup

To go further checkout:
http://pm2.io/


-------------

[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=labhak0
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/home/labhak0/.local/bin:/home/labhak0/bin:/usr/share/Modules/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/labhak0/.pm2
PIDFile=/home/labhak0/.pm2/pm2.pid
Restart=on-failure

ExecStart=/usr/local/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

Target path
/etc/systemd/system/pm2-labhak0.service
Command list
[ 'systemctl enable pm2-labhak0' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-labhak0.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-labhak0...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-labhak0.service → /etc/systemd/system/pm2-labhak0.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd
[labhak0@labvmrhel01 Familly-travel]$ pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /home/labhak0/.pm2/dump.pm2
[labhak0@labvmrhel01 Familly-travel]$ history
1 curl ifconfig.me
2 reboot now
3 sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/rhel/9/tailscale.repo
4 sudo dnf install -y tailscale
5 curl -fsSL https://tailscale.com/install.sh | sh
6 curl -k -O https://pkgs.tailscale.com/stable/rhel/9/x86_64/tailscale-1.76.6-1.x86_64.rpm
7 tar xvf tailscale_1.102.3_amd64.tgz
8 cd tailscale_1.102.3_amd64
9 sudo cp tailscale /usr/bin/
10 sudo cp tailscaled /usr/sbin/
11 sudo cp systemd/tailscaled.service /etc/systemd/system/
12 sudo systemctl daemon-reload
13 sudo systemctl enable --now tailscaled
14 sudo systemctl status tailscaled.service
15 sudo journalctl -xeu tailscaled.service -n 20
16 sudo restorecon -v /usr/sbin/tailscaled /usr/bin/tailscale
17 sudo cp systemd/tailscaled.defaults /etc/default/tailscaled
18 sudo systemctl restart tailscaled
19 sudo tailscale up
20 sudo firewall-cmd --permanent --add-service=ssh
21 sudo firewall-cmd --permanent --add-port=9090/tcp
22 sudo firewall-cmd --permanent --zone=trusted --add-interface=tailscale0
23 sudo firewall-cmd --reload
24 su - root
25 sudo firewall-cmd --reload
26 ip a
27 sudo firewall-cmd --add-service=openvpn --permanent
28 dnf update
29 sudo dnf update
30 sudo dnf update
31 ls
32 sudo systemctl status tailscaled
33 sudo systemctl status openvpn-server@server
34 sudo firewall-cmd --zone=trusted --add-interface=tailscale0 --permanent
35 sudo firewall-cmd --add-port=1194/udp --permanent
36 sudo firewall-cmd --reload
37 sudo systemctl status tailscaled
38 sudo tailscale up
39 sudo firewall-cmd --add-protocol=icmp --permanent
40 sudo firewall-cmd --reload
41 sudo npm install -g pm2
42 cd /home/labhak0/Documents/dev_projets/Familly-travel
43 pm2 start index.js --name "family-tracker"
44 pm2 save
45 pm2 startup
46 sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u labhak0 --hp /home/labhak0
47 pm2 save
48 history
[labhak0@labvmrhel01 Familly-travel]$
Author: Hanifi KhelafDate: 2026-09-02 15:08:52
Blog N° 48

OpenVPN Connection

[Aug 31, 2026, 13:13:19] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Aug 31, 2026, 13:13:19] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Aug 31, 2026, 13:13:19] NOTE: This configuration contains options that were not used:
⏎[Aug 31, 2026, 13:13:19] Unsupported option (ignored)
⏎[Aug 31, 2026, 13:13:19] 0 [resolv-retry] [infinite]
⏎[Aug 31, 2026, 13:13:19] 1 [persist-key]
⏎[Aug 31, 2026, 13:13:19] 2 [persist-tun]
⏎[Aug 31, 2026, 13:13:19] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:13:19] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:13:19] EVENT: WAIT ⏎[Aug 31, 2026, 13:13:19] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:13:19] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:13:29] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:13:29] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:13:29] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:13:29] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:13:29] EVENT: WAIT ⏎[Aug 31, 2026, 13:13:29] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:13:29] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:13:39] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:13:39] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:13:39] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:13:39] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:13:39] EVENT: WAIT ⏎[Aug 31, 2026, 13:13:39] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:13:39] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:13:49] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:13:49] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:13:49] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:13:49] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:13:49] EVENT: WAIT ⏎[Aug 31, 2026, 13:13:49] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:13:49] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:13:59] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:13:59] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:13:59] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:13:59] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:13:59] EVENT: WAIT ⏎[Aug 31, 2026, 13:13:59] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:13:59] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:14:09] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:14:09] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:14:09] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:14:09] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:14:09] EVENT: WAIT ⏎[Aug 31, 2026, 13:14:09] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:14:09] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:14:19] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Aug 31, 2026, 13:14:19] EVENT: DISCONNECTED ⏎[Aug 31, 2026, 13:17:08] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Aug 31, 2026, 13:17:08] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Aug 31, 2026, 13:17:08] NOTE: This configuration contains options that were not used:
⏎[Aug 31, 2026, 13:17:08] Unsupported option (ignored)
⏎[Aug 31, 2026, 13:17:08] 0 [resolv-retry] [infinite]
⏎[Aug 31, 2026, 13:17:08] 1 [persist-key]
⏎[Aug 31, 2026, 13:17:08] 2 [persist-tun]
⏎[Aug 31, 2026, 13:17:08] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:17:08] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:17:08] EVENT: WAIT ⏎[Aug 31, 2026, 13:17:08] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:17:09] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:17:18] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:17:18] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:17:18] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:17:18] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:17:18] EVENT: WAIT ⏎[Aug 31, 2026, 13:17:18] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:17:19] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:17:28] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:17:28] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:17:28] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:17:28] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:17:28] EVENT: WAIT ⏎[Aug 31, 2026, 13:17:29] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:17:29] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:17:39] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:17:39] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:17:39] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:17:39] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:17:39] EVENT: WAIT ⏎[Aug 31, 2026, 13:17:39] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:17:39] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:17:49] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:17:49] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:17:49] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:17:49] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:17:49] EVENT: WAIT ⏎[Aug 31, 2026, 13:17:49] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:17:49] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:17:59] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:17:59] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:17:59] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:17:59] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:17:59] EVENT: WAIT ⏎[Aug 31, 2026, 13:17:59] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:17:59] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:18:08] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Aug 31, 2026, 13:18:08] EVENT: DISCONNECTED ⏎[Aug 31, 2026, 13:18:13] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Aug 31, 2026, 13:18:13] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Aug 31, 2026, 13:18:13] NOTE: This configuration contains options that were not used:
⏎[Aug 31, 2026, 13:18:13] Unsupported option (ignored)
⏎[Aug 31, 2026, 13:18:13] 0 [resolv-retry] [infinite]
⏎[Aug 31, 2026, 13:18:13] 1 [persist-key]
⏎[Aug 31, 2026, 13:18:13] 2 [persist-tun]
⏎[Aug 31, 2026, 13:18:13] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:18:13] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:18:13] EVENT: WAIT ⏎[Aug 31, 2026, 13:18:13] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:18:14] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:18:24] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:18:24] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:18:24] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:18:24] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:18:24] EVENT: WAIT ⏎[Aug 31, 2026, 13:18:24] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:18:24] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:18:33] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:18:33] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:18:33] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:18:33] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:18:33] EVENT: WAIT ⏎[Aug 31, 2026, 13:18:33] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:18:34] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:18:43] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:18:43] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:18:43] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:18:43] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:18:43] EVENT: WAIT ⏎[Aug 31, 2026, 13:18:43] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:18:44] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:18:53] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:18:53] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:18:53] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:18:53] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:18:53] EVENT: WAIT ⏎[Aug 31, 2026, 13:18:53] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:18:54] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:19:03] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:19:03] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:19:03] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:19:03] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:19:03] EVENT: WAIT ⏎[Aug 31, 2026, 13:19:03] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:19:04] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:19:13] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Aug 31, 2026, 13:19:13] EVENT: DISCONNECTED ⏎[Aug 31, 2026, 13:19:26] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Aug 31, 2026, 13:19:26] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Aug 31, 2026, 13:19:26] NOTE: This configuration contains options that were not used:
⏎[Aug 31, 2026, 13:19:26] Unsupported option (ignored)
⏎[Aug 31, 2026, 13:19:26] 0 [resolv-retry] [infinite]
⏎[Aug 31, 2026, 13:19:26] 1 [persist-key]
⏎[Aug 31, 2026, 13:19:26] 2 [persist-tun]
⏎[Aug 31, 2026, 13:19:26] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:19:26] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:19:26] EVENT: WAIT ⏎[Aug 31, 2026, 13:19:26] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:19:26] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:19:36] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:19:36] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:19:36] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:19:36] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:19:36] EVENT: WAIT ⏎[Aug 31, 2026, 13:19:36] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:19:37] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:19:46] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:19:46] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:19:46] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:19:46] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:19:46] EVENT: WAIT ⏎[Aug 31, 2026, 13:19:46] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:19:46] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:19:56] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:19:56] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:19:56] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:19:56] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:19:56] EVENT: WAIT ⏎[Aug 31, 2026, 13:19:56] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:19:57] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:20:06] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:20:06] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:20:06] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:20:06] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:20:06] EVENT: WAIT ⏎[Aug 31, 2026, 13:20:06] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:20:07] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:20:16] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:20:16] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:20:16] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:20:16] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:20:16] EVENT: WAIT ⏎[Aug 31, 2026, 13:20:16] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:20:17] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:20:26] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Aug 31, 2026, 13:20:26] EVENT: DISCONNECTED ⏎[Aug 31, 2026, 13:20:29] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Aug 31, 2026, 13:20:29] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Aug 31, 2026, 13:20:29] NOTE: This configuration contains options that were not used:
⏎[Aug 31, 2026, 13:20:29] Unsupported option (ignored)
⏎[Aug 31, 2026, 13:20:29] 0 [resolv-retry] [infinite]
⏎[Aug 31, 2026, 13:20:29] 1 [persist-key]
⏎[Aug 31, 2026, 13:20:29] 2 [persist-tun]
⏎[Aug 31, 2026, 13:20:29] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:20:29] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:20:29] EVENT: WAIT ⏎[Aug 31, 2026, 13:20:29] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:20:30] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:20:39] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:20:39] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:20:39] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:20:39] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:20:39] EVENT: WAIT ⏎[Aug 31, 2026, 13:20:39] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:20:40] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:20:49] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:20:49] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:20:49] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:20:49] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:20:49] EVENT: WAIT ⏎[Aug 31, 2026, 13:20:49] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:20:50] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:20:59] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:20:59] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:20:59] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:20:59] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:20:59] EVENT: WAIT ⏎[Aug 31, 2026, 13:20:59] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:21:00] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:21:09] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:21:09] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:21:09] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:21:09] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:21:09] EVENT: WAIT ⏎[Aug 31, 2026, 13:21:09] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:21:10] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:21:19] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 13:21:19] EVENT: RECONNECTING ⏎[Aug 31, 2026, 13:21:19] EVENT: RESOLVE ⏎[Aug 31, 2026, 13:21:19] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 13:21:19] EVENT: WAIT ⏎[Aug 31, 2026, 13:21:19] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 13:21:20] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 13:21:29] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Aug 31, 2026, 13:21:29] EVENT: DISCONNECTED ⏎[Aug 31, 2026, 16:40:01] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Aug 31, 2026, 16:40:01] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Aug 31, 2026, 16:40:01] NOTE: This configuration contains options that were not used:
⏎[Aug 31, 2026, 16:40:01] Unsupported option (ignored)
⏎[Aug 31, 2026, 16:40:01] 0 [resolv-retry] [infinite]
⏎[Aug 31, 2026, 16:40:01] 1 [persist-key]
⏎[Aug 31, 2026, 16:40:01] 2 [persist-tun]
⏎[Aug 31, 2026, 16:40:01] EVENT: RESOLVE ⏎[Aug 31, 2026, 16:40:01] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 16:40:01] EVENT: WAIT ⏎[Aug 31, 2026, 16:40:01] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 16:40:02] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 16:40:11] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 16:40:11] EVENT: RECONNECTING ⏎[Aug 31, 2026, 16:40:11] EVENT: RESOLVE ⏎[Aug 31, 2026, 16:40:11] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 16:40:11] EVENT: WAIT ⏎[Aug 31, 2026, 16:40:11] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 16:40:12] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 16:40:21] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 16:40:21] EVENT: RECONNECTING ⏎[Aug 31, 2026, 16:40:21] EVENT: RESOLVE ⏎[Aug 31, 2026, 16:40:21] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 16:40:21] EVENT: WAIT ⏎[Aug 31, 2026, 16:40:21] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 16:40:22] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 16:40:31] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 16:40:31] EVENT: RECONNECTING ⏎[Aug 31, 2026, 16:40:31] EVENT: RESOLVE ⏎[Aug 31, 2026, 16:40:31] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 16:40:31] EVENT: WAIT ⏎[Aug 31, 2026, 16:40:31] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 16:40:32] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 16:40:41] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 16:40:41] EVENT: RECONNECTING ⏎[Aug 31, 2026, 16:40:41] EVENT: RESOLVE ⏎[Aug 31, 2026, 16:40:41] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 16:40:41] EVENT: WAIT ⏎[Aug 31, 2026, 16:40:41] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 16:40:42] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 16:40:51] Server poll timeout, trying next remote entry...
⏎[Aug 31, 2026, 16:40:51] EVENT: RECONNECTING ⏎[Aug 31, 2026, 16:40:51] EVENT: RESOLVE ⏎[Aug 31, 2026, 16:40:51] Contacting 129.45.70.182:1194 via UDP
⏎[Aug 31, 2026, 16:40:51] EVENT: WAIT ⏎[Aug 31, 2026, 16:40:51] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Aug 31, 2026, 16:40:52] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Aug 31, 2026, 16:41:01] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Aug 31, 2026, 16:41:01] EVENT: DISCONNECTED ⏎[Sep 1, 2026, 08:41:53] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 08:41:53] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 08:41:53] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 08:41:53] Unsupported option (ignored)
⏎[Sep 1, 2026, 08:41:53] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 08:41:53] 1 [persist-key]
⏎[Sep 1, 2026, 08:41:53] 2 [persist-tun]
⏎[Sep 1, 2026, 08:41:53] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:41:53] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:41:53] EVENT: WAIT ⏎[Sep 1, 2026, 08:41:53] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:41:54] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:42:03] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:42:03] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:42:03] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:42:03] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:42:03] EVENT: WAIT ⏎[Sep 1, 2026, 08:42:03] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:42:04] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:42:13] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:42:13] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:42:13] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:42:13] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:42:13] EVENT: WAIT ⏎[Sep 1, 2026, 08:42:13] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:42:14] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:42:23] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:42:23] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:42:23] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:42:23] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:42:23] EVENT: WAIT ⏎[Sep 1, 2026, 08:42:23] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:42:24] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:42:33] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:42:33] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:42:33] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:42:33] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:42:33] EVENT: WAIT ⏎[Sep 1, 2026, 08:42:33] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:42:34] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:42:43] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:42:43] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:42:43] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:42:43] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:42:43] EVENT: WAIT ⏎[Sep 1, 2026, 08:42:43] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:42:45] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:42:53] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:42:53] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:42:53] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:42:53] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 6
⏎[Sep 1, 2026, 08:42:53] EVENT: DISCONNECTED ⏎[Sep 1, 2026, 08:54:01] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 08:54:01] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 08:54:01] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 08:54:01] Unsupported option (ignored)
⏎[Sep 1, 2026, 08:54:01] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 08:54:01] 1 [persist-key]
⏎[Sep 1, 2026, 08:54:01] 2 [persist-tun]
⏎[Sep 1, 2026, 08:54:01] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:54:01] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:54:01] EVENT: WAIT ⏎[Sep 1, 2026, 08:54:01] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:54:01] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:54:11] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:54:11] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:54:11] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:54:11] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:54:11] EVENT: WAIT ⏎[Sep 1, 2026, 08:54:11] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:54:11] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:54:21] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:54:21] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:54:21] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:54:21] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:54:21] EVENT: WAIT ⏎[Sep 1, 2026, 08:54:21] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:54:21] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:54:31] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:54:31] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:54:31] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:54:31] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:54:31] EVENT: WAIT ⏎[Sep 1, 2026, 08:54:31] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:54:31] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:54:41] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:54:41] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:54:41] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:54:41] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:54:41] EVENT: WAIT ⏎[Sep 1, 2026, 08:54:41] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:54:41] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:54:51] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 08:54:51] EVENT: RECONNECTING ⏎[Sep 1, 2026, 08:54:51] EVENT: RESOLVE ⏎[Sep 1, 2026, 08:54:51] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 08:54:51] EVENT: WAIT ⏎[Sep 1, 2026, 08:54:51] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 08:54:51] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 08:55:01] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Sep 1, 2026, 08:55:01] EVENT: DISCONNECTED ⏎[Sep 1, 2026, 13:56:48] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 13:56:48] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 13:56:48] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 13:56:48] Unsupported option (ignored)
⏎[Sep 1, 2026, 13:56:48] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 13:56:48] 1 [persist-key]
⏎[Sep 1, 2026, 13:56:48] 2 [persist-tun]
⏎[Sep 1, 2026, 13:56:48] EVENT: RESOLVE ⏎[Sep 1, 2026, 13:56:48] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 13:56:48] EVENT: WAIT ⏎[Sep 1, 2026, 13:56:48] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 13:56:49] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 13:56:58] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 13:56:58] EVENT: RECONNECTING ⏎[Sep 1, 2026, 13:56:58] EVENT: RESOLVE ⏎[Sep 1, 2026, 13:56:58] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 13:56:58] EVENT: WAIT ⏎[Sep 1, 2026, 13:56:58] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 13:56:59] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 13:57:08] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 13:57:08] EVENT: RECONNECTING ⏎[Sep 1, 2026, 13:57:08] EVENT: RESOLVE ⏎[Sep 1, 2026, 13:57:08] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 13:57:08] EVENT: WAIT ⏎[Sep 1, 2026, 13:57:08] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 13:57:09] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 13:57:18] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 13:57:18] EVENT: RECONNECTING ⏎[Sep 1, 2026, 13:57:18] EVENT: RESOLVE ⏎[Sep 1, 2026, 13:57:18] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 13:57:18] EVENT: WAIT ⏎[Sep 1, 2026, 13:57:18] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 13:57:18] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 13:57:28] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 13:57:28] EVENT: RECONNECTING ⏎[Sep 1, 2026, 13:57:28] EVENT: RESOLVE ⏎[Sep 1, 2026, 13:57:28] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 13:57:28] EVENT: WAIT ⏎[Sep 1, 2026, 13:57:28] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 13:57:28] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 13:57:38] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 13:57:38] EVENT: RECONNECTING ⏎[Sep 1, 2026, 13:57:38] EVENT: RESOLVE ⏎[Sep 1, 2026, 13:57:38] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 13:57:38] EVENT: WAIT ⏎[Sep 1, 2026, 13:57:38] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 13:57:38] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 13:57:48] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Sep 1, 2026, 13:57:48] EVENT: DISCONNECTED ⏎[Sep 1, 2026, 17:06:34] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 17:06:34] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 17:06:34] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 17:06:34] Unsupported option (ignored)
⏎[Sep 1, 2026, 17:06:34] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 17:06:34] 1 [persist-key]
⏎[Sep 1, 2026, 17:06:34] 2 [persist-tun]
⏎[Sep 1, 2026, 17:06:34] EVENT: RESOLVE ⏎[Sep 1, 2026, 17:06:34] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 17:06:34] EVENT: WAIT ⏎[Sep 1, 2026, 17:06:34] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 17:06:34] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 17:06:44] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 17:06:44] EVENT: RECONNECTING ⏎[Sep 1, 2026, 17:06:44] EVENT: RESOLVE ⏎[Sep 1, 2026, 17:06:44] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 17:06:44] EVENT: WAIT ⏎[Sep 1, 2026, 17:06:44] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 17:06:48] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 17:06:54] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 17:06:54] EVENT: RECONNECTING ⏎[Sep 1, 2026, 17:06:54] EVENT: RESOLVE ⏎[Sep 1, 2026, 17:06:54] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 17:06:54] EVENT: WAIT ⏎[Sep 1, 2026, 17:06:54] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 17:06:54] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 17:07:04] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 17:07:04] EVENT: RECONNECTING ⏎[Sep 1, 2026, 17:07:04] EVENT: RESOLVE ⏎[Sep 1, 2026, 17:07:04] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 17:07:04] EVENT: WAIT ⏎[Sep 1, 2026, 17:07:04] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 17:07:05] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 17:07:14] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 17:07:14] EVENT: RECONNECTING ⏎[Sep 1, 2026, 17:07:14] EVENT: RESOLVE ⏎[Sep 1, 2026, 17:07:14] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 17:07:14] EVENT: WAIT ⏎[Sep 1, 2026, 17:07:14] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 17:07:14] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 17:07:24] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 17:07:24] EVENT: RECONNECTING ⏎[Sep 1, 2026, 17:07:24] EVENT: RESOLVE ⏎[Sep 1, 2026, 17:07:24] Contacting 129.45.70.182:1194 via UDP
⏎[Sep 1, 2026, 17:07:24] EVENT: WAIT ⏎[Sep 1, 2026, 17:07:24] WinCommandAgent: transmitting bypass route to 129.45.70.182
{
"host" : "129.45.70.182",
"ipv6" : false
}

⏎[Sep 1, 2026, 17:07:26] Connecting to [129.45.70.182]:1194 (129.45.70.182) via UDP
⏎[Sep 1, 2026, 17:07:34] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3078
PACKETS_OUT : 57
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Sep 1, 2026, 17:07:34] EVENT: DISCONNECTED ⏎[Sep 1, 2026, 17:27:31] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 17:27:31] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 17:27:31] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 17:27:31] Unsupported option (ignored)
⏎[Sep 1, 2026, 17:27:31] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 17:27:31] 1 [persist-key]
⏎[Sep 1, 2026, 17:27:31] 2 [persist-tun]
⏎[Sep 1, 2026, 17:27:31] EVENT: RESOLVE ⏎[Sep 1, 2026, 17:27:31] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 17:27:31] EVENT: WAIT ⏎[Sep 1, 2026, 17:27:31] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 17:27:32] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 17:27:32] EVENT: CONNECTING ⏎[Sep 1, 2026, 17:27:32] Tunnel Options:V4,dev-type tun,link-mtu 1521,tun-mtu 1500,proto UDPv4,cipher AES-256-GCM,auth [null-digest],keysize 256,key-method 2,tls-client
⏎[Sep 1, 2026, 17:27:32] Creds: UsernameEmpty/PasswordEmpty
⏎[Sep 1, 2026, 17:27:32] Sending Peer Info:
IV_VER=3.11.3
IV_PLAT=win
IV_NCP=2
IV_TCPNL=1
IV_PROTO=8094
IV_MTU=1600
IV_CIPHERS=AES-128-CBC:AES-192-CBC:AES-256-CBC:AES-128-GCM:AES-192-GCM:AES-256-GCM:CHACHA20-POLY1305
IV_AUTO_SESS=1
IV_GUI_VER=OCWindows_3.9.0-5008
IV_SSO=webauth,crtext

⏎[Sep 1, 2026, 17:27:33] SSL Handshake: peer certificate: CN=server, 2048 bit RSA, cipher: TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD

⏎[Sep 1, 2026, 17:27:33] Session is ACTIVE
⏎[Sep 1, 2026, 17:27:33] EVENT: GET_CONFIG ⏎[Sep 1, 2026, 17:27:33] Sending PUSH_REQUEST to server...
⏎[Sep 1, 2026, 17:27:33] OPTIONS:
0 [route] [10.8.0.1]
1 [topology] [net30]
2 [ping] [10]
3 [ping-restart] [120]
4 [ifconfig] [10.8.0.6] [10.8.0.5]
5 [peer-id] [0]
6 [cipher] [AES-256-GCM]

⏎[Sep 1, 2026, 17:27:33] PROTOCOL OPTIONS:
key-derivation: OpenVPN PRF
control channel: tls-crypt enabled
data channel: cipher AES-256-GCM, peer-id 0

⏎[Sep 1, 2026, 17:27:33] EVENT: ASSIGN_IP ⏎[Sep 1, 2026, 17:27:33] CAPTURED OPTIONS:
Session Name: 100.124.120.18
Layer: OSI_LAYER_3
Remote Address: 100.124.120.18
Tunnel Addresses:
10.8.0.6/30 -> 10.8.0.5 [net30]
Reroute Gateway: IPv4=0 IPv6=0 flags=[ IPv4 ]
Block IPv4: no
Block IPv6: no
Block local DNS: no
Add Routes:
10.8.0.1/32
Exclude Routes:

⏎[Sep 1, 2026, 17:27:34] SetupClient: transmitting tun setup list to \\.\pipe\agent_ovpnconnect
{
"allow_local_dns_resolvers" : false,
"confirm_event" : "ac15000000000000",
"destroy_event" : "a017000000000000",
"tun" :
{
"add_routes" :
[
{
"address" : "10.8.0.1",
"gateway" : "",
"ipv6" : false,
"metric" : -1,
"net30" : false,
"prefix_length" : 32
}
],
"block_ipv6" : false,
"block_outside_dns" : false,
"dns_options" :
{
"from_dhcp_options" : false,
"servers" : {}
},
"layer" : 3,
"mtu" : 0,
"remote_address" :
{
"address" : "100.124.120.18",
"ipv6" : false
},
"reroute_gw" :
{
"flags" : 256,
"ipv4" : false,
"ipv6" : false
},
"route_metric_default" : -1,
"session_name" : "100.124.120.18",
"tunnel_address_index_ipv4" : 0,
"tunnel_address_index_ipv6" : -1,
"tunnel_addresses" :
[
{
"address" : "10.8.0.6",
"gateway" : "10.8.0.5",
"ipv6" : false,
"metric" : -1,
"net30" : true,
"prefix_length" : 30
}
]
},
"tun_type" : 0
}
POST np://[\\.\pipe\agent_ovpnconnect]/tun-setup : 200 OK
TAP ADAPTERS:
guid='{816126FF-0A39-4B74-BBC3-09D1369C6879}' index=14 name='Connexion au réseau local'
Open TAP device "Connexion au réseau local" PATH="\\.\Global\{816126FF-0A39-4B74-BBC3-09D1369C6879}.tap" SUCCEEDED
TAP-Windows Driver Version 9.27
ActionDeleteAllRoutesOnInterface iface_index=14
netsh interface ip set interface 14 metric=9000
Ok.
netsh interface ip set address 14 static 10.8.0.6 255.255.255.252 gateway=10.8.0.5 store=active
IPHelper: add route 10.8.0.1/32 14 10.8.0.5 metric=-1
NRPT::ActionCreate pid=[13060] domains=[] dns_servers=[] dnssec=[0] id=[OpenVPNDNSRouting-13060]
DNS::ActionCreate interface name=[Connexion au réseau local] search domains=[]
DNS::ActionApply: successful
ipconfig /flushdns
Configuration IP de Windows
Cache de résolution DNS vidé.
TAP: ARP flush succeeded
TAP handle: d014000000000000
⏎[Sep 1, 2026, 17:27:34] Connected via TUN_WIN
⏎[Sep 1, 2026, 17:27:34] EVENT: CONNECTED 100.124.120.18:1194 (100.124.120.18) via /UDP on TUN_WIN/10.8.0.6/ gw=[10.8.0.5/] mtu=(default)⏎[Sep 1, 2026, 18:35:51] UDP send exception: send: asio.system error
⏎[Sep 1, 2026, 18:35:51] UDP send exception: send: asio.system error
⏎[Sep 1, 2026, 18:35:51] Session invalidated: KEEPALIVE_TIMEOUT
⏎[Sep 1, 2026, 18:35:51] Client terminated, restarting in 2000 ms...
⏎[Sep 1, 2026, 18:35:51] SetupClient: signaling tun destroy event
⏎[Sep 1, 2026, 18:35:53] EVENT: RECONNECTING ⏎[Sep 1, 2026, 18:35:53] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:35:53] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:35:53] EVENT: WAIT ⏎[Sep 1, 2026, 18:35:53] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:36:04] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:36:04] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 18:36:04] EVENT: RECONNECTING ⏎[Sep 1, 2026, 18:36:04] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:36:04] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:36:04] EVENT: WAIT ⏎[Sep 1, 2026, 18:36:04] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:36:07] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:36:14] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 18:36:14] EVENT: RECONNECTING ⏎[Sep 1, 2026, 18:36:14] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:36:14] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:36:14] EVENT: WAIT ⏎[Sep 1, 2026, 18:36:14] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:36:15] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:36:24] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 18:36:24] EVENT: RECONNECTING ⏎[Sep 1, 2026, 18:36:24] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:36:24] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:36:24] EVENT: WAIT ⏎[Sep 1, 2026, 18:36:24] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:36:25] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:36:29] EVENT: DISCONNECTED ⏎[Sep 1, 2026, 18:36:32] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 18:36:32] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 18:36:32] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 18:36:32] Unsupported option (ignored)
⏎[Sep 1, 2026, 18:36:32] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 18:36:32] 1 [persist-key]
⏎[Sep 1, 2026, 18:36:32] 2 [persist-tun]
⏎[Sep 1, 2026, 18:36:32] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:36:32] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:36:32] EVENT: WAIT ⏎[Sep 1, 2026, 18:36:32] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:36:33] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:36:42] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 18:36:42] EVENT: RECONNECTING ⏎[Sep 1, 2026, 18:36:42] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:36:42] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:36:42] EVENT: WAIT ⏎[Sep 1, 2026, 18:36:42] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:36:43] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:36:52] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 18:36:52] EVENT: RECONNECTING ⏎[Sep 1, 2026, 18:36:52] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:36:52] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:36:52] EVENT: WAIT ⏎[Sep 1, 2026, 18:36:52] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:36:53] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:37:02] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 18:37:02] EVENT: RECONNECTING ⏎[Sep 1, 2026, 18:37:02] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:37:02] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:37:02] EVENT: WAIT ⏎[Sep 1, 2026, 18:37:02] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:37:03] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:37:12] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 18:37:12] EVENT: RECONNECTING ⏎[Sep 1, 2026, 18:37:12] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:37:12] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:37:12] EVENT: WAIT ⏎[Sep 1, 2026, 18:37:12] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:37:13] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:37:22] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 18:37:22] EVENT: RECONNECTING ⏎[Sep 1, 2026, 18:37:22] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:37:22] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:37:22] EVENT: WAIT ⏎[Sep 1, 2026, 18:37:22] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:37:23] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:37:32] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Sep 1, 2026, 18:37:32] EVENT: DISCONNECTED ⏎[Sep 1, 2026, 18:40:13] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 18:40:13] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 18:40:13] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 18:40:13] Unsupported option (ignored)
⏎[Sep 1, 2026, 18:40:13] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 18:40:13] 1 [persist-key]
⏎[Sep 1, 2026, 18:40:13] 2 [persist-tun]
⏎[Sep 1, 2026, 18:40:13] EVENT: RESOLVE ⏎[Sep 1, 2026, 18:40:14] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 18:40:14] EVENT: WAIT ⏎[Sep 1, 2026, 18:40:14] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 18:40:17] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 18:40:18] EVENT: CONNECTING ⏎[Sep 1, 2026, 18:40:18] Tunnel Options:V4,dev-type tun,link-mtu 1521,tun-mtu 1500,proto UDPv4,cipher AES-256-GCM,auth [null-digest],keysize 256,key-method 2,tls-client
⏎[Sep 1, 2026, 18:40:18] Creds: UsernameEmpty/PasswordEmpty
⏎[Sep 1, 2026, 18:40:18] Sending Peer Info:
IV_VER=3.11.3
IV_PLAT=win
IV_NCP=2
IV_TCPNL=1
IV_PROTO=8094
IV_MTU=1600
IV_CIPHERS=AES-128-CBC:AES-192-CBC:AES-256-CBC:AES-128-GCM:AES-192-GCM:AES-256-GCM:CHACHA20-POLY1305
IV_AUTO_SESS=1
IV_GUI_VER=OCWindows_3.9.0-5008
IV_SSO=webauth,crtext

⏎[Sep 1, 2026, 18:40:18] SSL Handshake: peer certificate: CN=server, 2048 bit RSA, cipher: TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD

⏎[Sep 1, 2026, 18:40:18] Session is ACTIVE
⏎[Sep 1, 2026, 18:40:18] EVENT: GET_CONFIG ⏎[Sep 1, 2026, 18:40:18] Sending PUSH_REQUEST to server...
⏎[Sep 1, 2026, 18:40:19] OPTIONS:
0 [route] [10.8.0.1]
1 [topology] [net30]
2 [ping] [10]
3 [ping-restart] [120]
4 [ifconfig] [10.8.0.6] [10.8.0.5]
5 [peer-id] [0]
6 [cipher] [AES-256-GCM]

⏎[Sep 1, 2026, 18:40:19] PROTOCOL OPTIONS:
key-derivation: OpenVPN PRF
control channel: tls-crypt enabled
data channel: cipher AES-256-GCM, peer-id 0

⏎[Sep 1, 2026, 18:40:19] EVENT: ASSIGN_IP ⏎[Sep 1, 2026, 18:40:19] CAPTURED OPTIONS:
Session Name: 100.124.120.18
Layer: OSI_LAYER_3
Remote Address: 100.124.120.18
Tunnel Addresses:
10.8.0.6/30 -> 10.8.0.5 [net30]
Reroute Gateway: IPv4=0 IPv6=0 flags=[ IPv4 ]
Block IPv4: no
Block IPv6: no
Block local DNS: no
Add Routes:
10.8.0.1/32
Exclude Routes:

⏎[Sep 1, 2026, 18:40:21] SetupClient: transmitting tun setup list to \\.\pipe\agent_ovpnconnect
{
"allow_local_dns_resolvers" : false,
"confirm_event" : "dc0f000000000000",
"destroy_event" : "b80f000000000000",
"tun" :
{
"add_routes" :
[
{
"address" : "10.8.0.1",
"gateway" : "",
"ipv6" : false,
"metric" : -1,
"net30" : false,
"prefix_length" : 32
}
],
"block_ipv6" : false,
"block_outside_dns" : false,
"dns_options" :
{
"from_dhcp_options" : false,
"servers" : {}
},
"layer" : 3,
"mtu" : 0,
"remote_address" :
{
"address" : "100.124.120.18",
"ipv6" : false
},
"reroute_gw" :
{
"flags" : 256,
"ipv4" : false,
"ipv6" : false
},
"route_metric_default" : -1,
"session_name" : "100.124.120.18",
"tunnel_address_index_ipv4" : 0,
"tunnel_address_index_ipv6" : -1,
"tunnel_addresses" :
[
{
"address" : "10.8.0.6",
"gateway" : "10.8.0.5",
"ipv6" : false,
"metric" : -1,
"net30" : true,
"prefix_length" : 30
}
]
},
"tun_type" : 0
}
POST np://[\\.\pipe\agent_ovpnconnect]/tun-setup : 200 OK
TAP ADAPTERS:
guid='{816126FF-0A39-4B74-BBC3-09D1369C6879}' index=14 name='Connexion au réseau local'
Open TAP device "Connexion au réseau local" PATH="\\.\Global\{816126FF-0A39-4B74-BBC3-09D1369C6879}.tap" SUCCEEDED
TAP-Windows Driver Version 9.27
ActionDeleteAllRoutesOnInterface iface_index=14
netsh interface ip set interface 14 metric=9000
Ok.
netsh interface ip set address 14 static 10.8.0.6 255.255.255.252 gateway=10.8.0.5 store=active
IPHelper: add route 10.8.0.1/32 14 10.8.0.5 metric=-1
NRPT::ActionCreate pid=[14088] domains=[] dns_servers=[] dnssec=[0] id=[OpenVPNDNSRouting-14088]
DNS::ActionCreate interface name=[Connexion au réseau local] search domains=[]
DNS::ActionApply: successful
ipconfig /flushdns
Configuration IP de Windows
Cache de résolution DNS vidé.
TAP: ARP flush succeeded
TAP handle: f80f000000000000
⏎[Sep 1, 2026, 18:40:21] Connected via TUN_WIN
⏎[Sep 1, 2026, 18:40:21] EVENT: CONNECTED 100.124.120.18:1194 (100.124.120.18) via /UDP on TUN_WIN/10.8.0.6/ gw=[10.8.0.5/] mtu=(default)⏎[Sep 1, 2026, 20:19:29] UDP send exception: send: asio.system error
⏎[Sep 1, 2026, 20:19:29] UDP send exception: send: asio.system error
⏎[Sep 1, 2026, 20:19:29] Session invalidated: KEEPALIVE_TIMEOUT
⏎[Sep 1, 2026, 20:19:29] Client terminated, restarting in 2000 ms...
⏎[Sep 1, 2026, 20:19:29] SetupClient: signaling tun destroy event
⏎[Sep 1, 2026, 20:19:30] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:19:30] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:19:31] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:19:31] EVENT: WAIT ⏎[Sep 1, 2026, 20:19:31] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:19:43] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:19:43] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:19:43] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:19:43] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:19:43] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:19:43] EVENT: WAIT ⏎[Sep 1, 2026, 20:19:43] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:19:46] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:19:54] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:19:54] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:19:54] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:19:54] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:19:54] EVENT: WAIT ⏎[Sep 1, 2026, 20:19:54] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:19:54] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:20:03] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:20:03] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:20:03] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:20:03] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:20:03] EVENT: WAIT ⏎[Sep 1, 2026, 20:20:03] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:20:03] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:20:13] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:20:13] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:20:13] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:20:13] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:20:13] EVENT: WAIT ⏎[Sep 1, 2026, 20:20:13] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:20:13] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:20:23] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:20:23] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:20:23] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:20:23] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:20:23] EVENT: WAIT ⏎[Sep 1, 2026, 20:20:23] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:20:23] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:20:30] EVENT: PAUSE ⏎[Sep 1, 2026, 20:20:30] EVENT: RESUME ⏎[Sep 1, 2026, 20:20:30] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:20:30] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:20:30] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:20:30] EVENT: WAIT ⏎[Sep 1, 2026, 20:20:30] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:20:31] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:20:40] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:20:40] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:20:40] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:20:40] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:20:40] EVENT: WAIT ⏎[Sep 1, 2026, 20:20:40] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:20:41] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:20:50] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:20:50] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:20:50] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:20:50] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:20:50] EVENT: WAIT ⏎[Sep 1, 2026, 20:20:50] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:20:51] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:21:00] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:21:00] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:21:00] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:21:00] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:21:00] EVENT: WAIT ⏎[Sep 1, 2026, 20:21:00] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:21:01] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:21:10] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:21:10] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:21:10] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:21:10] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:21:10] EVENT: WAIT ⏎[Sep 1, 2026, 20:21:10] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:21:11] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:21:20] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:21:20] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:21:20] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:21:20] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:21:20] EVENT: WAIT ⏎[Sep 1, 2026, 20:21:20] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:21:21] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:23:32] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 20:23:32] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 20:23:32] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 20:23:32] Unsupported option (ignored)
⏎[Sep 1, 2026, 20:23:32] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 20:23:32] 1 [persist-key]
⏎[Sep 1, 2026, 20:23:32] 2 [persist-tun]
⏎[Sep 1, 2026, 20:23:32] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:23:32] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:23:32] EVENT: WAIT ⏎[Sep 1, 2026, 20:23:32] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:23:33] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:23:42] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:23:42] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:23:42] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:23:42] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:23:42] EVENT: WAIT ⏎[Sep 1, 2026, 20:23:42] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:23:45] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:23:50] EVENT: DISCONNECTED ⏎[Sep 1, 2026, 20:23:58] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 20:23:58] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 20:23:58] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 20:23:58] Unsupported option (ignored)
⏎[Sep 1, 2026, 20:23:58] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 20:23:58] 1 [persist-key]
⏎[Sep 1, 2026, 20:23:58] 2 [persist-tun]
⏎[Sep 1, 2026, 20:23:58] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:23:58] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:23:58] EVENT: WAIT ⏎[Sep 1, 2026, 20:23:58] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:23:59] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:24:08] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:24:08] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:24:08] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:24:08] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:24:08] EVENT: WAIT ⏎[Sep 1, 2026, 20:24:08] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:24:08] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:24:18] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:24:18] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:24:18] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:24:18] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:24:18] EVENT: WAIT ⏎[Sep 1, 2026, 20:24:18] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:24:18] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:24:28] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:24:28] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:24:28] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:24:28] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:24:28] EVENT: WAIT ⏎[Sep 1, 2026, 20:24:28] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:24:28] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:24:38] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:24:38] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:24:38] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:24:38] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:24:38] EVENT: WAIT ⏎[Sep 1, 2026, 20:24:38] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:24:38] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:24:42] EVENT: DISCONNECTED ⏎[Sep 1, 2026, 20:26:59] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 20:26:59] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 20:26:59] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 20:26:59] Unsupported option (ignored)
⏎[Sep 1, 2026, 20:26:59] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 20:26:59] 1 [persist-key]
⏎[Sep 1, 2026, 20:26:59] 2 [persist-tun]
⏎[Sep 1, 2026, 20:26:59] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:26:59] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:26:59] EVENT: WAIT ⏎[Sep 1, 2026, 20:26:59] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:26:59] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:27:09] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:27:09] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:27:09] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:27:09] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:27:09] EVENT: WAIT ⏎[Sep 1, 2026, 20:27:09] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:27:10] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:27:19] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:27:19] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:27:19] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:27:19] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:27:19] EVENT: WAIT ⏎[Sep 1, 2026, 20:27:19] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:27:19] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:27:29] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:27:29] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:27:29] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:27:29] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:27:29] EVENT: WAIT ⏎[Sep 1, 2026, 20:27:29] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:27:29] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:27:39] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:27:39] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:27:39] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:27:39] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:27:39] EVENT: WAIT ⏎[Sep 1, 2026, 20:27:39] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:27:40] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:27:49] Server poll timeout, trying next remote entry...
⏎[Sep 1, 2026, 20:27:49] EVENT: RECONNECTING ⏎[Sep 1, 2026, 20:27:49] EVENT: RESOLVE ⏎[Sep 1, 2026, 20:27:49] Contacting 100.124.120.18:1194 via UDP
⏎[Sep 1, 2026, 20:27:49] EVENT: WAIT ⏎[Sep 1, 2026, 20:27:49] WinCommandAgent: transmitting bypass route to 100.124.120.18
{
"host" : "100.124.120.18",
"ipv6" : false
}

⏎[Sep 1, 2026, 20:27:50] Connecting to [100.124.120.18]:1194 (100.124.120.18) via UDP
⏎[Sep 1, 2026, 20:27:59] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 3240
PACKETS_OUT : 60
CONNECTION_TIMEOUT : 1
N_RECONNECT : 5
⏎[Sep 1, 2026, 20:27:59] EVENT: DISCONNECTED ⏎[Sep 1, 2026, 20:28:18] OpenVPN core 3.11.3 win x86_64 64-bit OVPN-DCO built on May 29 2026 09:10:42
⏎[Sep 1, 2026, 20:28:18] Frame=512/2112/512 mssfix-ctrl=1250
⏎[Sep 1, 2026, 20:28:18] NOTE: This configuration contains options that were not used:
⏎[Sep 1, 2026, 20:28:18] Unsupported option (ignored)
⏎[Sep 1, 2026, 20:28:18] 0 [resolv-retry] [infinite]
⏎[Sep 1, 2026, 20:28:18] 1 [persist-key]
⏎[Sep 1, 2026, 20:28:18] 2 [persist-tun]
⏎
Author: Hanifi KhelafDate: 2026-09-01 21:47:09
Blog N° 47

a

wqa
Author: qawDate: 2026-09-01 14:31:29
Blog N° 46

xcs

s d
Author: sDate: 2026-09-01 14:24:19
Blog N° 45

ncpa.cpl

ncpa.cpl
Author: AhnizDigitalDate: 2026-09-01 14:20:45
Blog N° 44

Tailscale

Tailscale est extrêmement fiable et considéré comme un standard de sécurité de premier plan, y compris pour des environnements professionnels manipulant des données critiques.

Voici pourquoi vous pouvez lui faire confiance les yeux fermés :

Technologie WireGuard® : Il repose sur le protocole WireGuard, qui utilise des algorithmes cryptographiques modernes ultra-sécurisés (ChaCha20, Poly1305). C\'est ce qui se fait de mieux et de plus rapide en matière de VPN aujourd\'hui.

Chiffrement de bout en bout : Vos données échangées entre votre PC de maison et votre PC de bureau sont entièrement chiffrées. Personne d\'autre ne peut les intercepter.

Connexion directe (Peer-to-Peer) : Contrairement aux VPN d\'entreprise traditionnels où tout passe obligatoirement par un serveur central distant (ce qui peut ralentir le débit ou créer des goulots d\'étranglement), Tailscale établit une connexion directe chiffrée entre vos deux machines dès que c\'est possible.

Authentification sécurisée : C\'est votre propre fournisseur d\'identité (votre compte Google dans votre cas) qui gère la connexion. Personne ne peut s\'immiscer dans votre réseau (\"tailnet\") s\'il n\'a pas accès à votre compte Google et à vos validations de sécurité.

C\'est une solution robuste, utilisée massivement par des ingénieurs, des développeurs et des entreprises du monde entier pour interconnecter des serveurs de production et des infrastructures sensibles en toute sécurité. Vous pouvez l\'utiliser pour vos données critiques sans aucune hésitation.
Author: Hanifi KhelafDate: 2026-08-31 03:49:52
Blog N° 43

Configuration du Serveur OpenVPN (sur RHEL 9)

PROCÉDURE DE DÉPLOIEMENT SERVEUR & CLIENT OPENVPN SUR RHEL 9 (SPLIT-TUNNELING)
PRÉREQUIS :
- Un serveur RHEL 9 (ex: IP locale 192.168.180.128)
- Un accès root ou des privilèges sudo
- L\'IP publique de l\'entreprise (ex: 129.45.70.182)
- Le port 1194 UDP redirigé du pare-feu d\'entreprise vers l\'IP de la VM\PARTIE 1 : CONFIGURATION DU SERVEUR OPENVPN (RHEL 9)
1. Installation des paquets requis
sudo dnf install -y epel-release
sudo dnf install -y openvpn easy-rsa net-tools tcpdump
2. Initialisation de la PKI et Génération des Certificats (Easy-RSA)
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
# Initialiser la PKI
./easyrsa init-pki

# Générer l\'autorité de certification (CA) sans mot de passe
./easyrsa build-ca nopass

# Générer le certificat et la clé du serveur
./easyrsa gen-req server nopass
./easyrsa sign-req server server

# Générer les paramètres Diffie-Hellman et la clé TLS-Auth
./easyrsa gen-dh
openvpn --genkey secret ta.key

# Générer le certificat et la clé du client (client1)
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1


3. Copie des fichiers clés/certificats dans OpenVPN
--------------------------------------------------
sudo cp pki/ca.crt /etc/openvpn/server/
sudo cp pki/issued/server.crt /etc/openvpn/server/
sudo cp pki/private/server.key /etc/openvpn/server/
sudo cp pki/dh.pem /etc/openvpn/server/
sudo cp ta.key /etc/openvpn/server/


4. Fichier de Configuration Serveur (/etc/openvpn/server/server.conf)
Éditer le fichier avec : sudo nano /etc/openvpn/server/server.conf

Contenu du fichier :

port 1194
proto udp
dev tun

ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
tls-auth /etc/openvpn/server/ta.key 0

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

;push \"redirect-gateway def1 bypass-dhcp\"
;push \"dhcp-option DNS 8.8.8.8\"

keepalive 10 120
cipher AES-256-GCM
auth SHA256
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1

(Note: Les lignes redirect-gateway et dhcp-option sont volontairement
commentées pour préserver l\'accès Internet local du domicile).


5. Routing, Firewall (firewalld) et Services
# Activer le forwarding IP au niveau du noyau
echo \"net.ipv4.ip_forward = 1\" | sudo tee /etc/sysctl.d/99-openvpn.conf
sudo sysctl --system

# Configurer Firewalld
sudo firewall-cmd --permanent --add-service=openvpn
sudo firewall-cmd --permanent --add-port=1194/udp
sudo firewall-cmd --permanent --zone=trusted --add-interface=tun0
sudo firewall-cmd --permanent --add-masquerade
sudo firewall-cmd --reload

# Créer le répertoire de logs et démarrer le service
sudo mkdir -p /var/log/openvpn
sudo systemctl enable --now openvpn-server@server
sudo systemctl status openvpn-server@server
PARTIE 2 : CRÉATION DU FICHIER CLIENT INLINE (client1.ovpn)
Créer un fichier texte nommé `client1.ovpn` et y inclure l\'IP publique
du bureau sur la ligne `remote`, ainsi que le contenu brut des certificats.

Structure du fichier client1.ovpn :

client
dev tun
proto udp
remote <IP_PUBLIQUE_ENTREPRISE> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
key-direction 1
verb 3

<ca>
-----BEGIN CERTIFICATE-----
[Coller le contenu de ~/openvpn-ca/pki/ca.crt]
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
[Coller le contenu de ~/openvpn-ca/pki/issued/client1.crt]
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
[Coller le contenu de ~/openvpn-ca/pki/private/client1.key]
-----END PRIVATE KEY-----
</key>

<tls-auth>
-----BEGIN OpenVPN Static key v1-----
[Coller le contenu de ~/openvpn-ca/ta.key]
-----END OpenVPN Static key v1-----
</tls-auth>
PARTIE 3 : UTILISATION ET ACCÈS DEPUIS LE LAPTOP DE LA MAISON
1. Installer l\'application \"OpenVPN Connect\" sur le laptop personnel.
2. Importer le fichier `client1.ovpn`.
3. Lancer la connexion VPN (voyant vert).
4. Accès aux services de la VM RHEL :
- Cockpit (Web) : https://10.8.0.1:9090
- SSH (PuTTY / Terminal) : 10.8.0.1 (Port 22)
Author: Hanifi KhelafDate: 2026-08-31 11:17:14
Blog N° 42

DEPLOIEMENT NGINX & PODMAN VIA COCKPIT

DOCUMENTATION TECHNIQUE : DEPLOIEMENT NGINX & PODMAN VIA COCKPIT
Auteur / Créateur : AhnizTech
Environnement : Red Hat Enterprise Linux (RHEL 9.8) / VMware
1. VUE D\'ENSEMBLE DE L\'ARCHITECTURE
Cette infrastructure permet de déployer et d\'isoler des applications web statiques
ou dynamiques sous forme de conteneurs Podman, gérés graphiquement depuis Cockpit
et exposés sur des ports spécifiques contrôlés par firewalld.

* Podman : Moteur de conteneurisation \"rootless\" natif sous RHEL, compatible
avec l\'écosystème Docker.
* Cockpit : Interface d\'administration web centralisée permettant de piloter
l\'hôte RHEL et ses conteneurs sans passer exclusivement par la CLI.
* Nginx : Serveur web léger utilisé comme image de base (docker.io/library/nginx)
pour distribuer le contenu HTML/CSS.
* Volumes de données : Liaison dynamique entre le système de fichiers hôte
(~/devdocker) et la racine du serveur web Nginx (/usr/share/nginx/html).


2. GUIDE D\'IMPLEMENTATION PAS-A-PAS
Étape A -- Préparation des fichiers web sur l\'hôte
--------------------------------------------------
Création du dossier de développement et écriture de la page d\'accueil
(application / portfolio Tailwind) :

mkdir -p ~/devdocker
cat << \'EOF\' > ~/devdocker/index.html
<!-- Code HTML/CSS / Tailwind de l\'application -->
EOF

Étape B -- Ouverture des flux réseau (Firewall)
Chaque conteneur exposé sur un port hôte spécifique doit être explicitement
autorisé au niveau de firewalld :

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --add-port=8081/tcp --permanent
sudo firewall-cmd --reload

Étape C -- Déploiement du conteneur via Cockpit
Dans l\'interface web de Cockpit (Podman containers -> Create container) :

1. Onglet Details :
- Name : Myserverweb-html
- Owner : User: labhak0
- Image : docker.io/library/nginx:latest

2. Onglet Integration :
- Port mapping : Host port 8081 -> Container port 80 (Protocol: TCP)
- Volumes :
* Host path : /home/labhak0/devdocker
* Container path : /usr/share/nginx/html
* SELinux : Shared (injecte le flag :z pour garantir les droits d\'accès)


3. RECAPITULATIF DES SERVICES DEPLOYES
--------------------------------------------------------------------------------
+-------------------+-----------+----------------+--------------------------+-----------------------------------------+
| Nom du conteneur | Port Hôte | Port Conteneur | Chemin Hôte (Volume) | Usage / Description |
+-------------------+-----------+----------------+--------------------------+-----------------------------------------+
| Myserver-nginx | 8080 | 80 | Aucun (Interne) | Serveur Nginx de test (page par défaut) |
| Myserverweb-html | 8081 | 80 | /home/labhak0/devdocker | Application web AhnizTech (HTML/Tailwind)|
+-------------------+-----------+----------------+--------------------------+-----------------------------------------+


4. MAINTENANCE & BONNES PRATIQUES AHNIZTECH
--------------------------------------------------------------------------------
* Mise à jour à chaud : Les modifications apportées directement dans
~/devdocker/index.html sont répercutées instantanément dans le navigateur
sans redémarrage du conteneur.
* Conformité SELinux : En cas d\'erreur 403 Forbidden, vérifier que l\'option
Shared (:z) est bien appliquée au montage du volume dans Cockpit.
* Inspection des journaux : Utiliser l\'onglet Logs dans la fiche du conteneur
sous Cockpit pour analyser les requêtes HTTP entrantes et déboguer en temps réel.
Author: Hanifi KhelafDate: 2026-08-30 12:45:14
Blog N° 41

nginx

Welcome to nginx!
If you see this page, nginx is successfully installed and working. Further configuration is required for the web server, reverse proxy, API gateway, load balancer, content cache, or other features.

For online documentation and support please refer to nginx.org.
To engage with the community please visit community.nginx.org.
For enterprise grade support, professional services, additional security features and capabilities please refer to f5.com/nginx.

Thank you for using nginx.
Author: Hanifi KhelafDate: 2026-08-30 12:45:14
Blog N° 40

sudo firewall-cmd --add-port=8080/tcp --permanent sudo firewall-cmd --reload

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
Author: Hanifi KhelafDate: 2026-08-30 13:28:25
Blog N° 39

Cockpit RHEL9

Aujourd\'hui (RHEL 9) : Cockpit s\'impose comme l\'interface centrale incontournable pour piloter les serveurs physiques, les machines virtuelles et les conteneurs Podman.
Author: Hanifi KhelafDate: 2026-08-30 13:13:32
Blog N° 38

Cockpit RHEL9.8

Cockpit n\'est pas un danger en soi, mais son installation doit répondre à un besoin réel et respecter des règles d\'entreprise strictes.Analyse pour un environnement Enterprise / Production1. Les points positifs en entrepriseProduit certifié Red Hat : Intégré nativement dans RHEL, mis à jour via les canaux officiels et supporté par les équipes Red Hat.Respect du RBAC et de PAM : Cockpit n\'a aucun privilège propre. Il hérite strictement des droits de l\'utilisateur qui s\'authentifie (PAM) et nécessite les droits sudo de l\'utilisateur pour agir.Audit et Traçabilité : Toutes les actions exécutées via l\'interface web sont enregistrées dans le journal système (journalctl / /var/log/audit/audit.log) comme si la commande avait été tapée en SSH.2. Les risques en environnement de productionAugmentation de la surface d\'attaque : Ouvrir le port TCP 9090 crée un point d\'entrée Web supplémentaire sur le serveur.Avertissement de certificat (TLS) : Par défaut, Cockpit génère un certificat auto-signé. En entreprise, l\'utilisation de certs non signés par la PKI interne expose aux attaques Man-In-The-Middle et viole les politiques de sécurité (SecOps).Authentification simple par mot de passe : Sans restriction réseau ou MFA (authentification double facteur), le port 9090 reste exposé aux tentatives de force brute.Recommandations SecOps (Production vs Dev)RecommandationEnvironnement Dev / LabEnvironnement Enterprise / ProdUtilitéUtile pour le monitoring visuelNon indispensable si vous utilisez déjà des outils de gestion d\'infrastructure (Ansible, Satellite, Red Hat Insights, Zabbix)Accès RéseauAccessible sur le sous-réseau localRestreint via firewalld ou accessible uniquement à travers un bastion / VPN de gestionCertificats SSLAuto-signé acceptéRemplacement obligatoire par un certificat délivré par la PKI d\'entrepriseStatut du serviceActivé en permanenceDésactivé par défaut si non utilisé quotidiennement (systemctl stop cockpit.socket)Si votre équipe d\'administration gère déjà le serveur en SSH / Ansible, Cockpit n\'est pas indispensable en production. S\'il est conservé, limitez l\'accès au port 9090 via le pare-feu aux seules IP des administrateurs.
Author: AhnizDigitalDate: 2026-08-30 12:45:14
Blog N° 37

Activation du service Cockpit (sur la VM RHEL 9.8)

L\'activation du socket Cockpit au niveau de systemd permet d\'écouter les connexions entrantes sur le port TCP 9090.Bash

sudo systemctl enable --now cockpit.socket

2. Matrice d\'accès au service webParamètreValeur / InstructionURL d\'accèshttps://<IP_LOCALE_VM>:9090 (ex: https://192.168.180.128:9090)Avertissement TLS/SSLIgnorer l\'avertissement de certificat auto-signé (Cliquer sur Avancé > Continuer vers le site)IdentifiantsCompte utilisateur système Linux (labhak0) et son mot de passePort réseau utilisé9090 (TCP / HTTPS)Prérequis réseauLa machine hôte et la VM doivent appartenir au même sous-réseau (mode Bridge ou NAT VMware)3. Élévation des privilèges sur l\'interfaceAprès l\'authentification initiale, l\'interface s\'ouvre en mode accès limité. Pour effectuer des actions système avancées :Cliquer sur la bannière Activez l\'accès administrateur (Top bar).Réinsérer le mot de passe utilisateur pour valider le passage en privilèges sudo.
Author: Hanifi KhelafDate: 2026-08-30 12:45:14
Blog N° 36

RHEL Nodejs PostgreSQL PgAdmin4

[labhak0@labvmrhel01 ~]$ sudo -i
[sudo] password for labhak0:
[root@labvmrhel01 ~]# hostnamectl
Static hostname: labvmrhel01
Icon name: computer-vm
Chassis: vm 🖴
Machine ID: f59ee43d0da146e8bf3b056e54e822b5
Boot ID: 1906ef7f3dd04c35b210992f81847553
Virtualization: vmware
Operating System: Red Hat Enterprise Linux 9.8 (Plow)
CPE OS Name: cpe:/o:redhat:enterprise_linux:9::baseos
Kernel: Linux 5.14.0-687.42.1.el9_8.x86_64
Architecture: x86-64
Hardware Vendor: VMware, Inc.
Hardware Model: VMware20,1
Firmware Version: VMW201.00V.21805430.B64.2305221830
[root@labvmrhel01 ~]# php -v
bash: php: command not found...
Install package \'php-cli\' to provide command \'php\'? [N/y] N


[root@labvmrhel01 ~]# psql --version
bash: psql: command not found...
Install package \'postgresql\' to provide command \'psql\'? [N/y] n


[root@labvmrhel01 ~]# dnf install -y postgresql postgresql-server
Updating Subscription Management repositories.
Last metadata expiration check: 1:12:33 ago on Wed 26 Aug 2026 01:54:58 PM CET.
Dependencies resolved.
=========================================================================================
Package Arch Version Repository Size
=========================================================================================
Installing:
postgresql x86_64 13.23-5.el9_8 rhel-9-for-x86_64-appstream-rpms 1.6 M
postgresql-server x86_64 13.23-5.el9_8 rhel-9-for-x86_64-appstream-rpms 5.8 M
Installing dependencies:
postgresql-private-libs x86_64 13.23-5.el9_8 rhel-9-for-x86_64-appstream-rpms 145 k

Transaction Summary
=========================================================================================
Install 3 Packages

Total download size: 7.6 M
Installed size: 29 M
Downloading Packages:
(1/3): postgresql-private-libs-13.23-5.el9_8.x86_64.rpm 160 kB/s | 145 kB 00:00
(2/3): postgresql-13.23-5.el9_8.x86_64.rpm 404 kB/s | 1.6 MB 00:04
(3/3): postgresql-server-13.23-5.el9_8.x86_64.rpm 646 kB/s | 5.8 MB 00:09
-----------------------------------------------------------------------------------------
Total 838 kB/s | 7.6 MB 00:09
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : postgresql-private-libs-13.23-5.el9_8.x86_64 1/3
Installing : postgresql-13.23-5.el9_8.x86_64 2/3
Running scriptlet: postgresql-server-13.23-5.el9_8.x86_64 3/3
Installing : postgresql-server-13.23-5.el9_8.x86_64 3/3
Running scriptlet: postgresql-server-13.23-5.el9_8.x86_64 3/3
Verifying : postgresql-13.23-5.el9_8.x86_64 1/3
Verifying : postgresql-private-libs-13.23-5.el9_8.x86_64 2/3
Verifying : postgresql-server-13.23-5.el9_8.x86_64 3/3
Installed products updated.

Installed:
postgresql-13.23-5.el9_8.x86_64 postgresql-private-libs-13.23-5.el9_8.x86_64
postgresql-server-13.23-5.el9_8.x86_64

Complete!
[root@labvmrhel01 ~]# postgresql-setup --initdb
* Initializing database in \'/var/lib/pgsql/data\'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
[root@labvmrhel01 ~]# systemctl enable --now postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.
[root@labvmrhel01 ~]# rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm
warning: /var/tmp/rpm-tmp.7QnBb3: Header V4 RSA/SHA256 Signature, key ID 210976f2: NOKEY
[root@labvmrhel01 ~]# dnf install -y pgadmin4
Updating Subscription Management repositories.
pgadmin4 866 B/s | 833 B 00:00
pgadmin4 3.4 MB/s | 3.8 kB 00:00
Importing GPG key 0x210976F2:
Userid : \"Package Manager (Package Signing Key) <packages@pgadmin.org>\"
Fingerprint: E869 7E2E EF76 C02D 3A63 3277 8881 B2A8 2109 76F2
From : /etc/pki/rpm-gpg/PGADMIN_PKG_KEY
pgadmin4 634 kB/s | 3.4 MB 00:05
Last metadata expiration check: 0:00:06 ago on Wed 26 Aug 2026 03:12:15 PM CET.
Dependencies resolved.
=========================================================================================
Package Arch Version Repository Size
=========================================================================================
Installing:
pgadmin4 noarch 9.17-1.el9 pgAdmin4 6.3 k
Installing dependencies:
libpq5 x86_64 18.4-1PGDG.rhel9.8 pgAdmin4 289 k
replacing libpq.x86_64 13.23-3.el9_8
pgadmin4-desktop x86_64 9.17-1.el9 pgAdmin4 92 M
pgadmin4-server x86_64 9.17-1.el9 pgAdmin4 124 M
pgadmin4-web noarch 9.17-1.el9 pgAdmin4 9.3 k
python3-mod_wsgi x86_64 4.7.1-12.el9_6 rhel-9-for-x86_64-appstream-rpms 1.0 M

Transaction Summary
=========================================================================================
Install 6 Packages

Total download size: 217 M
Downloading Packages:
(1/6): pgadmin4-9.17-1.el9.noarch.rpm 17 kB/s | 6.3 kB 00:00
(2/6): libpq5-18.4-1PGDG.rhel9.8.x86_64.rpm 125 kB/s | 289 kB 00:02
(3/6): pgadmin4-web-9.17-1.el9.noarch.rpm 4.8 kB/s | 9.3 kB 00:01
(4/6): python3-mod_wsgi-4.7.1-12.el9_6.x86_64.rpm 137 kB/s | 1.0 MB 00:07
(5/6): pgadmin4-server-9.17-1.el9.x86_64.rpm 742 kB/s | 124 MB 02:51
(6/6): pgadmin4-desktop-9.17-1.el9.x86_64.rpm 380 kB/s | 92 MB 04:07
-----------------------------------------------------------------------------------------
Total 900 kB/s | 217 MB 04:07
pgadmin4 3.8 MB/s | 3.8 kB 00:00
Importing GPG key 0x210976F2:
Userid : \"Package Manager (Package Signing Key) <packages@pgadmin.org>\"
Fingerprint: E869 7E2E EF76 C02D 3A63 3277 8881 B2A8 2109 76F2
From : /etc/pki/rpm-gpg/PGADMIN_PKG_KEY
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : python3-mod_wsgi-4.7.1-12.el9_6.x86_64 1/7
Installing : libpq5-18.4-1PGDG.rhel9.8.x86_64 2/7
Running scriptlet: libpq5-18.4-1PGDG.rhel9.8.x86_64 2/7
Running scriptlet: pgadmin4-server-9.17-1.el9.x86_64 3/7
Installing : pgadmin4-server-9.17-1.el9.x86_64 3/7
Installing : pgadmin4-desktop-9.17-1.el9.x86_64 4/7
Running scriptlet: pgadmin4-desktop-9.17-1.el9.x86_64 4/7
Installing : pgadmin4-web-9.17-1.el9.noarch 5/7
Installing : pgadmin4-9.17-1.el9.noarch 6/7
Obsoleting : libpq-13.23-3.el9_8.x86_64 7/7
Running scriptlet: libpq-13.23-3.el9_8.x86_64 7/7
Verifying : libpq5-18.4-1PGDG.rhel9.8.x86_64 1/7
Verifying : libpq-13.23-3.el9_8.x86_64 2/7
Verifying : pgadmin4-9.17-1.el9.noarch 3/7
Verifying : pgadmin4-desktop-9.17-1.el9.x86_64 4/7
Verifying : pgadmin4-server-9.17-1.el9.x86_64 5/7
Verifying : pgadmin4-web-9.17-1.el9.noarch 6/7
Verifying : python3-mod_wsgi-4.7.1-12.el9_6.x86_64 7/7
Installed products updated.

Installed:
libpq5-18.4-1PGDG.rhel9.8.x86_64 pgadmin4-9.17-1.el9.noarch
pgadmin4-desktop-9.17-1.el9.x86_64 pgadmin4-server-9.17-1.el9.x86_64
pgadmin4-web-9.17-1.el9.noarch python3-mod_wsgi-4.7.1-12.el9_6.x86_64

Complete!
[root@labvmrhel01 ~]# /usr/pgadmin4/bin/setup-web.sh
Setting up pgAdmin 4 in web mode on a Redhat based platform...
Creating configuration database...
/usr/pgadmin4/venv/lib64/python3.9/site-packages/passlib/pwd.py:16: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
import pkg_resources
NOTE: Configuring authentication for SERVER mode.

Enter the email address and password to use for the initial pgAdmin user account:

Email address: khelaf.hanifi@liebherr.com
Password:
Retype password:
/usr/pgadmin4/venv/lib64/python3.9/site-packages/google/api_core/_python_version_support.py:242: FutureWarning: You are using a non-supported Python version (3.9.25). Google will not post any further updates to google.api_core supporting this Python version. Please upgrade to the latest Python version, or at least Python 3.10, and then update google.api_core.
warnings.warn(message, FutureWarning)
/usr/pgadmin4/venv/lib64/python3.9/site-packages/google/auth/__init__.py:54: FutureWarning: You are using a Python version 3.9 past its end of life. Google will update google-auth with critical bug fixes on a best-effort basis, but not with any other fixes or features. Please upgrade your Python version, and then update google-auth.
warnings.warn(eol_message.format(\"3.9\"), FutureWarning)
/usr/pgadmin4/venv/lib64/python3.9/site-packages/google/oauth2/__init__.py:40: FutureWarning: You are using a Python version 3.9 past its end of life. Google will update google-auth with critical bug fixes on a best-effort basis, but not with any other fixes or features. Please upgrade your Python version, and then update google-auth.
warnings.warn(eol_message.format(\"3.9\"), FutureWarning)
pgAdmin 4 - Application Initialisation
======================================

Creating storage and log directories...
Configuring SELinux...
The Apache web server is not running. We can enable and start the web server for you to finish pgAdmin 4 installation. Continue (y/n)? y
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Apache successfully enabled.
Apache successfully started.
You can now start using pgAdmin 4 in web mode at http://127.0.0.1/pgadmin4
[root@labvmrhel01 ~]# sudo -u postgres psql -c \"ALTER USER postgres WITH PASSWORD \'Rhel2024+\';\"
could not change directory to \"/root\": Permission denied
ALTER ROLE
[root@labvmrhel01 ~]# sed -i \'s/127.0.0.1\\/32 ident/127.0.0.1\\/32 scram-sha-256/g\' /var/lib/pgsql/data/pg_hba.conf
systemctl restart postgresql
[root@labvmrhel01 ~]# sed -i \'s/scram-sha-256/trust/g\' /var/lib/pgsql/data/pg_hba.conf
systemctl restart postgresql
sudo -u postgres psql -c \"ALTER USER postgres WITH PASSWORD \'Rhel2024+\';\"
sed -i \'s/trust/scram-sha-256/g\' /var/lib/pgsql/data/pg_hba.conf
systemctl restart postgresql
could not change directory to \"/root\": Permission denied
ALTER ROLE
[root@labvmrhel01 ~]# sed -i \'s/scram-sha-256/trust/g\' /var/lib/pgsql/data/pg_hba.conf
systemctl restart postgresql
[root@labvmrhel01 ~]# dnf module enable -y nodejs:20
Updating Subscription Management repositories.
Last metadata expiration check: 0:55:11 ago on Wed 26 Aug 2026 03:12:15 PM CET.
Dependencies resolved.
=========================================================================================
Package Architecture Version Repository Size
=========================================================================================
Enabling module streams:
nodejs 20

Transaction Summary
=========================================================================================

Complete!
[root@labvmrhel01 ~]# dnf install -y nodejs
Updating Subscription Management repositories.

The system clock is skewed. There is a time difference of 9.0 seconds with the entitlement server. Please check your clock settings to ensure access to all entitled content.

Last metadata expiration check: 0:56:49 ago on Wed 26 Aug 2026 03:12:15 PM CET.
Dependencies resolved.
=========================================================================================
Package Arch Version Repository Size
=========================================================================================
Installing:
nodejs x86_64 1:20.20.2-1.module+el9.7.0+24193+41b7b572
rhel-9-for-x86_64-appstream-rpms 14 M
Installing weak dependencies:
nodejs-docs noarch 1:20.20.2-1.module+el9.7.0+24193+41b7b572
rhel-9-for-x86_64-appstream-rpms 8.6 M
nodejs-full-i18n x86_64 1:20.20.2-1.module+el9.7.0+24193+41b7b572
rhel-9-for-x86_64-appstream-rpms 8.9 M
npm x86_64 1:10.8.2-1.20.20.2.1.module+el9.7.0+24193+41b7b572
rhel-9-for-x86_64-appstream-rpms 2.3 M

Transaction Summary
=========================================================================================
Install 4 Packages

Total download size: 34 M
Installed size: 181 M
Downloading Packages:
[MIRROR] nodejs-docs-20.20.2-1.module+el9.7.0+24193+41b7b572.noarch.rpm: Curl error (6): Couldn\'t resolve host name for https://cdn.redhat.com/content/dist/rhel9/9/x86_64/appstream/os/Packages/n/nodejs-docs-20.20.2-1.module%2bel9.7.0%2b24193%2b41b7b572.noarch.rpm [Could not resolve host: cdn.redhat.com]
[MIRROR] nodejs-full-i18n-20.20.2-1.module+el9.7.0+24193+41b7b572.x86_64.rpm: Curl error (6): Couldn\'t resolve host name for https://cdn.redhat.com/content/dist/rhel9/9/x86_64/appstream/os/Packages/n/nodejs-full-i18n-20.20.2-1.module%2bel9.7.0%2b24193%2b41b7b572.x86_64.rpm [Could not resolve host: cdn.redhat.com]
[MIRROR] nodejs-20.20.2-1.module+el9.7.0+24193+41b7b572.x86_64.rpm: Curl error (6): Couldn\'t resolve host name for https://cdn.redhat.com/content/dist/rhel9/9/x86_64/appstream/os/Packages/n/nodejs-20.20.2-1.module%2bel9.7.0%2b24193%2b41b7b572.x86_64.rpm [Could not resolve host: cdn.redhat.com]
[MIRROR] nodejs-docs-20.20.2-1.module+el9.7.0+24193+41b7b572.noarch.rpm: Curl error (6): Couldn\'t resolve host name for https://cdn.redhat.com/content/dist/rhel9/9/x86_64/appstream/os/Packages/n/nodejs-docs-20.20.2-1.module%2bel9.7.0%2b24193%2b41b7b572.noarch.rpm [Could not resolve host: cdn.redhat.com]
[FAILED] nodejs-docs-20.20.2-1.module+el9.7.0+24193+41b7b572.noarch.rpm: No more mirrors to try - All mirrors were already tried without success
(2-3/4): nodejs-20.20.2-1 25% [====== ] 5.1 GB/s | 8.6 MB 00:00 ETA
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing \'dnf clean packages\'.
Error: Error downloading packages:
nodejs-docs-1:20.20.2-1.module+el9.7.0+24193+41b7b572.noarch: Cannot download, all mirrors were already tried without success
[root@labvmrhel01 ~]# node -v
npm -v
bash: node: command not found...
Install package \'nodejs\' to provide command \'node\'? [N/y] n


bash: npm: command not found...
Install package \'npm\' to provide command \'npm\'? [N/y] n


[root@labvmrhel01 ~]# dnf install -y nodejs
Updating Subscription Management repositories.
Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs) 587 B/s | 4.5 kB 00:07
Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs) 195 kB/s | 108 MB 09:23
Last metadata expiration check: 0:06:25 ago on Wed 26 Aug 2026 04:17:23 PM CET.
Dependencies resolved.
=========================================================================================
Package Arch Version Repository Size
=========================================================================================
Installing:
nodejs x86_64 1:20.20.2-1.module+el9.7.0+24193+41b7b572
rhel-9-for-x86_64-appstream-rpms 14 M
Installing weak dependencies:
nodejs-docs noarch 1:20.20.2-1.module+el9.7.0+24193+41b7b572
rhel-9-for-x86_64-appstream-rpms 8.6 M
nodejs-full-i18n x86_64 1:20.20.2-1.module+el9.7.0+24193+41b7b572
rhel-9-for-x86_64-appstream-rpms 8.9 M
npm x86_64 1:10.8.2-1.20.20.2.1.module+el9.7.0+24193+41b7b572
rhel-9-for-x86_64-appstream-rpms 2.3 M

Transaction Summary
=========================================================================================
Install 4 Packages

Total download size: 34 M
Installed size: 181 M
Downloading Packages:
[MIRROR] nodejs-docs-20.20.2-1.module+el9.7.0+24193+41b7b572.noarch.rpm: Curl error (56): Failure when receiving data from the peer for https://cdn.redhat.com/content/dist/rhel9/9/x86_64/appstream/os/Packages/n/nodejs-docs-20.20.2-1.module%2bel9.7.0%2b24193%2b41b7b572.noarch.rpm [OpenSSL SSL_read: Connection reset by peer, errno 104]
(1/4): nodejs-docs-20.20.2-1.module+el9.7.0+24193+41b7b5 98 kB/s | 8.6 MB 01:30
(2/4): nodejs-full-i18n-20.20.2-1.module+el9.7.0+24193+4 94 kB/s | 8.9 MB 01:36
(3/4): npm-10.8.2-1.20.20.2.1.module+el9.7.0+24193+41b7b 210 kB/s | 2.3 MB 00:11
(4/4): nodejs-20.20.2-1.module+el9.7.0+24193+41b7b572.x8 81 kB/s | 14 MB 02:58
-----------------------------------------------------------------------------------------
Total 195 kB/s | 34 MB 02:58
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : nodejs-docs-1:20.20.2-1.module+el9.7.0+24193+41b7b572.noarch 1/4
Installing : nodejs-full-i18n-1:20.20.2-1.module+el9.7.0+24193+41b7b572.x8 2/4
Installing : npm-1:10.8.2-1.20.20.2.1.module+el9.7.0+24193+41b7b572.x86_64 3/4
Installing : nodejs-1:20.20.2-1.module+el9.7.0+24193+41b7b572.x86_64 4/4
Running scriptlet: nodejs-1:20.20.2-1.module+el9.7.0+24193+41b7b572.x86_64 4/4
Verifying : nodejs-1:20.20.2-1.module+el9.7.0+24193+41b7b572.x86_64 1/4
Verifying : nodejs-docs-1:20.20.2-1.module+el9.7.0+24193+41b7b572.noarch 2/4
Verifying : nodejs-full-i18n-1:20.20.2-1.module+el9.7.0+24193+41b7b572.x8 3/4
Verifying : npm-1:10.8.2-1.20.20.2.1.module+el9.7.0+24193+41b7b572.x86_64 4/4
Installed products updated.

Installed:
nodejs-1:20.20.2-1.module+el9.7.0+24193+41b7b572.x86_64
nodejs-docs-1:20.20.2-1.module+el9.7.0+24193+41b7b572.noarch
nodejs-full-i18n-1:20.20.2-1.module+el9.7.0+24193+41b7b572.x86_64
npm-1:10.8.2-1.20.20.2.1.module+el9.7.0+24193+41b7b572.x86_64

Complete!
[root@labvmrhel01 ~]# node -v
v20.20.2
[root@labvmrhel01 ~]# npm -v
10.8.2
Author: Hanifi KhelafDate: 2026-08-27 10:10:25
Blog N° 35

Neutrino

La double désintégration bêta sans neutrino réunit en un seul phénomène l\'énigme du temps inversé, la nature du neutrino et la survie de la matière dans notre univers.
​1. Le neutrino : la plus petite matière
Le neutrino est la particule de matière la plus légère et la plus insaisissable. Si la double désintégration bêta se produit sans émettre de neutrinos, cela prouve que le neutrino est sa propre antiparticule (particule de Majorana) et qu\'il peut s\'annihiler lui-même.
​2. Le temps inversé et l\'anti-univers
Selon la symétrie CPT et les équations de Feynman, une antiparticule agit exactement comme une particule de matière qui remonte le temps. Le Big Bang a ainsi pu produire deux réalités miroirs : notre univers de matière qui progresse vers le futur et un anti-univers d\'antimatière qui s\'étend vers le passé.
​3. Pourquoi la matière a gagné
Au tout début, matière et antimatière ont été créées en quantités presque identiques et se sont annihilées en pur rayonnement. Si le neutrino est sa propre antiparticule, ce processus rompt l\'équilibre : un surplus infime de matière (une particule restante pour chaque milliard de paires créées) a suffi pour détruire toute l\'antimatière et former nos étoiles, nos planètes et tout ce qui existe.
Author: Hanifi khelafDate: 2026-08-25 21:46:54
Blog N° 34

Veeam Data Platform V13.1

From Hypervisor Freedom to Identity Recovery: Get Ready for Veeam Data Platform v13.1

https://www.youtube.com/watch?v=o-eZvXAf05I
Author: Hanifi KhelafDate: 2026-08-18 21:25:25
Blog N° 33

Ctrl + Z

C\'est la magie absolue du dev ! Ctrl + Z (Annuler / Undo), c\'est littéralement le bouton \"Machine à remonter le temps\" et le meilleur ami de tout développeur.

Tant que tu n\'as pas fermé ton éditeur de code, il conserve en mémoire toutes tes frappes et modifications récentes.

💡 Deux petits raccourcis bonus à garder sous le coude :
Ctrl + Y (ou Ctrl + Shift + Z) : C\'est l\'inverse (Rétablir / Redo). Si tu fais un Ctrl + Z de trop et que tu effaces un truc bien, ça te permet de revenir en avant.

Ctrl + S : Sauvegarder immédiatement.
Author: Hanifi KhelafDate: 2026-08-01 13:37:05
Blog N° 32

utf8mb4 ET LA GESTION DES EMOJIS EN BDD (MySQL / MariaDB)

Dans MySQL et MariaDB, l\'encodage \'utf8mb4\' (UTF-8 4-Byte) est le standard
indispensable pour stocker l\'intégralité du jeu de caractères Unicode,
notamment les émojis.

--------------------------------------------------------------------------------
1. POURQUOI LE \'utf8\' CLASSIQUE DE MYSQL NE SUFFIT PAS ?
--------------------------------------------------------------------------------

Historiquement, le type \'utf8\' dans MySQL (désormais nommé \'utf8mb3\') était
une version incomplète d\'UTF-8 :

* \'utf8\' (utf8mb3) : Limité à 3 octets maximum par caractère. Il ne couvre que
le plan multilingue de base (U+0000 à U+FFFF).
* \'utf8mb4\' : Utilise jusqu\'à 4 octets par caractère. Il couvre l\'ensemble du
standard Unicode (U+0000 à U+10FFFF).

Le problème avec les émojis :
La majorité des émojis (comme 🤖 U+1F916, 🚀 U+1F680, 😂 U+1F602) se trouvent
dans les plans supérieurs d\'Unicode et nécessitent 4 octets.

Si vous tentez d\'insérer un émoji dans une colonne \'utf8\' classique :
* MySQL génère l\'erreur : \"#1366 - Incorrect string value\".
* Ou le texte est tronqué juste avant l\'émoji (selon le mode strict du serveur).

--------------------------------------------------------------------------------
2. LES COLLATIONS utf8mb4 : LAQUELLE CHOISIR ?
--------------------------------------------------------------------------------

La collation définit la manière dont les caractères sont comparés et triés
(gestion des accents et des majuscules/minuscules).

* utf8mb4_0900_ai_ci :
Standard sous MySQL 8.0+. Basé sur Unicode 9.0. Accent-insensitive & Case-insensitive.
-> Recommandé pour MySQL 8.0+

* utf8mb4_unicode_ci :
Standard sous MySQL 5.7 et MariaDB. Respecte les règles de tri internationales.
-> Recommandé pour MariaDB / MySQL 5.7

* utf8mb4_general_ci :
Plus ancienne et rapide, mais moins précise sur les tris complexes ou caractères spéciaux.
-> À éviter sur de nouveaux projets

--------------------------------------------------------------------------------
3. CONFIGURATION COMPLÈTE (BDD, TABLE, COLONNE, PHP, SERVEUR)
--------------------------------------------------------------------------------

A. Au niveau de la Base de Données / Table / Colonne (SQL) :

-- 1. Base de données complète
ALTER DATABASE nom_de_bdd CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

-- 2. Table spécifique
ALTER TABLE nom_de_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 3. Colonne spécifique
ALTER TABLE nom_de_table MODIFY nom_colonne VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

B. Au niveau de la connexion PHP :

* Avec PDO :
$dsn = \"mysql:host=localhost;dbname=ma_bdd;charset=utf8mb4\";
$pdo = new PDO($dsn, $user, $password);

* Avec mysqli :
$mysqli = new mysqli(\"localhost\", \"user\", \"password\", \"ma_bdd\");
$mysqli->set_charset(\"utf8mb4\");

C. Au niveau du serveur MySQL (my.cnf / my.ini) :

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

--------------------------------------------------------------------------------
4. EN RÉSUMÉ (RÈGLE D\'OR)
--------------------------------------------------------------------------------

Pour tout nouveau projet Web ou base de données MySQL/MariaDB, utilisez \'utf8mb4\'
par défaut sur vos bases, tables, connexions PHP et scripts. Cela évite les erreurs
d\'encodage avec les émojis, les caractères chinois/arabes ou les symboles
mathématiques complexes.
Author: Hanifi KhelafDate: 2026-07-31 17:38:42
Blog N° 31

/?var=valeur-token

Ce paramètre /?hl=fr-FR est un paramètre standard de sélection de langue (Host Language ou Human Language).

📌 Signification
hl : Sigle pour Host Language (ou Human Language).

fr-FR : Code ISO de la langue, ici Français (France).
Author: Hanifi NeilaDate: 2026-08-01 13:37:05
Blog N° 30

Nettoyage de l\'URL côté navigateur (Clean URL)

// Conserver la provenance en session puis nettoyer l\'URL
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.has(\'fbclid\')) {
// 1. Sauvegarder dans la session du navigateur
sessionStorage.setItem(\'fbclid\', urlParams.get(\'fbclid\'));

// 2. Retirer le paramètre de la barre d\'adresse proprement
urlParams.delete(\'fbclid\');
const cleanUrl = window.location.pathname + (urlParams.toString() ? \'?\' + urlParams.toString() : \'\');
window.history.replaceState({}, document.title, cleanUrl);
}
Author: Hanifi SophiaDate: 2026-08-01 13:37:05
Blog N° 29

PHP-CGI Argument Injection Attack (Remote Code Execution)

📌 Overview
This log entry shows a PHP-CGI Argument Injection attack, a critical vulnerability (associated with CVE-2024-4577 and CVE-2012-1823) that targets servers running PHP in CGI mode.

The attacker is attempting to inject command-line arguments directly into the PHP binary to override server configurations and achieve Remote Code Execution (RCE).

🔍 Payload Breakdown
The intercepted string is:

Plaintext
/?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
%ADd / -d (Argument Injection):
When PHP runs via CGI, query string parameters can be passed directly as CLI flags to the php executable. The -d flag allows setting custom php.ini directives. Attackers often use %ADd (using a soft-hyphen character bypass) to trick Web Application Firewalls (WAFs) and bypass simple string filters.

allow_url_include=1 (Enabling Remote Streams):
This directive forces PHP to allow including external wrappers and URLs. By default, this is disabled in secure PHP installations to prevent code execution via remote resources.

auto_prepend_file=php://input (Payload Execution):
This directive instructs PHP to automatically include and execute a file before processing the requested web page. By setting it to php://input, PHP is forced to read and execute whatever raw PHP code the attacker sends in the HTTP POST request body.

💥 Impact
Severity: CRITICAL

Type: Remote Code Execution (RCE)

If successful, the attacker can execute arbitrary PHP or system commands on your server with the privileges of the web server process (e.g., www-data).

🛡️ Mitigation & Prevention
Update PHP: Ensure you are using a patched and supported version of PHP.

Move Away from PHP-CGI: Switch from php-cgi to PHP-FPM (FastCGI Process Manager) or FastCGI handlers.

WAF Rules: Implement WAF or Nginx/Apache rewrite rules to block incoming queries containing command-line directives like -d, %2dd, or %ADd.
Author: KhelafDate: 2026-08-01 13:37:05
Blog N° 28

AJAX

AJAX est l\'acronyme de Asynchronous JavaScript And XML (même si aujourd\'hui on utilise pratiquement toujours du JSON à la place du XML).

Pour le dire très simplement : C\'est la technologie qui permet d\'échanger des données avec le serveur en arrière-plan, sans recharger la page web.
Author: AhnizTechDate: 2026-07-31 17:38:42
Blog N° 27

Supervised Learning labeled data

Well, the data set with past house sales transactions contained both known prices and features of the

homes.

We didn\'t merely highlight home features.

This is an example of supervised learning too, but it\'s used for prediction, also called a regression

problem.

When a user inputs the characteristics of a new home into the app, the app predicts the new home\'s

price based on its features and historical information for similar homes.

So, simply put, in supervised learning, we explicitly train the model with known outputs to guide

its learning.
Author: AhnizTechDate: 2026-07-12 13:59:19
Blog N° 26

You hit the hits limit ( technic)

Un \"hit\" (parfois traduit par \"requête\" ou \"appel\") est une unité de mesure technique très précise.

Contrairement à une \"visite\" (une personne qui vient sur votre site), un hit représente chaque fichier individuel que le serveur doit envoyer pour afficher une page.

Voici comment ça fonctionne concrètement :
Quand un habitant de votre district ouvre la page d\'accueil de votre portail Tizi Tifra, le serveur ne compte pas \"1\". Il compte :

1 hit pour le fichier HTML.

1 hit pour le fichier CSS (le style).

1 hit pour chaque image présente sur la page (si vous avez 10 photos d\'archives, ça fait 10 hits).

1 hit pour chaque script JavaScript.

Résultat : Une seule visite d\'une minute sur une page riche en photos peut générer 40 ou 50 hits à elle seule.

Pourquoi InfinityFree compte les hits et pas seulement les visiteurs ?
Parce que chaque hit consomme des ressources sur leur serveur (processeur et mémoire).

Si vous avez un site très léger (juste du texte), 50 000 hits correspondent à beaucoup de visiteurs.

Si vous avez un site très lourd (beaucoup d\'images haute définition, beaucoup de scripts), vous atteindrez la limite de 50 000 hits très rapidement, même avec peu de visiteurs.
Author: Hanifi KhelafDate: 2026-04-02 16:33:36
Blog N° 25

Adguard DNS privé

Pour supprimer la majorité des publicités et des fenêtres surgissantes (pop-ups) sur votre smartphone, vous pouvez utiliser un DNS Privé.
​C\'est quoi ?
​C\'est un filtre intelligent : lorsqu\'un site ou une application tente d\'afficher une publicité, le serveur bloque la connexion avant même que l\'image ou la fenêtre n\'apparaisse.
​Comment l\'activer ?
​Allez dans les Paramètres de votre téléphone.
​Cherchez Connexion et partage (ou tapez \"DNS\" dans la barre de recherche).
​Sélectionnez DNS privé.
​Choisissez l\'option DNS spécifié (ou \"Nom d\'hôte\").
​Tapez l\'adresse : dns.adguard.com
​Enregistrez.
​Les avantages
​✅ Stop aux pubs : Nettoie les navigateurs et les applications gratuites.
​✅ Économie : Moins de données consommées et gain de batterie.
​✅ Discret : Aucune application à installer, ne ralentit pas le téléphone.
Author: AhnizTech Date: 2026-03-29 13:17:06
Blog N° 24

Losanges bizarres symbol ï

<?php
mysqli_set_charset($conn, \"utf8mb4\");(Ajoute cette ligne juste avant ta requête)
$query_photos = \"SELECT * FROM village_photos WHERE statut = \'valide\' ORDER BY date_soumission DESC\";

C\'est exactement là qu\'il fallait le placer. En déclarant le utf8mb4 juste avant de lancer la requête, tu forces PHP à sortir les données de la table avec le bon \"alphabet\", ce qui évite au navigateur de paniquer et de remplacer les ï ou les é par des losanges bizarres.
Author: Hanifi KhelafDate: 2026-03-09 14:59:00
Blog N° 23

stack Full-Stack (Node.js, Express, PostgreSQL, Bcrypt, EJS) in RHEL

stack Full-Stack (Node.js, Express, PostgreSQL, Bcrypt, EJS) sur ta machine Red Hat. Voici ton résumé global structuré pour servir de guide de référence lors de ton passage sur un futur VPS.

📂 1. Hiérarchie Standard du Projet
C\'est la structure indispensable pour que Node.js et Express trouvent tes fichiers :

⚙️ 2. Configuration Technique (Checklist)
Pour qu\'un VPS fonctionne comme ta VM actuelle, vérifie ces points :

Le Fichier package.json : Doit contenir \"type\": \"module\" pour utiliser les import.

Les Dépendances : express, pg (PostgreSQL), bcrypt (sécurité), ejs (moteur de template) et body-parser (lecture des formulaires).

Base de Données : Ta table users doit avoir un champ email UNIQUE et un champ password TEXT pour stocker les hachages Bcrypt.

🛡️ 3. Sécurité : Le Concept Bcrypt
C\'est ce que tu as implémenté avec succès :

Register : On ne stocke jamais le mot de passe en clair. On utilise bcrypt.hash() pour créer une empreinte numérique.

Login : On récupère l\'utilisateur par son email, puis on utilise bcrypt.compare() pour vérifier si le mot de passe saisi correspond au hachage en base.

🚀 4. Commandes de Secours (Terminal)
Garde ces commandes précieusement pour relancer ton projet sur un VPS après un reboot :

💡 Prochaine étape pour ton VPS
Sur un vrai serveur exposé sur internet, tu ne devras plus utiliser localhost mais configurer un Reverse Proxy (avec Nginx) et utiliser PM2 pour que ton application reste allumée 24h/24 même si tu fermes ton terminal.
Author: Hanifi KhelafDate: 2026-03-05 15:06:23
Blog N° 22

iLOT 4 Proliant

IPMI fonctionne de manière similaire à iLO (Integrated Lights-Out) sur les serveurs HP ProLiant. iLO est en fait une implémentation propriétaire d’HP basée sur le concept IPMI, offrant des fonctionnalités avancées de gestion à distance comme le contrôle du serveur, le redémarrage, la surveillance matérielle, et l’accès à la console même quand le système d’exploitation ne répond pas. Donc, IPMI est le standard général, et iLO est la version spécifique d’HP avec des options souvent plus complètes. Si vous utilisez un serveur HP ProLiant, vous interagirez généralement via iLO pou
Author: Hanifi KhelafDate: 2025-11-11 20:21:15
Blog N° 21

IPMI (Intelligent Platform Management Interface)

IPMI (Intelligent Platform Management Interface) est un protocole standard qui permet aux administrateurs de gérer et surveiller un serveur à distance, même si le système d’exploitation est éteint, planté ou non installé. Grâce à IPMI, on peut accéder à des fonctions comme le redémarrage du serveur, la surveillance des températures, des tensions, ou encore la gestion des logs matériels, via une interface réseau dédiée. Cela se fait indépendamment du système d’exploitation principal, ce qui est très utile pour la maintenance et le dépannage à distance. Si vous voulez, je peux vous expliquer comment accéder ou utiliser l’IPMI sur votre serveur.
Author: Hanifi KhelafDate: 2025-11-11 20:03:22
Blog N° 20

IPMI

IPMI
Author: Hanifi KhelafDate: 2025-11-11 20:02:26
Blog N° 19

Pediatric Neurology (Neuropédiatrie)

Dr. Neuropédiatre SMAILI (Epse HANIFI) is a specialist in Pediatric Neurology in Algeria, practicing in Mohammadia, Algiers.
​Here are some details found:
​Specialty: Pediatric Neurology (Neuropédiatrie)
​Location: Cité 632 Logts Bt 49 Cabinet N°5 Mohammadia, Alger.
​Contact (Mobile): 0796 29 29 50
​Contact (Landline): 020 41 33 16
​Email: neuroped.smaili@gmail.com
​Services include: Consultation, follow-up, and specific exams like EEG (Electroencephalography) and management of various neurological conditions in children (epilepsy, developmental delay, etc.).
Author: Dr. SMAILI Date: 2025-10-22 17:49:11
Blog N° 18

PostgreSQL

PostgresSQL it is widely used by many of the top companies that you would have heard of, like, Apple, or Twitch, or Instagram, and even NASA uses Postgres to manage their data.
Author: Hanifi khelafDate: 2025-10-17 14:54:53
Blog N° 17

PostgreSQL

PostgresSQL it is widely used by many of the top companies that you would have heard of, like, Apple, or Twitch, or Instagram, and even NASA uses Postgres to manage their data.
Author: Hanifi khelafDate: 2025-10-17 14:50:42
Blog N° 16

Noble Einstein

1917 cosmologie scientifique. 1919
1921 le prix noble .
Author: Einstein Date: 2025-10-16 23:41:40
Blog N° 15

Espace relatif

Le temps est relatif... La simultanéité distance et vitesse de la lumière. He had 1905... La théorie de relativité restreinte E= MC2 toute masse se transforme en énergie et et toute énergie transforme en masse. À 30 ans. Something is wrong. La vitesse annule la gravité assenceur grande vitesse vous flotter. 1909 la théorie relativité générale. Radioactivité...
Author: Einstein Date: 2025-10-16 23:30:01
Blog N° 14

CRUD

Create
Read
Update
Destroy
Author: DBDate: 2025-10-16 20:41:10
Blog N° 13

Dopamine

La dopamine est un neurotransmetteur, c’est-à-dire une molécule chimique qui permet la communication entre les neurones dans le cerveau. Elle joue un rôle crucial dans de nombreuses fonctions cérébrales et corporelles....la
Methamphetamine(meth) fait 6 fois la dopamine extrêmement dangereuse pour le corps elle crée des plis ouverte. ça donne chaud au corps. sous emprisme de cette substance c'est la mort. ces cristaux de meth tue. c'est un pacte avec le diable.
Author: AhnizTech Date: 2025-10-16 18:35:04
Blog N° 12

SQLiteonline

SQLiteonline
Author: General DisclaimersDate: 2025-10-16 16:09:20
Blog N° 11

PATCH a post

// PATCH a post when you just want to update one parameter
app.patch("/posts/:id", (req, res) => {
const post = posts.find((p) => p.id === parseInt(req.params.id));
if (!post) return res.status(404).json({ message: "Post not found" });
if (req.body.title) post.title = req.body.title;
if (req.body.content) post.content = req.body.content;
if (req.body.author) post.author = req.body.author;
res.json(post);
});
Author: Hanifi KhelafDate: 2025-10-15 14:13:11
Blog N° 10

GET HTTP

//Get a random joke
app.get("/random", (req, res) => {
const randomIndex = Math.floor(Math.random() * jokes.length);
res.json(jokes[randomIndex]);
});

//Get a specific joke
app.get("/jokes/:id", (req, res) => {
const id = parseInt(req.params.id);
const foundJoke = jokes.find((joke) => joke.id === id);
res.json(foundJoke);
});

//Filter jokes by type
app.get("/filter", (req, res) => {
const type = req.query.type;
const filteredActivities = jokes.filter((joke) => joke.jokeType === type);
res.json(filteredActivities);
});
Author: Khelaf HanifiDate: 2025-10-15 13:47:48
Blog N° 9

How to properly close a port

nc localhost portNumber
Author: AhnizDigitalDate: 2025-10-15 13:14:39
Blog N° 8

Own-API


import express from "express";

import bodyParser from "body-parser";



const app = express();

const port = 3000;

const masterKey = "4VGP2DN-6EWM4SJ-N6FGRHV-Z3PR3TT";



app.use(bodyParser.urlencoded({ extended: true }));


//Get a random joke

app.get("/random", (req, res) => {

const randomIndex = Math.floor(Math.random() * jokes.length);

res.json(jokes[randomIndex]);

});



//Get a specific joke

app.get("/jokes/:id", (req, res) => {

const id = parseInt(req.params.id);

const foundJoke = jokes.find((joke) => joke.id === id);

res.json(foundJoke);

});



//Filter jokes by type

app.get("/filter", (req, res) => {

const type = req.query.type;

const filteredActivities = jokes.filter((joke) => joke.jokeType === type);

res.json(filteredActivities);

});

Author: Hanifi KhelafDate: 2025-10-15 13:01:55
Blog N° 7

process

compliance
Author: AhnizTechDate: 2025-10-15 12:59:20
Blog N° 6

Array.prototype.forEach()

const array = ["a", "b", "c"];

array.forEach((element) => console.log(element));

// Expected output: "a"
// Expected output: "b"
// Expected output: "c"
Author: AhnizDigitalDate: 2025-10-15 12:59:10
Blog N° 5

Package.json

{
"name": "6.1-blog-api-project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"keywords": [],
"author": "Hanifi Khelaf",
"license": "ISC",
"dependencies": {
"axios": "^1.4.0",
"body-parser": "^1.20.2",
"ejs": "^3.1.9",
"express": "^4.18.2"
}
}
Author: Hanifi khelafDate: 2025-10-15 11:28:35
Blog N° 4

Accounting

Norme IFRS.
Balance sheet.
Income statement.
Accounting ledger.
Author: TouaddiDate: 2025-10-15 10:08:34
Blog N° 3

Data persistence

Now there's a whole bunch of different types of databases, but the main types that you'll hear about is SQL Database and a NoSQL type Database.
SQL stands for Structured Query Language.
Author: Hanifi KhelafDate: 2025-10-14 23:00:19
Blog N° 2

What is Axios?

Axios is a promise-based HTTP Client for node.js and the browser. It is isomorphic (= it can run in the browser and node.js with the same codebase). On the server-side it uses the native node.js http module, while on the client (browser) it uses XMLHttpRequest.
Author: AhnizTechDate: 2025-10-14 19:59:50
Blog N° 1

AI on modern business

AI is eating the world.
Author: Hanifi KhelafDate: 2025-10-14 16:07:22

Thank you for your insightful blog post.