ubuntu:pptpd + chap + скрипты | Страница 2 | Крымский форум

ubuntu:pptpd + chap + скрипты

  • Добро пожаловать на форум! Рады видеть вас здесь! Зарегистрируйтесь или Войдите в аккаунт, чтобы иметь полный доступ к площадке!
svip
Насколько я понмню надо

iptables -t nat -A POSTROUTING -o "ppp1-pppN - тунели клиентов" -j MASQUERADE


По идее надо в IP-UP прописать
iptables -t nat -A POSTROUTING -o "$1" -j MASQUERADE


Первая твоя запись вообще неправильная.
А вторая разрешает маскарадинг на все интерфейсы кроме eth0
 
Не совсем. -o = output device. Соответственно нужно правило для исходящего интерфейса + обязательно только то что нужно маскарадить. Но ! Я смотрю тут eth интерфес, тогда надо использовать snat. Случай с POSTROUTING -j MASWQUERADE не прокатит в данном случае.

Насчет документации - сильно сомневаюсь что есть перевод. По framed-route могу сказать что он тебе понадобиться только если используеш mikrotic.

По поводу лагов

iptables -I FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
 
Да, и mtu в options поставь немного меньше чем на исходящем.
 
Цитата(exn @ 15 Марта, 2009, 16:56)
Не совсем. -o = output device.

Тьфу точно.

Я обычно делаю iptables -t nat -A POSTROUTING -s "Айпиадрес клиента" -d 0/0 -j MASQUERADE
 
Код
iptables -I FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu


точно лаги прекратились., хотя раньше везде прописывал mtu 1400 и вроде должно было работать.


Код:
iptables -t nat -A POSTROUTING -s "Айпиадрес клиента" -d 0/0 -j MASQUERADE[quote]

у меня у клиентов адреса 11.0.0.1-11.0.0.252 (на eth0 смотрят). А когдасоздаются ppp соединения радиус дает адреса 192.168.0.2-192.168.0.254 получается нужно прописать в ip-up

[code]iptables -t nat -A POSTROUTING -s 192.168.0.2 -d 0/0 -j MASQUERADE[quote]

или

[code]iptables -t nat -A POSTROUTING -s 11.0.0.2 -d 0/0 -j MASQUERADE[quote]

??

и чтобы сделать маршрут на определенные сети (192.168.2.0/24) не через ppp нужно прописать
[code]iptables -t nat -A INPUT -s 11.0.0.2 -d 192.168.2.0/24 -j ACCEPT[quote]

Правильно?
 
Цитата(svip @ 15 Марта, 2009, 20:49)
Код:
iptables -t nat -A POSTROUTING -s 192.168.0.2 -d 0/0 -j MASQUERADEЦитата


Тот что выдается ppp


[quote=svip, 15 Марта, 2009, 20:49]и чтобы сделать маршрут на определенные сети (192.168.2.0/24) не через ppp нужно прописать
[code]iptables -t nat -A INPUT -s 11.0.0.2 -d 192.168.2.0/24 -j ACCEPT[quote]

Маршруты изменяются коммандой route и делать это лучше на клиенте. Т.к. по умолчанию все будет идти через ppp.
 
Как мотключитьтключитьтключитьжнотключитьтключитьтключить протключитьтключитьтключитьграммнотключитьтключитьтключить отключитьтключитьтключитьтключить ppp соединениеоединениеоединениеотключитьтключитьтключитьединение? через радиусоединениеоединениеоединение или напрямую?
 
через радиус я не наю, а так вообще kill -9 ....
 
Через радиус нет. Stop приходить от клиента.
 
Цитата(Pretender @ 17 Марта, 2009, 23:17)
kill -9 ...

А как выбрать правильное PPP ?
 
Пэтро
думаю можно сделат так.
добавить новый параметр AV в словарь радиуса и при коннекте писать в файл radattr.ppp5 типа UserName=ppp5.
потом скрпитом выбирать этот параметр и гасить его.

Так же несовсем удобно что статистика пишется в базу только после завершения сессии. может есть параметр чтобы статистика (кол-во байт принятое и отправленное) писалось через определенный промежуток времени?
 
набросал на скорую руку скрипт сбора данных о подключенных клиентах по vpn (с использованием радиуса)

Код

<?php
function getPppIpVpn($dirname)
 {
   // Открываем текущую директорию
   $dir = opendir($dirname);
   // Читаем в цикле директорию
   while (($file = readdir($dir)) !== false)
   {
     // Если файл обрабатываем его содержимое
     if($file != "." && $file != "..")
     {
       // Если имеем дело с файлом - производим в нём замену
       if(is_file($dirname."/".$file))
       {
         $ext = strtolower(array_pop(explode(".", $file)));
         $name=substr($file,0,strlen($file)-strlen($ext)-1);
         if ($name=="radattr")
         {
           $f = fopen($dirname."/".$file, "r");
           while (! feof($f))
           {
             $data = fgets($f,4096);
             $n=strpos($data,"Framed-IP-Address");
             if (is_numeric($n)) $arr[substr($data,$n+18,strlen($data)-$n-18)]=$ext;
           }
           fclose($f);
         }
       }
     }
   }
   // Закрываем директорию
   closedir($dir);
  return $arr;
}


$dirname = "/var/run";
$arr=getPppIpVpn($dirname);
foreach ($arr as $k=>$v) echo "k=".$k." => v=".$v."<br>";

?>



В итоге получаем массив с ключем - адрес Ip vpn и значением - pppX

например

$arr[192.168.0.5]=ppp8; И тд. а далее уже и убиваем соединение килом.



P.S. Нужно выбрать данные из базы и произвести некоторые действия (отрубание клиента или обновление данных в базе в зависимости от условий.) Вижу два варината - bash и си. Что лучше? что быстрее? что надежнее. Щас написал на баше скрипт вытягивания данных по крону, проверка лимита трафика, срока использования (для безлимиток), отрубление клиента и запрет на подключения путем записи в базу radcheck значения Auth-Type=reject вместо Accept. Вот думаю может лучше на си переписать? что скажите?
 
exn
то есть не работает?
 
svip
ставь фрю и абиллс
там все работает
bigwink.gif
 
Eugene тут щас походу дискусии свой биллинг напишем
smile.gif

Пэтро а зачем тебе гасить выбранный ппп? у меня это биллинг делает, закрыл клиента, скрипт его отловил, и пристрелил
 
Eugene
abills - г...но. И в ней нехватает нужного мне функционала + ужастный внешний вид. + ужастный шейпер, без возможности переброски и займа трафа.

Pretender ага. вот и пишу свой, перебрав все возможные понравился только pro..., но во фри версии нехватает функционала.

Щас поднял радиус и обкатываю его со всех сторон. + пишу морду для управления и удобного ведения статистики и всего остального.



Цитата
у меня это биллинг делает, закрыл клиента, скрипт его отловил, и пристрелил


что именно биллинг делает? проверяет израсходованный траф и сравнивает с лимитом и орубает клиента??
Если это можно реализовать бе сторонних скриптов на freefadius-е то подскажи как.
 
Представим 5 клиентских соединений...
Цитата(svip @ 17 Марта, 2009, 21:28)
Как можно программно отключить ppp соединение? через радиус или напрямую?


Каким образом можно отключить н-ого клиента через
Цитата(Pretender @ 17 Марта, 2009, 23:17)
через радиус я не наю, а так вообще kill -9 ....
 
svip
я думал, что я один такой динозавр - сам свою статистику написал и пользуюсь, хотя у меня сетка 50+, ну ще не вмерла украина пока катим квадратное - зато весело
blush2.gif
 
Мне кажеться что строить систему на недонастроенном/нерабочем радиусе не самая хорошая идея.
 
Назад
Сверху