Saltar al contenido principal

Fortinet FortiGate + FortiAP

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

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—
Puertos RADIUSAutenticación y accounting. La guía usa los estándar como ejemplo; usa los que te entregue Bitwifi1812 / 1813
<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 de autenticación (en el ejemplo, 1812), 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 1812
set auth-type pap
config accounting-server
edit 1
set status enable
set server "<RADIUS_SERVER>"
set secret <SECRET>
set port 1813
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.