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

isg на mpd

А возможно ли реализовать сабж? Погуглил, толком нечего не нашел....у когонить есть информация по данному вопросу?

Share this post


Link to post
Share on other sites

Можно. Купив 7201/asr1002 и поставив его сверху на сервак с выключенным mpd.

Без сервака все равно не обойдетесь.

 

Зачем изобретать велосипед? Нет денег на нормальную железку, поставь рядом сервак с линухом и скажи спасибо пишущим lisg.

Share this post


Link to post
Share on other sites

если прочесть пост

О туннелях (PPPoE, PPTP, L2TP) речи не идет. Делалось для классического IPoE.
а мне хотелось бы PPPoE развернуть :)

Share this post


Link to post
Share on other sites
#!/usr/bin/perl                                                                                  
#
#  /etc/rc.local:
#    /path/to/htredir >> /var/log/htredir.log 2>&1 &
#  Firewall settings:
#    ipfw allow <non-blocked-users>
#    ipfw add 1700 fwd 127.0.0.1,81 tcp from any to any 80 via $lan_nic in
#    ipfw add 1701 allow            tcp from any 80 to any via $lan_nic out
#    ipfw deny all
#
use strict;
use warnings;

use IO::Handle;
use IO::Socket;

my $url = (@ARGV ? shift @ARGV : 'http://labs.homelink.ru/ISG/');

sub tprint {
        my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
        printf("[ %04d.%02d.%02d %02d:%02d:%02d ]  @_\n",
                $year+1900, $mon+1, $mday, $hour, $min, $sec);
}

my $server = IO::Socket::INET->new (
        LocalPort => 81,
        Type      => SOCK_STREAM,
        Reuse     => 1,
        Listen    => 10);

STDOUT->autoflush(1);
tprint("Ready for connections...");

while (my $conn = $server->accept()) {
        tprint("Connected from ".($conn->peerhost() || 'unknown'));
        binmode $conn;
        print $conn "HTTP/1.0 302 Found\nLocation: $url\n\n\n";
        $conn->close();
}

tprint "Done. Error code: $!";

## EOF ##

Share this post


Link to post
Share on other sites
#!/usr/bin/perl                                                                                  
#
#  /etc/rc.local:
#    /path/to/htredir >> /var/log/htredir.log 2>&1 &
#  Firewall settings:
#    ipfw allow <non-blocked-users>
#    ipfw add 1700 fwd 127.0.0.1,81 tcp from any to any 80 via $lan_nic in
#    ipfw add 1701 allow            tcp from any 80 to any via $lan_nic out
#    ipfw deny all
#
use strict;
use warnings;

use IO::Handle;
use IO::Socket;

my $url = (@ARGV ? shift @ARGV : 'http://labs.homelink.ru/ISG/');

sub tprint {
        my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
        printf("[ %04d.%02d.%02d %02d:%02d:%02d ]  @_\n",
                $year+1900, $mon+1, $mday, $hour, $min, $sec);
}

my $server = IO::Socket::INET->new (
        LocalPort => 81,
        Type      => SOCK_STREAM,
        Reuse     => 1,
        Listen    => 10);

STDOUT->autoflush(1);
tprint("Ready for connections...");

while (my $conn = $server->accept()) {
        tprint("Connected from ".($conn->peerhost() || 'unknown'));
        binmode $conn;
        print $conn "HTTP/1.0 302 Found\nLocation: $url\n\n\n";
        $conn->close();
}

tprint "Done. Error code: $!";

## EOF ##

а можно поподробней что это?

Share this post


Link to post
Share on other sites
А возможно ли реализовать сабж? Погуглил, толком нечего не нашел....у когонить есть информация по данному вопросу?

Единого програмного пакета(свободного) аналогичного isg для freebsd пока нет. Можете глянуть в сторону СоА, mpd(начиная с v5.4) давно уже научился его понимать. Если поработать немного напильником, разработать свой captive портал у вас все получится.

Edited by tuneil

Share this post


Link to post
Share on other sites
а можно поподробней что это?
Это утилита, которая запускается на Интернет-шлюзе при старте системы и слушает 81 порт.

Правилами файрволла на неё заворачиваются все запросы на 80 порт от заблокированных клиентов.

Она отвечает на них ссылкой на страницу проверки баланса, ввода пароля и т.д.

 

Или хочется чего-то более продвинутого?

Edited by Ilya Evseev

Share this post


Link to post
Share on other sites

Охото что авторизация была по dhcp opt82 тоесть чтоб инициатором сессии был dhcp пакет, но авторизовывалась pppoe сессия

Share this post


Link to post
Share on other sites
Охото что авторизация была по dhcp opt82 тоесть чтоб инициатором сессии был dhcp пакет, но авторизовывалась pppoe сессия
мудрО!

А если клиентское устройство не использует локалку и не запрашивает сетевые реквизиты по dhcp за ненадобностью, а сразу устанавливает pppoe-соединение?

Ведь для pppoe не требуется иметь IP-адрес, маршруты, dns и всё остальное, что сообщает dhcp.

Кроме того, pppoe при соединении проходит авторизацию.

Вы хотите, чтобы у всех был пустой логин-пароль? Или чтобы логин-пароль мог быть произвольным?

Share this post


Link to post
Share on other sites
Охото что авторизация была по dhcp opt82 тоесть чтоб инициатором сессии был dhcp пакет, но авторизовывалась pppoe сессия
мудрО!

А если клиентское устройство не использует локалку и не запрашивает сетевые реквизиты по dhcp за ненадобностью, а сразу устанавливает pppoe-соединение?

Ведь для pppoe не требуется иметь IP-адрес, маршруты, dns и всё остальное, что сообщает dhcp.

Кроме того, pppoe при соединении проходит авторизацию.

Вы хотите, чтобы у всех был пустой логин-пароль? Или чтобы логин-пароль мог быть произвольным?

да чтож вы все то учить пытаетесь а не ответить на вопрос? :)

Мы реализовали на хорошей циски эту связку, смесл работы ее такой ---- (и это логика будет у нас работать)

Клиент, воткнув кабель в комп посылает DHCP запрос, циска ловит этот запрос и поднимает нулевую сессию и отправляет (выдирая Для уникальности логина авторизации можно его делать из circuitId + remote-id) это на биллинг, если авторизация подтверждена то он гуляет в нете, если нет то его тупо релеет на какой нить хост (портал например)

Так вот вопрос, можно ли это реализовать на MPD

2 Abram Это все что вы знаете о реализации isg на mpd ?? помоемому вам нужно стыдиться а не писать в подобные темы для помощи.

Share this post


Link to post
Share on other sites
Охото что авторизация была по dhcp opt82 тоесть чтоб инициатором сессии был dhcp пакет, но авторизовывалась pppoe сессия
мудрО!

А если клиентское устройство не использует локалку и не запрашивает сетевые реквизиты по dhcp за ненадобностью, а сразу устанавливает pppoe-соединение?

Ведь для pppoe не требуется иметь IP-адрес, маршруты, dns и всё остальное, что сообщает dhcp.

Кроме того, pppoe при соединении проходит авторизацию.

Вы хотите, чтобы у всех был пустой логин-пароль? Или чтобы логин-пароль мог быть произвольным?

да чтож вы все то учить пытаетесь а не ответить на вопрос? :)

Мы реализовали на хорошей циски эту связку, смесл работы ее такой ---- (и это логика будет у нас работать)

Клиент, воткнув кабель в комп посылает DHCP запрос, циска ловит этот запрос и поднимает нулевую сессию и отправляет (выдирая Для уникальности логина авторизации можно его делать из circuitId + remote-id) это на биллинг, если авторизация подтверждена то он гуляет в нете, если нет то его тупо релеет на какой нить хост (портал например)

Так вот вопрос, можно ли это реализовать на MPD

2 Abram Это все что вы знаете о реализации isg на mpd ?? помоемому вам нужно стыдиться а не писать в подобные темы для помощи.

Причем здесь mpd ? mpd это демон для организации различных ppp соединений,

который поддерживает CoA, как и ISG в тунельном режиме

 

То что вы описываете это IPoE c идентификацией по DHCP Opt82, ISG это тоже может

Share this post


Link to post
Share on other sites

Во блин, настроили и сами непоняли что О_о. Дело в том что в биллинге использовалось именно PPPoE. тоесть было и понятие о сессии как таковой, только время жизни определялось логикой биллинга, поэтому я и говорю про пппое

Share this post


Link to post
Share on other sites

Можно сделать ISG на BSD =) mpd выкинуть за ненадобностью, поставить из портов dynamips, объяснить ему, что он 7201 или что-то похожее, настроить ISG. При необходимости апгрейдить процессор, ставить еще железок =)

Share this post


Link to post
Share on other sites

Можно сделать ISG на BSD =) mpd выкинуть за ненадобностью, поставить из портов dynamips, объяснить ему, что он 7201 или что-то похожее, настроить ISG. При необходимости апгрейдить процессор, ставить еще железок =)

а можно поподробней...ссылок чтоль??

Share this post


Link to post
Share on other sites

2 Abram Это все что вы знаете о реализации isg на mpd ?? помоемому вам нужно стыдиться а не писать в подобные темы для помощи.

Я знаю, что MPD - это Multi-link PPP Daemon. А ISG ну извините ниииииикаким раком к PPP не относится, следственно, Ваш вопрос из разряда "решить задачу по экономике с помощью коня, зубила и зубной пасты".

Share this post


Link to post
Share on other sites
print $conn "HTTP/1.0 302 Found\nLocation: $url\n\n\n";

поставьте: "\r\n", не смущайте клиентов.

Share this post


Link to post
Share on other sites
Можно сделать ISG на BSD =) mpd выкинуть за ненадобностью, поставить из портов dynamips, объяснить ему, что он 7201 или что-то похожее, настроить ISG. При необходимости апгрейдить процессор, ставить еще железок =)
а можно поподробней...ссылок чтоль??

> whereis dynamips

dynamips: /usr/ports/emulators/dynamips

http://google.ru

этого должно хватить.

Share this post


Link to post
Share on other sites
Можно сделать ISG на BSD =) mpd выкинуть за ненадобностью, поставить из портов dynamips, объяснить ему, что он 7201 или что-то похожее, настроить ISG. При необходимости апгрейдить процессор, ставить еще железок =)
вы уверены что он более 10-50Мбит прожует?

dynamips разрабатывался для тестирования и лабораторных работ, но никак не для продакшна.

Share this post


Link to post
Share on other sites

не, эмуляторы ну их...буду тогда смотреть в сторону lisg, просто фряха понравилась тем что мало требует системных ресурсов.

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