Jump to content

Recommended Posts

Posted

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

Posted (edited)

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

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

 

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

X475Du63.jpg

Edited by terrible
Posted

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

guest vlan ?

Posted

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

Posted

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

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

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

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

Posted (edited)

Недавно создавал топик на данную тему, если кому надо - набыдлокоженное на коленке, для 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
Posted (edited)

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

Edited by alexaaa
Posted

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

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

Posted

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

Posted (edited)

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

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

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

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

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

 

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

Posted

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

 

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

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

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

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

 

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

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

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

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

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

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

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

Posted

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

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

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

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

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

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

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

 

Posted
При наличии второго, зачем первое ?
DNS в блок-vlan'e нужен в любом случае,

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

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

 

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

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

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

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.