Jump to content
Калькуляторы

Коммутатор автоматическое отключение абонента серверные решения

Видел в интернете статью, там на коммутатор Сisco настроены acl, суть этих acl в том что когда у абонента отрицательный баланс, то коммутатор перекидывает абонента в другую подсеть, и у абонента нет доступа к ресурсам сети, но статью эту потерял и найти пока смог, может кто подскажет насчёт этого решения

Share this post


Link to post
Share on other sites

это специальный коммутатор-телепат, циско над ним долго работала, но наконец-то сделали.

Коммутатор-телепат уже на будущее знает какой абонент подключен к какому порту и когда точно его нужно выключить. Всё просто :)

 

Даже крупные операторы связи уже вовсю используют такие решения:

X475Du63.jpg

Edited by terrible

Share this post


Link to post
Share on other sites

Видел в интернете статью, там на коммутатор Сisco настроены acl, суть этих acl в том что когда у абонента отрицательный баланс, то коммутатор перекидывает абонента в другую подсеть, и у абонента нет доступа к ресурсам сети, но статью эту потерял и найти пока смог, может кто подскажет насчёт этого решения

guest vlan ?

Share this post


Link to post
Share on other sites

у меня при постановке в паузу клиента отрабатывает ACL на доступе и клиент может общаться только с сервером... там впринципе свой чат, сайт и тп.. но зато никакой локалки и инета.

Share this post


Link to post
Share on other sites

Коммутатор-телепат уже на будущее знает какой абонент подключен к какому порту и когда точно его нужно выключить.

Да врёте вы всё, на картинке все провода подписаны! %)

Share this post


Link to post
Share on other sites
Коммутатор-телепат уже на будущее знает какой абонент подключен к какому порту и когда точно его нужно выключить.
Да врёте вы всё, на картинке все провода подписаны! %)

а это коммутатор сам подписал, когда вы спали :)

Share this post


Link to post
Share on other sites

Недавно создавал топик на данную тему, если кому надо - набыдлокоженное на коленке, для UTM5 RFW, правда, но, думаю, переписать можно под что угодно. Да, для D-Link.

 

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
import sys
import MySQLdb

cfg_db_user = 'XXX'
cfg_db_pass = 'XXX'
cfg_vci_db_name = 'virtual_circuit_data'
cfg_utm_db_name = 'XXX'
cfg_db_host = 'XXX'
cfg_snmp_community = 'XXX'

# Connect to MySQL database to fetch user's virtual circuit information
vci_db = MySQLdb.connect(cfg_db_host, cfg_db_user, cfg_db_pass, db=cfg_vci_db_name).cursor()
utm_db = MySQLdb.connect(cfg_db_host, cfg_db_user, cfg_db_pass, db=cfg_utm_db_name).cursor()

utm_db.execute('SELECT ip_group_id FROM ip_groups WHERE ip = inet_aton("%s") AND is_deleted = 0;' % sys.argv[4])
ip_group_id = int(utm_db.fetchone()[0])

utm_db.execute('SELECT id FROM iptraffic_service_links WHERE ip_group_id = %i and is_deleted = 0;' % ip_group_id)
id = int(utm_db.fetchone()[0])

utm_db.execute('SELECT user_id FROM service_links WHERE id = %i and is_deleted = 0;' % id)
user_id = int(utm_db.fetchone()[0])

utm_db.execute('SELECT login FROM users WHERE id = %i and is_deleted = 0;' % user_id)
login = utm_db.fetchone()[0]

try:
    vci_db.execute('SELECT vc_circuit_building, vc_circuit_number, vc_circuit_id FROM vc_circuit_id WHERE vc_circuit_username = "%s";' % login)
    vc_circuit_building, vc_circuit_number, vc_circuit_id = vci_db.fetchone()
    os.system("echo %s/%s:%s: done >> /tmp/log" % (vc_circuit_building, vc_circuit_number, vc_circuit_id))
except:
    sys.exit(0)

vci_db.execute('SELECT vc_remote_id FROM vc_remote_id WHERE vc_remote_building = "%s" AND vc_remote_number = "%s";' % (vc_circuit_building, vc_circuit_number))
vc_remote_id = vci_db.fetchone()[0]

vci_db.execute('SELECT vc_circuit_username FROM vc_circuit_id WHERE vc_circuit_building = "%s" AND vc_circuit_number = "%s" AND vc_circuit_id = "%s";' % (vc_circuit_building, vc_circuit_number, vc_circuit_id))

if len(vci_db.fetchall()) > 1:
    os.system("echo %s/%s:%s: port is a hub! >> /tmp/log" % (vc_circuit_building, vc_circuit_number, vc_circuit_id))
    sys.exit(0)

# Get proper Internet VLAN ID using SNMP through VLAN name
internet_vid = int(os.popen('snmpwalk -v2c -c %s %s 1.3.6.1.2.1.17.7.1.4.3.1 | grep INTERNET_0 | cut -d " " -f1 | cut -d "." -f9' % (cfg_snmp_community, vc_remote_id)).read())

if sys.argv[2] == '1':
    vlan_id = internet_vid
else:
    vlan_id = 4000

# Update PVID
os.system('snmpset -v2c -c %s %s 1.3.6.1.2.1.17.7.1.4.5.1.1.%i u %i' % (cfg_snmp_community, vc_remote_id, vc_circuit_id, vlan_id))

# Update port description
os.system('snmpset -v2c -c %s %s 1.3.6.1.2.1.31.1.1.1.18.%i s %s' % (cfg_snmp_community, vc_remote_id, vc_circuit_id, login))

# Save settings to NVRAM
os.system('snmpset -v2c -c %s %s 1.3.6.1.4.1.171.12.1.2.6.0 i 3' % (cfg_snmp_community, vc_remote_id))

 

Да, не буду даже отрицать, что костыль :)

Edited by GFORGX

Share this post


Link to post
Share on other sites

Ничего смешного, это реально, в магнитогорске у провайдера реализовано, коммутатор работает по радиусу с билингом, при отрицательном балансе абонент перемещается в другую подсеть, там dhcp присваивает другой ip адрес ему, и ему ничего недоступно кроме личного кабинета, а при положительном, получает ip из рабочей сети и доступ к ресурсам, скореe всего guest vlan и acl эти правила организуют, статья есть полная найти бы её там описано создание vpn сервера и настройка cisco коммутатора, вообщем полезная штука, хотя организовать и на d-link можно тоже.

Edited by alexaaa

Share this post


Link to post
Share on other sites

Ключевое слово "БИЛЛИНГ", т.е. не коммутатор принимает решение, а биллинг решает что абонент в минусе и переводит его в hold.

У уж как это сделать, на коммутаторе или просто переместить его IP из таблицы в таблицу - не принципиально.

Share this post


Link to post
Share on other sites

Биллинг отключает только интернет, а локальная сеть доступна, да и полностью отключить абонента от коммутатора приходиться физически, а если неотключать, то абонент локальной сетью пользуется, тут и конфликт адреса и замыкание на порту может быть.

Share this post


Link to post
Share on other sites

Ничего смешного, это реально, в магнитогорске у провайдера реализовано, коммутатор работает по радиусу с билингом, при отрицательном балансе абонент перемещается в другую подсеть, там dhcp присваивает другой ip адрес ему, и ему ничего недоступно кроме личного кабинета, а при положительном, получает ip из рабочей сети и доступ к ресурсам, скореe всего guest vlan и acl эти правила организуют, статья есть полная найти бы её там описано создание vpn сервера и настройка cisco коммутатора, вообщем полезная штука, хотя организовать и на d-link можно тоже.

в лучшем случае в отдельный влан переводят (как вариант 802.1х + гвест влан или WAC (web auth) + гвест влан)- а скорее просто выдают адрес из другой подсети при негативном балансе и тд ! которая к локальным ресурсам доступ имеет а к миру - нет - и коммутатор тут тогда можна сказать ни причём! как вариант последней схемы - адрес могут выдавать тот же но на шейпере не пропускать в мир!

Edited by Lynx10

Share this post


Link to post
Share on other sites
Биллинг отключает только интернет, а локальная сеть доступна, да и полностью отключить абонента от коммутатора приходиться физически, а если неотключать, то абонент локальной сетью пользуется, тут и конфликт адреса и замыкание на порту может быть.

Это свидетельствует только о неграмотной настройке биллинга.

Физически отключать абонента точно не нужно, достаточно погасить его порт.

 

З.Ы. Вот если свитчи неуправляемые на доступе, тогда ССЗБ.

Share this post


Link to post
Share on other sites

У нас сделано так (пока в тестовом виде).

 

Есть асимметричный vlan для заблокированных клиентов.

В этом vlan'е есть сервер, который имеет такой же IP, как шлюз клиента.

Все запросы на 53 порт он перенаправляет на себя и возвращает свой IP.

Все запросы на 80 порт он тоже перенаправляет на себя и выдаёт страницу "Дай денег".

 

Костыль к биллингу переносит заблокированных клиентов в этот vlan,

разблокированных возвращает в vlan, которому клиент принадлежит

согласно хранящемуся в биллинге списку подсетей.

Share this post


Link to post
Share on other sites
В этом vlan'е есть сервер, который имеет такой же IP, как шлюз клиента.

1. Все запросы на 53 порт он перенаправляет на себя и возвращает свой IP.

2. Все запросы на 80 порт он тоже перенаправляет на себя и выдаёт страницу "Дай денег".

При наличии второго, зачем первое ?

Share this post


Link to post
Share on other sites

Потому что ДНС тоже недоступен небойсь :))

У нас проще - клиенту без денег выдается IP вида 192.168.х.х

dhcp snooping не позволяет его сменить :)

Все запросы с 192.168 редиректятся на сервер биллинга.

Но включен НАТ для некоторых серверов - платежные системы в основном.

Ну и кредит на сутки раз в месяц доступен бесплатно.

Абонентка списывается ежедневно.

 

Share this post


Link to post
Share on other sites
При наличии второго, зачем первое ?
DNS в блок-vlan'e нужен в любом случае,

т.к. заблокированные клиенты в ответ на DNS-запросы должны получать какие-то ответы,

потому что иначе они вместо страницы "дай денег" получат страницу "DNS-сервер недоступен".

 

Можно было бы настроить на DNS блок-сервера полноценный форвардинг и возвращать настоящие IP,

но проще оказалось настроить вещь в себе, которая на все запросы возвращает IP самого блок-сервера.

Share this post


Link to post
Share on other sites
Можно было бы настроить на DNS блок-сервера полноценный форвардинг и возвращать настоящие IP,

но проще оказалось настроить вещь в себе, которая на все запросы возвращает IP самого блок-сервера.

А ещё бывают супер-пупер модные фаерволы, которые игнорируют TTL dns-записи и могут хранить ответ в своём кеше хоть неделю. Лучше всё-таки отдавать ставить dns, который будет отдавать настоящие IP, но трафик направлять на фейковый сервер, который будет переадресовывать все http-адресы, прикидываясь всеми IP адресами сразу. Единственный потенциальный минус такого решения - dns-тунели, но в принципе таких абонентов можно вычислять и что-нибудь предпринимать в их отношении.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this