Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

Użytkownik


Wie ktoś skąd można pobrać pacha lub źrodełka na taki modół jak connrate do iptables?
Offline


Użyszkodnik DUG



jest to stary moduł, na nowym jajku i iptables nie wiem czy pójdzie, a według mnie transfery dla userów lepiej limitować na poziomie tc a nie iptables
Offline

Użytkownik


Może i lepiej, tyle że ja potrzebuje ograniczyć 2ipikom transfer które mają dostęp do VPN,(pptp) czyli podnoszone są interfejsy ppp
wiec trzeba by jeszcze pewnie jakieś IMQ wykorzystać bo jak user zamknie połączenie to mi to zniknie :/
Chyba, że jest jakis prostszy sposób bo nie mam jakoś koncepcji ?
Offline


Użyszkodnik DUG



tak jak piszesz albo złapać miśka na imq albo zamiast pisać numer konkretnego "pppX" piszesz ppp+
Ostatnio edytowany przez siarka2107 (2008-04-28 14:36:23)
Offline

Użytkownik


Nie do końca rozumiem z tym ppp+ ?
chodzi ci o coś takiego: tc qdisc add dev ppp+ root handle 1: hfsc default 500 ??
Jak tak to dostaje takie coś :Cannot find device "ppp+"
Offline


Użyszkodnik DUG



nie do końca byłem pewny tego ppp+ (z taką nazwą robie maskarade), więc pozostaje imq
Offline

Użytkownik


No ale wtedy muszę cały ruch przepuścić przez imq czyli ok 320userów, żeby złapać 2óch, to jest takie średnie rozwiązanie,
więc chyba lepszy byłby connrate w moim przypadku.
Znalazłem pach na jajko, tyle że niema na iptables 1.4.0 aczkolwiek w 1.3.7 w extension jest connrate-test, więc jak by zrobił degrad do 1.3.7 może by to łykło?
Offline
Użytkownik

connrate, bezboleśnie zmniejsza prędkośc połączenia o zadaną wartośc.
PROBLEM w tym, iż developerzy po 2005 roku, nie wiedzieć czemu uznali (sic!) go za mało wązny, bo jak to innaczej, traktowac że po wersji 1.3.3 ip tables, znikał, aż w reście przestał być np w wersji 1.4.4.
Developerzy, netfilter się wstydzić powinni!
Można pobrać source ze strony wersji 1.3.3.
www.netfilter.org
Agh a jak to przyjemnie by było, czysty iptables z regułkami w skrypcie, z dodatkiem connrate...
a tu .... egh.
Offline
Użytkownik

moduły to programy, napisane w C.
iptables to program / skrypt, który za zadanie ma załadowac odpowiednie moduly, to one odwalają całą pracę.
lepiej najlepiej było by gdyby connrate jednak był domyslnie w repozytoriach.
iptables nie zajmuje się zarządaniem pakietów, to robi kernel linux, a przy regułach USTAWIONYCH przez
iptables, równie dobrze może pracowac pentium 133 Mhz mmx... ale nie wyżucili moduł, który faktycznie działał i jest nadale niezmiernie przydatby.
Najprosćie to odkopac mandriva 2006, tam iptables jest w wersji 1.3.3 i posiada connrate. I zainstalowac tą madrive.
Ostatnio edytowany przez Liść (2010-11-20 15:46:41)
Offline
Użytkownik

http://rpm.pbone.net/index.php3/stat/4/idpl/4316517 … i586.rpm.html
a to na dowód
EDIT
UWaga znalazłem, paczkę żródłową do zrobienia pakietu w formacie deb
to iptables 1.3.3, na kernel 2.6.12
kernel pobierzesz z adresu poniżej
ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.6/
ten iptables zawiera moduł connrate czyli docelowo libipt_connrate.so
który pobierzesz z adresu poniżej
http://iptables.sourcearchive.com/downloads/1.3.3-2ubuntu4/
Ostatnio edytowany przez Liść (2010-11-21 23:36:28)
Offline
Użytkownik

/* Shared library add-on to iptables to add connection rate tracking
* support.
*
* Copyright (c) 2004 Nuutti Kotivuori <naked@iki.fi>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
**/
#include <stdio.h>
#include <netdb.h>
#include <string.h>
#include <stdlib.h>
#include <getopt.h>
#include <iptables.h>
#include <linux/netfilter_ipv4/ip_conntrack.h>
#include <linux/netfilter_ipv4/ipt_connrate.h>
/* Function which prints out usage message. */
static void
help(void)
{
printf(
"connrate v%s options:\n"
" --connrate [!] [from]:[to]\n"
" Match connection transfer rate in bytes\n"
" per second. `inf' can be used for maximum\n"
" expressible value.\n"
"\n", IPTABLES_VERSION);
}
static struct option opts[] = {
{ "connrate", 1, 0, '1' },
{0}
};
static u_int32_t
parse_value(const char *arg, u_int32_t def)
{
char *end;
size_t len;
u_int32_t value;
len = strlen(arg);
if(len == 0)
return def;
if(strcmp(arg, "inf") == 0)
return 0xFFFFFFFF;
value = strtoul(arg, &end, 0);
if(*end != '\0')
exit_error(PARAMETER_PROBLEM,
"Bad value in range `%s'", arg);
return value;
}
static void
parse_range(const char *arg, struct ipt_connrate_info *si)
{
char *buffer;
char *colon;
buffer = strdup(arg);
if ((colon = strchr(buffer, ':')) == NULL)
exit_error(PARAMETER_PROBLEM, "Bad range `%s'", arg);
*colon = '\0';
si->from = parse_value(buffer, 0);
si->to = parse_value(colon+1, 0xFFFFFFFF);
if (si->from > si->to)
exit_error(PARAMETER_PROBLEM, "%u should be less than %u", si->from,si->to);
free(buffer);
}
#define CONNRATE_OPT 0x01
/* Function which parses command options; returns true if it
ate an option */
static int
parse(int c, char **argv, int invert, unsigned int *flags,
const struct ipt_entry *entry,
unsigned int *nfcache,
struct ipt_entry_match **match)
{
struct ipt_connrate_info *sinfo = (struct ipt_connrate_info *)(*match)->data;
u_int32_t tmp;
switch (c) {
case '1':
if (*flags & CONNRATE_OPT)
exit_error(PARAMETER_PROBLEM,
"Only one `--connrate' allowed");
check_inverse(optarg, &invert, &optind, 0);
parse_range(argv[optind-1], sinfo);
if (invert) {
tmp = sinfo->from;
sinfo->from = sinfo->to;
sinfo->to = tmp;
}
*flags |= CONNRATE_OPT;
break;
default:
return 0;
}
return 1;
}
static void final_check(unsigned int flags)
{
if (!(flags & CONNRATE_OPT))
exit_error(PARAMETER_PROBLEM,
"connrate match: You must specify `--connrate'");
}
static void
print_value(u_int32_t value)
{
if(value == 0xFFFFFFFF)
printf("inf");
else
printf("%u", value);
}
static void
print_range(struct ipt_connrate_info *sinfo)
{
if (sinfo->from > sinfo->to) {
printf("! ");
print_value(sinfo->to);
printf(":");
print_value(sinfo->from);
} else {
print_value(sinfo->from);
printf(":");
print_value(sinfo->to);
}
}
/* Prints out the matchinfo. */
static void
print(const struct ipt_ip *ip,
const struct ipt_entry_match *match,
int numeric)
{
struct ipt_connrate_info *sinfo = (struct ipt_connrate_info *)match->data;
printf("connrate ");
print_range(sinfo);
printf(" ");
}
/* Saves the matchinfo in parsable form to stdout. */
static void save(const struct ipt_ip *ip, const struct ipt_entry_match *match)
{
struct ipt_connrate_info *sinfo = (struct ipt_connrate_info *)match->data;
printf("--connrate ");
print_range(sinfo);
printf(" ");
}
static struct iptables_match state = {
.next = NULL,
.name = "connrate",
.version = IPTABLES_VERSION,
.size = IPT_ALIGN(sizeof(struct ipt_connrate_info)),
.userspacesize = IPT_ALIGN(sizeof(struct ipt_connrate_info)),
.help = &help,
.parse = &parse,
.final_check = &final_check,
.print = &print,
.save = &save,
.extra_opts = opts
};
void _init(void)
{
register_match(&state);
}A to cod connrate.c z pakietu iptables 1.3.3 może się komuś przyda.
Offline



inż.
A może zaczniesz edytować posty a nie pisać 4 jeden pod drugim?
Offline
Użytkownik

Tak, nie ma jak to wolnność, nie zostają 4, a ja ci mówie jak masz się ubierać.
Następnym, razem będę pisał już jednym ciągiem, obiecuje.
Ostatnio edytowany przez Liść (2010-11-20 19:53:38)
Offline