Сегодня 5 мая, воскресенье ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7272
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Блог обо ВСЕМ
Блог обо ВСЕМ
Голосов: 2
Адрес блога: http://o00.livejournal.com/
Добавлен: 2009-06-05 02:33:22
 

Раздача маршрутов по DHCP

2012-03-27 17:49:37 (читать в оригинале)

Решил оживить ЖЖ техническими постами)

У нас в организации используется PPTP VPN для доступа в интернет, после    подключения к  которому более тысячи машин получают дефолтный маршрут от впн сервера. Так вот чтобы пользователи могли нормально работать и с локальными ресурсами необходимо вручную прописывать маршруты, причем маршруты зависят от подсети т.к. шлюз везде свой.

Решить проблему можно следующими способами:

  1. на этапах установки и настройки прописывать маршруты вручную.
  2. написать логон скрипт и запустить его на доменных машинах.
  3. раздать маршруты по DHCP.

Мы всегда пользовались 1 способом, но из-за того, что инфраструктура просто огромная гибкость этого метода оставляет желать лучшего. 


http://www.ietf.org/proceedings/52/I-D/draft-ietf-dhc-csr-06.txt

К сожалению таким образом не удалось наладить раздачу маршрутов до двух /24 (одной /23) и одной /8 сетей...клиенты отказались принимать такие параметры от DHCP сервера.

Позже было вычитанно что параметр 249 можно передать в виде hex.

Пример:

route 172.172.0.0/21 168.168.168.168
пишем hex:
N байта:  1  2  3  4  5  6  7  8
hex:     15 AC AC 00 A8 A8 A8 A8
описание:
байт 1 - hex маски (21dec -> 15 hex)
байты с 2 по 4 - наша сеть
байты с 5 по 8 - шлюз
Обращаю внимание, что в RFC четко прописаноб сколько октетов сети нужно брать в зависимости от битовой маски!
в итоге в конфиге будет выглядеть так
!
ip dhcp pool POOL
  ....
  option 249 hex 15ACAC00A8A8A8A8
  ....
!

Что отлично заработало.

Ну и немного позже был найден удобный скриптик для расчетов:



#!/usr/bin/perl -w
use strict;
sub option_121 {
    my $gw = shift;
    my $out_str = '';
    my ($subnet, $mask, $b0, $b1, $b2, $b3);
    foreach my $cidr (@_) {
        ($subnet,  $mask) = split('/', $cidr);
        ($b0, $b1, $b2, $b3) = split(/\./, $subnet);
        $out_str .= sprintf('%02x', $mask);
        $out_str .= sprintf('%02x', $b0);
        $out_str .= sprintf('%02x', $b1) if($mask > 8);
        $out_str .= sprintf('%02x', $b2) if($mask > 16);
        $out_str .= sprintf('%02x', $b3) if($mask > 24);
        $out_str .= sprintf('%02x%02x%02x%02x', split(/\./, $gw));
    }
    return $out_str;
}
if(@ARGV < 2)
{
    print "Usage: $0 gw_ip subnet1/mask1 subnet2/mask2 ... subnetN/maskN\n";
}
elsif($ARGV[0] =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/)
{
    print "DHCP option 121 (249) hex string: ".option_121(@ARGV)."\n";
}
else
{
    print "Invalid gateway IP address: '$ARGV[0]'\n";
}



Тэги: cisco, dhcp, маршрутизация

 


Самый-самый блог
Блогер Рыбалка
Рыбалка
по среднему баллу (5.00) в категории «Спорт»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.