Instalar Forticlient en OMARCHY
Recientemente he instalado OMARCHY en mi laptop. Si subiendome al hype por OMARCHY ya que ahora todos hablan de eso. Pero sin divagar aqui te dejo un procedimiento por si quieres usar forticlient en OMARCHY.
FortiClient VPN - Guía de instalación y configuración en Arch Linux con OMARCHY
1. Instalación del paquete
El paquete forticlient-vpn se instaló desde AUR usando yay:
1
yay -S forticlient-vpn
Esto instala:
- Binarios en
/opt/forticlient/ - CLI:
/usr/bin/forticlient(link simbólico a/opt/forticlient/forticlient-cli) y/usr/bin/fortivpn - Servicio systemd:
/usr/lib/systemd/system/forticlient.service - Desktop entry:
/usr/share/applications/forticlient.desktop - Iconos en
/usr/share/icons/hicolor/ - Configuración en
/etc/forticlient/y/var/lib/forticlient/
2. Servicio systemd
El servicio forticlient.service ejecuta el scheduler principal (fctsched) y los procesos auxiliares (confighandler, firewall):
1
2
systemctl enable forticlient.service --now
systemctl status forticlient.service
Quedó habilitado y corriendo automáticamente al inicio del sistema.
3. IP forwarding
Para que la VPN pueda enrutar tráfico correctamente, se habilitó IP forwarding.
Se creó /etc/sysctl.d/90-forticlient.conf con:
1
net.ipv4.ip_forward = 1
Y se aplicó con:
1
sysctl -p /etc/sysctl.d/90-forticlient.conf
Esto persiste entre reinicios del sistema.
4. Autostart del tray icon en OMARCHY
Para que el icono de FortiClient aparezca en la bandeja del sistema automáticamente al iniciar sesión en Hyprland, se agregó al archivo ~/.config/hypr/autostart.conf:
1
exec-once = /opt/forticlient/fortitraylauncher
El script fortitraylauncher se encarga de lanzar el proceso fortitray que muestra el icono en la bandeja y permite acceso rápido a las funciones de VPN.
5. Wrapper para la GUI (Wayland/GPU)
La GUI de FortiClient está basada en Electron, que tiene problemas con Wayland y GPUs híbridas (Intel + NVIDIA). Para solucionarlo se creó /usr/local/bin/forticlient-gui.
Versión inicial - Forzaba X11 (XWayland) para evitar crashes de GPU, pero causaba problemas de resolución:
1
2
3
export ELECTRON_OZONE_PLATFORM_HINT=x11
unset WAYLAND_DISPLAY
exec /opt/forticlient/gui/FortiClient --disable-gpu --no-sandbox "$@"
Versión actual - Usa Wayland nativo para que la ventana respete la resolución correcta de la pantalla:
1
2
3
4
#!/bin/bash
export ELECTRON_OZONE_PLATFORM_HINT=wayland
export DISPLAY=${DISPLAY:-:0}
exec /opt/forticlient/gui/FortiClient --no-sandbox "$@"
Se actualizó el desktop entry en /usr/share/applications/forticlient.desktop para que use este wrapper:
1
Exec=/usr/local/bin/forticlient-gui
6. Parche para certificado inválido del servidor VPN
La VPN de FortiClient usa un certificado autofirmado o no válido. El cliente FortiClient para Linux tiene un bug: cuando el servidor VPN presenta un certificado inválido, el backend envía el evento FCT_VPN_INVALID_CERTIFICATE vía WebSocket, pero la interfaz Electron no lo maneja (el código está comentado/ausente).
Solución aplicada:
a) Configuración en base de datos (/var/lib/forticlient/config.db):
Se modificaron dos valores:
sslvpn.options.warn_invalid_server_certificate→0(no advertir sobre certificados inválidos)- Se agregó
"ignoreCert":truea la configuración de la conexión VPN
1
2
3
4
5
UPDATE vpn SET value='0'
WHERE config='sslvpn.options.warn_invalid_server_certificate';
UPDATE vpn SET value='[{"description":"","dual_stack":false,"ignoreCert":true,"name":"VPN","prompt_certificate":false,"prompt_username":false,"server":"3.210.180.214:3000","sso_enabled":true,"ui":{"save_username":false},"use_external_browser":false}]'
WHERE config='sslvpn.connections.connection';
b) Parche al código JavaScript (app.asar):
Se modificó el archivo assets/js/bundle.min.js dentro del app.asar de Electron para agregar un manejador al evento FCT_VPN_INVALID_CERTIFICATE. El parche agrega un case en el switch de VpnHandler.HandleVpnEvents() que automáticamente responde con invalid_cert_action: "accept" cuando el backend de VPN notifica un certificado inválido.
Para referencia, el backup del app.asar original se guardó en: /opt/forticlient/gui/resources/app.asar.backup
7. Dependencias verificadas
Se verificó que las dependencias necesarias están presentes:
nss(Mozilla Network Security Services) - instaladolibxcrypt-compat- instaladomodutil- disponibleasar- instalado (solo para el parche)
8. Estado final
Comando para verificar:
- Servicio:
systemctl status forticlient.service→ active (running) - IP forwarding:
cat /proc/sys/net/ipv4/ip_forward→ 1 - CLI:
forticlient vpn status→ Status: Not Running (normal si no hay conexión activa) - Tray corriendo:
ps aux | grep fortitray→ procesos activos
9. Cómo usar
Configurar una VPN (CLI):
1
forticlient vpn edit
Configurar una VPN (GUI):
1
forticlient-gui
Conectar:
1
forticlient vpn connect
Desconectar:
1
forticlient vpn disconnect
Ver estado:
1
forticlient vpn status
