Понадобилось раздать пользователям маршрут для подсетки.
для 192.168.10.0/24 гейтом должен быть 192.168.88.254
Понятно, что можно сходить и раздать. Однако, это неспортивно (или слишком спортивно, если хостов много). Правильный вариант - раздать через DHCP.
Выяснилось, что в силу рукожопия мелкомягких, необходимо указывать не только 121 опцию DHCP, но и 249. На просторах интернета нашел перловый скриптик
Код:
#!/usr/bin/perl -w
use strict;
print "\033[2J"; #clear the screen
print "\033[0;0H"; #jump to 0,0
sub option_121 {
my $gw = shift;
my $string = '';
my ($subnet, $mask, $b0, $b1, $b2, $b3);
foreach my $cidr (@_) {
($subnet, $mask) = split('/', $cidr);
($b0, $b1, $b2, $b3) = split(/\./, $subnet);
$string .= sprintf('%02x', $mask);
$string .= sprintf('%02x', $b0) if($mask > 0);
$string .= sprintf('%02x', $b1) if($mask > 8);
$string .= sprintf('%02x', $b2) if($mask > 16);
$string .= sprintf('%02x', $b3) if($mask > 24);
$string .= sprintf('%02x%02x%02x%02x', split(/\./, $gw));
}
return $string;
}
if(@ARGV < 2)
{
print "\n";
print "Usage: $0 [gateway] [host|network]/[bitmask]\n\n";
print "Example: $0 192.168.0.1 192.168.10.0/24\n\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";
}
Задаем параметры
Код:
./calcroute.pl 192.168.88.254 192.168.10.0/24
и в ответ получаем строку
Код:
DHCP option 121 (249) hex string: 18c0a80ac0a858fe
С этим добром идем в настройки DHCP Server и создаем две записи
после чего, на следующей закладке, объединяем их в set
И в итоге, уже на главной закладке DHCP прикрепляем set в настройках... Все, при следующем взаимодействии клиенты получат новый маршрут.