Alternativa de radio para redes pequeñas

imagen

Se sabe que la autorización de los suscriptores que usan el protocolo RADIUS en la red del operador ofrece muchas oportunidades: estas son tarifas que tienen en cuenta el tráfico, la capacidad de organizar la autorización al acceder a la red, el punto de acceso en redes Wi-Fi y una gran cantidad de otras cosas que son difíciles de implementar sin RADIUS.

A menudo, los operadores usan RADIUS solo porque simplemente desconocen otros métodos de autorización o no corren el riesgo de usar otra cosa que no sea el protocolo común. En tales casos, todas las ventajas de RADIUS quedan en nada debido a los complejos métodos de reserva del servidor o su ausencia. Una desconexión inesperada de la facturación conduce a la desconexión de Internet de los suscriptores durante el correcto funcionamiento del equipo de red.

Por lo tanto, me gustaría hablar sobre cómo el operador de telecomunicaciones puede evitar la autorización a través del protocolo RADIUS en enrutadores con el sistema operativo RouterOS (MikroTik). Utilizaremos LanBilling 2.0 como sistema de facturación, donde se implementa el soporte para eventos de habilitar, deshabilitar, editar, crear y eliminar suscriptores. Cualquier sistema con un mecanismo de evento similar es adecuado para este rol con mejoras.

La interacción con RouterOS ocurre a través de la API. En primer lugar, debe crear un usuario dedicado en el enrutador, que realizará el control remoto.

Los detalles de acceso serán los siguientes:
Inicio de sesión: api
Contraseña: api
Acceso solo desde el servidor de facturación: 192.0.2.2

imagen
El siguiente paso es configurar el firewall, que realizará una parte significativa del trabajo de bloqueo de suscriptores y reenvío. Para esto, es necesario permitir que todos los suscriptores usen recursos seleccionados (servidor DNS externo, sitio web de la compañía).

# Acceso completo a los recursos seleccionados
/ ip firewall filter add chain = forward \
dst-address-list = destinos permitidos \
interfaz de salida = ether-wan
Además, utilizamos la lista de direcciones permitidas-destinos. Si es necesario, se agregarán direcciones y las reglas del firewall seguirán siendo las mismas.
A continuación, debe permitir que los suscriptores visiten los recursos para pagar los servicios. El mecanismo descrito a continuación proporcionará a los suscriptores acceso a todos los recursos necesarios para el pago.
# Bloquear recursos populares innecesarios para el pago
/ ip firewall layer7-protocol add name = redes sociales \
regexp = vk.com | mail.ru | ok.ru
# Saltamos a los suscriptores en el proceso de pago a https-resources
/ ip firewall filter add chain = forward \
dst-port = 443 \
layer7-protocol =! redes sociales \
interfaz de salida = ether-wan \
protocolo = tcp \
src-address-list = lista de pagadores
A continuación, bloqueamos el acceso a Internet para aquellos que no han pagado por el servicio. En el momento del bloqueo, la facturación agrega la IP del suscriptor a la lista de direcciones bloqueadas.
# Bloqueo de morosos
/ ip firewall filter add action = rechazar cadena = reenviar \
interfaz de salida = ether-wan \
rechazar con = icmp-admin-prohibido \
src-address-list = bloqueado

A continuación, configure NAT. Esto es necesario para redirigir a los suscriptores a una página con una notificación sobre el bloqueo y la transmisión de direcciones de suscriptores para acceder a Internet.

# Transmitimos todas las direcciones grises
/ ip firewall nat add action = misma cadena = srcnat \
interfaz de salida = ether-wan same-not-by-dst = yes \
src-address-list = nat-all-abonents \
direcciones a = 203.0.113.0 / 26
# No redirija a mendigar a quienes están en proceso de pago
/ ip firewall nat agregar acción = aceptar cadena = dstnat \
src-address-list = lista de pagadores
# Reenviar al mendigo (192.0.2.3) todos los demás
# no pagadores, sin olvidar los recursos seleccionados
/ ip firewall nat add action = dst-nat chain = dstnat \
dst-address-list =! permisos-destinos \
protocolo = tcp src-address-list = bloqueado \
direcciones de destino = 192.0.2.3 puertos de destino = 80

Las reglas enumeradas anteriormente en la cadena de avance son suficientes para proporcionar acceso a Internet. Para limitar el acceso al enrutador y proporcionar seguridad adicional, puede agregar varias reglas a la cadena de entrada

Después de estas manipulaciones, el enrutador puede realizar las funciones básicas de acceso a suscriptores a la red sin la ayuda de RADIUS. La velocidad de la tarifa es limitada en / cola ofertas de facturación simple con esto. Los no pagadores se bloquean automáticamente y sus solicitudes se redirigen al sitio de recordatorio. Al mismo tiempo, los deudores aún tienen acceso a recursos externos seleccionados (servicios de pago).

Preparamos la facturación


La preparación de la facturación implica escribir scripts para procesar eventos para habilitar, deshabilitar, crear, eliminar y editar la cuenta del suscriptor. Usaremos Lanbilling como ejemplo.

imagen

Además, debe asegurarse de que sea el agente LBarcd el responsable de las cuentas.

imagen

En primer lugar, mostramos en la facturación qué scripts y para qué eventos usaremos. Esto se hace cambiando los parámetros en el archivo /etc/billing.conf.LBarcd.

Cada secuencia de comandos se llama con un conjunto específico de parámetros, para cada secuencia de comandos el conjunto es el mismo:

iniciar sesión (nombre de usuario en la cuenta)
contraseña (contraseña de usuario en la cuenta)
segmento (dirección IP de la cuenta)
máscara de red (máscara para la dirección IP en notación decimal punto. Por ejemplo, 255.255.255.255)
límite de tasa (La tasa de tasa para esta cuenta en kilobits. Por ejemplo, 10240)

El archivo de configuración del evento del agente se puede descargar desde el repositorio en github.
Cada secuencia de comandos de procesamiento de eventos incluye una biblioteca de funciones, que a su vez utiliza una clase PHP para trabajar con RouterOS a través de la API. El código fuente de cada script, biblioteca de funciones y clase API está disponible en el repositorio de github.
Después de realizar cambios en el sistema "config" está listo para funcionar. Los suscriptores que tienen un saldo positivo en la cuenta usan con calma el servicio, y los no pagadores solo pueden usar la red local y los sitios permitidos.
A menudo sucede que el operador necesita poder proporcionar al suscriptor una inclusión temporal automática de acceso, o completar la lista de recursos permitidos con IP de todos los sistemas de pago conocidos.

Para esto, se realiza una pequeña edición en el código fuente en la cuenta personal del suscriptor. Otras funciones ya están configuradas: lista de pagadores, lista de direcciones en MikroTik y una función adicional allow_payment en la biblioteca functions.php.

En nuestro caso, los pagos se aceptan con Yandex.Checkout, lo que significa que editaremos el archivo
/usr/local/billing/phpclient/client2/client/components/payment/yandex/Payment_Yandex_Pay.php al método de procesamiento para hacer clic en el botón "Pagar" en la cuenta personal del usuario.

imagen

Debes insertar una fila

file_get_contents (" billing.example.com/tmp_access.php?ip= ". $ _SERVER ["REMOTE_ADDR"]);
antes de la linea
$ this-> post ($ params, $ this-> conf ("operatorURL"));
donde billing.example.com es la dirección de la interfaz web administrativa de Lanbilling .

Por lo tanto, enviamos una solicitud GET a nuestro script sobre facturación y, como parámetro, transferimos la dirección IP del cliente, que está en su cuenta personal y hace clic en el botón "Pagar". El contenido del script tmp_access.php se puede ver y descargar en github. La secuencia de comandos remota agrega la dirección IP del suscriptor a la lista de pagadores con un tiempo de espera de 20 minutos, después de lo cual el suscriptor sin problemas va a cualquier página para realizar el pago.

Si el suscriptor ingresa a través de Internet móvil, la dirección "izquierda" de la red móvil se incluye en la lista, que se eliminará automáticamente después de 20 minutos. Si el suscriptor proviene de la dirección de la red local del operador, entonces el sistema funcionará según lo prescrito. En realidad, se puede insertar el mismo script en la página de advertencia de pago, donde se coloca el campo para ingresar el número de contrato, el monto del pago y el botón "Pagar".

Se puede discutir lo anterior, pero vale la pena tener en cuenta el hecho de que esta solución no es para redes grandes. En realidad, como MikroTik con RouterOS. Si su red no tiene más de 3 mil suscriptores, entonces este método será el más adecuado.

Preparado por Artyom Deulin

Source: https://habr.com/ru/post/es404563/


All Articles