Jump to content

Recommended Posts

Posted

Возник такой вопрос.

Есть пользователи, получают доступ в интернет по PPPoE (через Ericsson SE100).

Я хочу сделать так, чтобы после успешной авторизации на DNS-сервере автоматически создавалась/обновлялась A-запись, соответствующая выданному IP-адресу.

Не посоветуете, в какую сторону смотреть?

Posted

Сливать копию аккаунтинга на вспомогательный радиус-сервер, парсить его и делать upsert'ы в БД, например можно использовать powerdns с БД в качестве бэкэнда. bind9 с каких-то версий тоже вроде бы умеет использовать БД как бэкэнд

Posted

Откуда DNS будет брать данные (БД или текстовый файл) — это отдельный вопрос.

В крайнем случае можно файлы зон генерировать и через rndc обновлять.

Но вот как лучше брать информацию по сессиям (лучше чем получать список сессий с BRAS или RADIUS)?

В идеале хотелось бы, чтобы нужные обновления в зонах присылал BRAS или RADIUS.

Posted

Но вот как лучше брать информацию по сессиям (лучше чем получать список сессий с BRAS или RADIUS)?

 

Получить список сессий это неэффективный алгоритм(не очень быстрый). Оптимальный вариант парсить копию радиус аккаунтинга. Если это для вас сложно, то тогда лучше брать список сессий с радиус-сервера, чтобы не грузить CPU браса постоянными запросами на получение списка сессий.

Posted

Оптимальный вариант парсить копию радиус аккаунтинга.

Не поясните, что под этим подразумевается?

Зеркалировать трафик на вспомогательный радиус-сервер?

Или на BRAS добавить второй радиус-сервер (вспомогательный), который не будет отвечать?

 

то тогда лучше брать список сессий с радиус-сервера

Да, в принципе на такое я изначально и ориентировался.

Posted

Ну SE100 не умеет слать 2 одинаковых радиус пакета в 2 стороны. Я уже сталкивался с таким. Писали программку которая клонирует радиус на 2 разных сервера. Одна для работы с биллингом, вторая для SCE и скриптов своих. Думаю вам тоже подойдет такой вариант. Написать програмку на си которая слушает порт радиуса и пересылает в 2 стороны не сложно. Скриптом выбирать старт сессии, а дальше как это скрестить с днсом уже ваша фантазия. Можно править файлы бинда и релоадить конфиги. Можно как сказали с бекендом который можно исполльзовать в виде pnds, можно самим опять же накалякать програмку которая будет апдейты бинду слать. То есть полет фантазии тут очень большой, а на что хватит ваших знаний вам решать уже.

Posted

Ну SE100 не умеет слать 2 одинаковых радиус пакета в 2 стороны. Я уже сталкивался с таким. Писали программку которая клонирует радиус на 2 разных сервера. Одна для работы с биллингом, вторая для SCE и скриптов своих. Думаю вам тоже подойдет такой вариант. Написать програмку на си которая слушает порт радиуса и пересылает в 2 стороны не сложно

 

Не нужно изобретать велосипед. Есть 2 нормальных варианта(если брас не умеет слать копию аккаунтинга):

1. Зеркало порта(span) на коммутаторе. Не всегда возможно, особенно когда на свитче одна сессия и она занята

2. iptables ... -j TEE - зеркалировать на уровне ядра с основного сервера на вспомогательный

Posted

Спан это круто, а если кроме радиуса есть еще чтото...

 

iptables хороший вариант, но дальше то все равно придется изобретать велосипед который будет разгребать запросы радиуса. Можно и мой вариант использовать. Хотя конечно iptables очень даже не плохой.

 

 

А RB SE100 копии слать не умеет, только перепрыгнуть с одного на другой если первый отвалился.

Posted

iptables хороший вариант, но дальше то все равно придется изобретать велосипед который будет разгребать запросы радиуса.

 

зеркалирование трафика и парсинг это 2 независимые задачи и чем меньше будет велосипедов, тем меньше геморроя в будущем, поэтому iptables -j TEE однозначно лучше, чем ваше самописное ПО на C. Единственный минус -j TEE это то, что его нет в старых ядрах(типа rhel6), а менять ядро на боевом радиус-сервере мало кто захочет

 

по поводу парсинга и вливку в БД - с помощью freeradius это будет почти всё штатно.

хотя программисту будет проще написать мелкий демон с готовой библиотекой для парсинга radius, чем разбираться с таким монстром как freeradius, но опять же лишние велосипеды никому не нужны

Posted

Демон фрирадиуса еще и слишком большой для такой простой задачи как парсинг запросов простой. И уж каких велосипедов ток не видел. Этот работает проще и безотказней всего уже давно.

Posted

Понятно.

Если кто похожую задачу решал, не подскажите, как лучше сделать?

RADIUS у меня работает на виртуальном сервере (гость RedHat, хост FreeBSD).

Где лучше зеркалировать трафик, на госте или на хосте?

Posted

Можно вопрос... А зачем это делать?

Почему бы как все люди не сформировать заранее все записи для ваших динамических пулов или не написать скрипт в 10 строк для powerdns на perl.

Posted

Почему бы как все люди не сформировать заранее все записи для ваших динамических пулов

Какие записи? У пользователей динамические IP-адреса.

Posted

z-y-x-x.pool.supernet.net

Да + PTR, а для особо отчаянных есть еще DynDNS, если надо делать привязку somedomain.com -> dynamic-ip. И это уже совсем не ваш головняк...

Posted

z-y-x-x.pool.supernet.net

И что?

Сегодня пользователю vasya выдали IP-адрес 1.2.3.4, а завтра выдали 1.2.3.5.

А ему нужно постоянное имя, например vasya.pool.supernet.net.

Собственно я хочу сделать аналог DDNS, только с автоматической регистрацией и с привязкой к логину.

Posted (edited)

Можно и на бинде реализовать

 

//Net a.b.c.d/24
$GENERATE 0-255  $.c.b.a.in-addr.arpa.     IN      PTR     a-b-c-$.dynamic.mega.net.

 

Пример для bind9 ( named ) для PTR. Думаю для A записей сварганить проблемой не будет.

Edited by HackerDeath
Posted

А ему нужно постоянное имя, например vasya.pool.supernet.net.

Собственно я хочу сделать аналог DDNS, только с автоматической регистрацией и с привязкой к логину.

Очевидно, что кто ясно мыслит, тот ясно излагает. А то, что вы изначально заявили, мы Вам выше расписали. А реализация DynDNS, это уже другая история... Опять же делается на PowerDNS легко, для этого достаточно хранить MAC и DNS name, и любой поток данных MAC-IP или же аналогичный. Опять же, обычно, нормальные сети в этом случае делают ему статик ip и все, аякталды. Работай на здоровье и плати деньги за статику.

Posted

Ну если вы хотите раздавать какие то уникальные. То как уже выше вам описывали все, так и делайте. Если сам не знаете как, найдите человека кто это реализует за отдельную плату.

Posted

для этого достаточно хранить MAC и DNS name

Причем тут MAC?

Мне нужно автоматически создавать записи в DNS: A-запись <login>.pool.domain.tld -> <ip> и (опционально) PTR-запись <ip> -> <login>.pool.domain.tld. A-запись вида <ip>.pool.domain.tld -> <ip> смысла не имеет. Необходимости в статике также нет.

 

А реализация DynDNS, это уже другая история...

Мне не нужен DynDNS. Я его в пример привел только потому, что он предоставляет схожий результат.

 

То как уже выше вам описывали все, так и делайте.

Ну да, в сообщении #12 я спрашивал, где лучше снимать копию radius-запросов, а не как эту информацию потом загрузить в DNS.

Posted

Снимать там где это наименее травматично для сети и более безопасно. Как описали выше, у вас ядро позволяет сделать -j TEE? И подумайте где вы будете парсить эти запросы. Если гдето рядом с конечной точкой радиуса, то там. Если в другом месте то наверно на источнике будет лучше.

Posted

Причем тут MAC?

Мне нужно автоматически создавать записи в DNS: A-запись <login>.pool.domain.tld -> <ip> и (опционально) PTR-запись <ip> -> <login>.pool.domain.tld. A-запись вида <ip>.pool.domain.tld -> <ip> смысла не имеет. Необходимости в статике также нет.

А зачем это, если не секрет? Честно говоря, для меня выглядит по-идиотски)

Не, это конечно, прикольная плюшка для 3%-в абонентов с rdesktop-ами, но мне кажется, они бы и за статику заплатили...

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...