Post

Instalar Forticlient en OMARCHY

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_certificate0 (no advertir sobre certificados inválidos)
  • Se agregó "ignoreCert":true a 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) - instalado
  • libxcrypt-compat - instalado
  • modutil - disponible
  • asar - 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

La GUI también se puede abrir desde el menú de aplicaciones como “FortiClient”

This post is licensed under CC BY 4.0 by the author.