Alternativa de raio para redes pequenas

imagem

Sabe-se que a autorização de assinantes que usam o protocolo RADIUS na rede da operadora oferece muitas oportunidades - são tarifas que levam em consideração o tráfego, a capacidade de organizar a autorização ao acessar a rede, o Hotspot nas redes Wi-Fi e um grande número de outras coisas difíceis de implementar sem o RADIUS.

Freqüentemente, os operadores usam o RADIUS apenas porque desconhecem outros métodos de autorização ou não correm o risco de usar outra coisa senão o protocolo comum. Nesses casos, todas as vantagens do RADIUS são inúteis devido aos métodos complexos de reserva do servidor ou à sua ausência. Uma desconexão inesperada do faturamento leva à desconexão da Internet dos assinantes durante a operação correta do equipamento de rede.

Portanto, gostaria de falar sobre como o operador de telecomunicações pode evitar a autorização através do protocolo RADIUS em roteadores com o sistema operacional RouterOS (MikroTik). Usaremos o LanBilling 2.0 como um sistema de cobrança, onde o suporte a eventos de ativação, desativação, edição, criação e exclusão de assinantes é implementado. Qualquer sistema com um mecanismo de evento semelhante é adequado para essa função com melhorias.

A interação com o RouterOS ocorre através da API. Primeiro de tudo, você precisa criar um usuário dedicado no roteador, que executará o controle remoto.

Os detalhes de acesso serão os seguintes:
Login: api
Senha: api
Acesso apenas a partir do servidor de cobrança: 192.0.2.2

imagem
A próxima etapa é configurar o firewall, que executará uma parte significativa do trabalho de bloqueio de assinantes e encaminhamento. Para isso, é necessário permitir que todos os assinantes usem os recursos selecionados (servidor DNS externo, site da empresa).

# Acesso total aos recursos selecionados
/ ip firewall filter add chain = forward \
dst-address-list = destinos permitidos \
interface de saída = ether-wan
Além disso, usamos destinos permitidos na lista de endereços. Se necessário, os endereços serão adicionados a ele e as regras do firewall permanecerão as mesmas.
Em seguida, você precisa permitir que os assinantes visitem recursos para pagar pelos serviços. O mecanismo descrito abaixo fornecerá aos assinantes acesso a todos os recursos necessários para o pagamento.
# Bloquear recursos populares desnecessários para pagamento
/ ip firewall layer7-protocol adicionar nome = redes sociais \
regexp = vk.com | mail.ru | ok.ru
# Ignoramos os assinantes no processo de pagamento para https-resources
/ ip firewall filter add chain = forward \
dst-port = 443 \
protocolo layer7 =! redes sociais \
interface de saída = ether-wan \
protocol = tcp \
src-address-list = lista de pagadores
Em seguida, bloqueamos o acesso à Internet para aqueles que não pagaram pelo serviço. No momento do bloqueio, o faturamento adiciona o IP do assinante à lista de endereços bloqueada.
# Inadimplentes de bloqueio
/ firewall firewall filtro add action = rejeitar cadeia = encaminhar \
interface de saída = ether-wan \
rejeitar com = icmp-admin-allowed \
src-address-list = bloqueado

Em seguida, configure o NAT. Isso é necessário para redirecionar os assinantes para uma página com uma notificação sobre os endereços de bloqueio e transmissão dos assinantes para acessar a Internet.

# Nós transmitimos todos os endereços cinza
/ ip firewall nat add action = mesma cadeia = srcnat \
interface de saída = ether-wan mesmo-não-por-dst = yes \
src-address-list = nat-all-abonents \
para endereços = 203.0.113.0 / 26
# Não redirecione para pedir aos que estão em processo de pagamento
/ ip firewall nat add action = aceita cadeia = dstnat \
src-address-list = lista de pagadores
# Encaminhar para o mendigo (192.0.2.3) todos os outros
# não pagadores, sem esquecer os recursos selecionados
/ ip firewall nat add action = cadeia dst-nat = dstnat \
dst-address-list =! destinos permitidos \
protocolo = tcp src-address-list = bloqueado \
para endereços = 192.0.2.3 para portas = 80

As regras listadas acima na cadeia direta são suficientes para fornecer acesso à Internet. Para limitar o acesso ao roteador e fornecer segurança adicional, você pode adicionar várias regras à cadeia de entrada

Após essas manipulações, o roteador pode executar as funções básicas de acesso de assinantes à rede sem a ajuda do RADIUS. A velocidade da tarifa é limitada na fila / simples acordos de cobrança com isso. Os não pagadores são bloqueados automaticamente e suas solicitações são redirecionadas para o site do lembrete. Ao mesmo tempo, os devedores ainda têm acesso a recursos externos selecionados (serviços de pagamento).

Preparamos o faturamento


A preparação do faturamento envolve a criação de scripts para o processamento de eventos para ativar, desativar, criar, excluir e editar a conta do assinante. Usaremos o Lanbilling como exemplo.

imagem

Além disso, você precisa se certificar de que é o agente LBarcd responsável pelas contas.

imagem

Primeiro, mostramos o faturamento de quais scripts e para quais eventos usaremos. Isso é feito alterando os parâmetros no arquivo /etc/billing.conf.LBarcd.

Cada script é chamado com um conjunto específico de parâmetros; para cada script, o conjunto é o mesmo:

login (nome de usuário na conta)
senha (senha de usuário na conta)
segmento (endereço IP da conta)
máscara de rede (Máscara para o endereço IP em notação decimal com pontos. Por exemplo, 255.255.255.255)
limite de taxa (a taxa de taxa para esta conta em Kilobits. Por exemplo, 10240)

O arquivo de configuração de eventos do agente pode ser baixado do repositório no github.
Cada script de processamento de eventos inclui uma biblioteca de funções, que por sua vez usa uma classe PHP para trabalhar com o RouterOS por meio da API. O código fonte de cada script, biblioteca de funções e classe de API está disponível no repositório do github.
Depois de fazer alterações no sistema "config", está pronto para funcionar. Os assinantes que possuem um saldo positivo na conta usam o serviço com calma, e os que não pagam apenas podem usar a rede local e os sites permitidos.
Freqüentemente, o operador precisa fornecer ao assinante a inclusão temporária automatizada de acesso ou preencher a lista de recursos permitidos com IPs de todos os sistemas de pagamento conhecidos.

Para isso, é feita uma pequena edição no código-fonte na conta pessoal do assinante. Outras funções já estão configuradas - lista de endereços lista de pagadores no MikroTik e uma função adicional allow_payment na biblioteca functions.php.

No nosso caso, os pagamentos são aceitos usando o Yandex.Checkout, o que significa que editaremos o arquivo
/usr/local/billing/phpclient/client2/client/components/payment/yandex/Payment_Yandex_Pay.php ao método de processamento para clicar no botão "Pagar" na conta pessoal do usuário.

imagem

Você deve inserir uma linha

file_get_contents (" billing.example.com/tmp_access.php?ip= ". $ _SERVER ["REMOTE_ADDR"]);
antes da linha
$ this-> post ($ params, $ this-> conf ("operatorURL"));
onde billing.example.com é o endereço da interface administrativa da Web do Lanbilling .

Assim, enviamos uma solicitação GET ao nosso script sobre cobrança e, como parâmetro, transferimos o endereço IP do cliente, que está em sua conta pessoal, e clica no botão "Pagar". O conteúdo do script tmp_access.php pode ser visualizado e baixado no github. O script remoto adiciona o endereço IP do assinante à lista de pagadores com tempo limite de 20 minutos, após o qual o assinante, sem problemas, vai a qualquer página para pagamento.

Se o assinante entrar pela Internet móvel, o endereço "esquerdo" da rede móvel entrará na lista, que será excluída automaticamente após 20 minutos. Se o assinante vier do endereço da rede local da operadora, o sistema funcionará conforme prescrito. Na verdade, o mesmo script pode ser inserido na página de aviso de pagamento, onde são colocados o campo para inserir o número do contrato, o valor do pagamento e o botão "Pagar".

Pode-se argumentar com o exposto acima, mas vale a pena levar em consideração o fato de que essa solução não é para redes grandes. Na verdade, como o MikroTik com o RouterOS. Se sua rede não tiver mais de 3 mil assinantes, esse método será o mais adequado.

Preparado por Artyom Deulin

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


All Articles