Saltar al contenido principal

Fortinet FortiGate + FortiAP

En el panel, el sitio debe tener el tipo de hardware Fortinet FortiGate (RADIUS).

:::caution FortiGate no es FortiAP Cloud Si el login del huésped va a una URL con post=.../fgtauth&magic=..., el equipo es un FortiGate. Con el tipo FortiAP Cloud el FortiGate rechaza el login sin consultar el RADIUS. Revisa el tipo de hardware del sitio antes que cualquier otra cosa. :::

Valores que necesitas​

Reemplaza los valores entre < >. Los tomas del panel (Sitio → Access points) o te los entrega el equipo de Bitwifi.

ValorQué esEjemplo
<SSID>Nombre del SSID (y de su objeto VAP)CLIENTES-WIFI
<PORTAL_HOST>Host del portal de tu sitioportal.bitwifiapp.com
<API_HOST>Host de la API que usa el portal—
<RADIUS_SERVER>Servidor RADIUS de Bitwifi—
<SECRET>Secret RADIUS del sitio—
<VLAN>VLAN de clientes, solo en modo bridge145
<RED> / <MASCARA> / <GW>Red propia del SSID, solo en modo túnel10.49.0.0 / 255.255.252.0 / 10.49.0.1
<WAN>Interfaz de salida a internet, solo en modo túnelwan1

Aplica todo en el FortiGate. Si es un HA, hazlo en el primario y se sincroniza solo.

1. Servidor RADIUS​

GUI: User & Authentication → RADIUS Servers → Create New. Nombre Bitwifi, servidor <RADIUS_SERVER>, puerto 11812, autenticación PAP. Usa Test Connectivity para comprobarlo. El accounting solo se configura por CLI:

config user radius
edit "Bitwifi"
set server "<RADIUS_SERVER>"
set secret <SECRET>
set radius-port 11812
set auth-type pap
config accounting-server
edit 1
set status enable
set server "<RADIUS_SERVER>"
set secret <SECRET>
set port 11813
next
end
next
end
config user group
edit "Bitwifi-Guest"
set group-type firewall
set member "Bitwifi"
set authtimeout 60
next
end
  • El usuario y la contraseña son la MAC del cliente en minúsculas con :. Bitwifi la registra cuando el huésped completa el portal.
  • Bitwifi envía Session-Timeout y el FortiGate lo aplica como límite duro (hard radius). authtimeout 60 es la inactividad en minutos.
  • El grupo Bitwifi-Guest solo se usa en modo túnel.

Comprobar:

diagnose test authserver radius Bitwifi pap aa:bb:cc:dd:ee:ff aa:bb:cc:dd:ee:ff

Si esa MAC no está registrada, la respuesta esperada es un rechazo: confirma que el servidor contesta. Un timeout indica un problema de red o de secret.

2. Walled garden​

Son los destinos que el huésped puede abrir antes del login. Los objetos se pueden crear en la GUI (Policy & Objects → Addresses, tipo FQDN); la exempt list solo se crea por CLI.

config firewall address
edit "bitwifi-portal"
set type fqdn
set fqdn "<PORTAL_HOST>"
next
edit "bitwifi-api"
set type fqdn
set fqdn "<API_HOST>"
next
edit "bitwifi-assets"
set type fqdn
set fqdn "assets.bitwifiapp.com"
next
edit "fonts-googleapis"
set type fqdn
set fqdn "fonts.googleapis.com"
next
edit "fonts-gstatic"
set type fqdn
set fqdn "fonts.gstatic.com"
next
edit "dns-google-1"
set subnet 8.8.8.8 255.255.255.255
next
edit "dns-google-2"
set subnet 8.8.4.4 255.255.255.255
next
end
config firewall addrgrp
edit "bitwifi-walled-garden"
set member "bitwifi-portal" "bitwifi-api" "bitwifi-assets" "fonts-googleapis" "fonts-gstatic" "dns-google-1" "dns-google-2"
next
end
config user security-exempt-list
edit "bitwifi-walled-garden"
config rule
edit 1
set dstaddr "bitwifi-walled-garden"
set service "ALL"
next
end
next
end
  • Crea los objetos antes del grupo. Si un miembro no existe, FortiOS muestra entry not found in datasource y descarta el bloque.
  • No agregues YouTube, Google, gstatic.com en general ni googleusercontent.com. Comparten IPs con connectivitycheck.gstatic.com; Android cree que ya tiene internet y no abre el portal.
  • Si Android sigue sin abrir el portal, quita también fonts-googleapis y fonts-gstatic.
  • FortiGate no admite comodines en FQDN, así que el login con Facebook o Instagram es limitado. Revisa Walled garden.

Comprobar:

show user security-exempt-list bitwifi-walled-garden
diagnose firewall fqdn list-v4

3. SSID​

Elige un modo según el sitio.

Opción A: túnel con red propia (recomendada)​

El FortiGate aplica el portal y el SSID se vuelve una interfaz con su propia red. En un SSID existente, pon portal-type auth antes de local-bridging disable.

config wireless-controller vap
edit "<SSID>"
set ssid "<SSID>"
set security captive-portal
set portal-type auth
set selected-usergroups "Bitwifi-Guest"
set external-web "https://<PORTAL_HOST>/"
set security-exempt-list "bitwifi-walled-garden"
set security-redirect-url "https://<PORTAL_HOST>/"
set local-bridging disable
set intra-vap-privacy enable
next
end
config system interface
edit "<SSID>"
set ip <GW> <MASCARA>
set allowaccess ping
next
end
config system dhcp server
edit 0
set interface "<SSID>"
set default-gateway <GW>
set netmask <MASCARA>
set dns-service specify
set dns-server1 8.8.8.8
set dns-server2 8.8.4.4
set lease-time 3600
config ip-range
edit 1
set start-ip <PRIMERA_IP>
set end-ip <ULTIMA_IP>
next
end
next
end
config firewall policy
edit 0
set name "<SSID>-Internet"
set srcintf "<SSID>"
set dstintf "<WAN>"
set srcaddr "all"
set dstaddr "all"
set action accept
set schedule "always"
set service "ALL"
set nat enable
next
end
  • El login se envía a https://<GW>:1000/fgtauth. Si aparece un aviso de certificado, desactiva HTTPS en la autenticación:

    config user setting
    set auth-secure-http disable
    end
  • La policy no lleva grupos: el portal se aplica en el SSID.

Opción B: bridge (el tráfico sale por una VLAN del switch)​

El FortiAP aplica el portal. Solo portal-type external-auth admite el portal externo junto con la exempt list; con portal-type auth en bridge sale command parse error.

config wireless-controller vap
edit "<SSID>"
set ssid "<SSID>"
set security captive-portal
set portal-type external-auth
set external-web "https://<PORTAL_HOST>/"
set radius-server "Bitwifi"
set radius-mac-auth disable
set security-exempt-list "bitwifi-walled-garden"
set security-redirect-url "https://<PORTAL_HOST>/"
set local-bridging enable
set vlanid <VLAN>
set intra-vap-privacy enable
next
end
  • Si vlanid está mal o queda en 0, los clientes no reciben IP: Windows muestra 169.254.x.x y Android se queda en "Obteniendo dirección IP".
  • El login se envía a http://<IP-portal-del-AP>:2092/fgtauth, dentro de la VLAN de clientes. Si no conecta, usa la opción A.
  • Para revisar el portal en el propio FortiAP: fapportal_diag -d intf.

Si el SSID es nuevo​

Asígnalo al perfil de los APs: WiFi & Switch Controller → FortiAP Profiles → el perfil → SSIDs (Manual). Por CLI, revisa los perfiles con show wireless-controller wtp-profile y en la radio que corresponda agrega append vaps "<SSID>".

4. Diagnóstico​

Qué revisarComando
Configuración del SSIDshow wireless-controller vap <SSID>
Clientes conectadosget wireless-controller wtp-status
Leases DHCP (solo túnel)execute dhcp lease-list <SSID>
Usuarios autenticados (deben salir con hard radius)diagnose firewall auth list

Debug del RADIUS:

diagnose debug application fnbamd -1
diagnose debug enable

Al terminar:

diagnose debug disable
diagnose debug reset

Notas de la CLI de FortiOS: grep acepta un solo patrón y no tiene -e; si un next falla se descarta toda la edición; abort sale sin guardar.