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/.
Wie ktoś skąd można pobrać pacha lub źrodełka na taki modół jak connrate do iptables?
Offline
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
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
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
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
nie do końca byłem pewny tego ppp+ (z taką nazwą robie maskarade), więc pozostaje imq
Offline
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
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
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
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
/* 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
A może zaczniesz edytować posty a nie pisać 4 jeden pod drugim?
Offline
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