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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2008-04-27 23:47:55

  maro - Użytkownik

maro
Użytkownik
Zarejestrowany: 2006-10-21

connrate

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

Offline

 

#2  2008-04-28 11:09:39

  siarka2107 - Użyszkodnik DUG

siarka2107
Użyszkodnik DUG
Skąd: Warszawa
Zarejestrowany: 2006-04-05

Re: connrate

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

 

#3  2008-04-28 11:25:21

  maro - Użytkownik

maro
Użytkownik
Zarejestrowany: 2006-10-21

Re: connrate

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

 

#4  2008-04-28 14:36:03

  siarka2107 - Użyszkodnik DUG

siarka2107
Użyszkodnik DUG
Skąd: Warszawa
Zarejestrowany: 2006-04-05

Re: connrate

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

 

#5  2008-04-28 16:48:26

  maro - Użytkownik

maro
Użytkownik
Zarejestrowany: 2006-10-21

Re: connrate

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

 

#6  2008-04-29 08:18:08

  siarka2107 - Użyszkodnik DUG

siarka2107
Użyszkodnik DUG
Skąd: Warszawa
Zarejestrowany: 2006-04-05

Re: connrate

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

Offline

 

#7  2008-04-29 17:34:45

  maro - Użytkownik

maro
Użytkownik
Zarejestrowany: 2006-10-21

Re: connrate

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

 

#8  2010-11-20 15:36:26

  Liść - Użytkownik

Liść
Użytkownik
Skąd: Barlinek, Zachodniopomorskie
Zarejestrowany: 2010-06-04

Re: connrate

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

 

#9  2010-11-20 15:45:20

  Liść - Użytkownik

Liść
Użytkownik
Skąd: Barlinek, Zachodniopomorskie
Zarejestrowany: 2010-06-04

Re: connrate

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

 

#10  2010-11-20 15:49:36

  Liść - Użytkownik

Liść
Użytkownik
Skąd: Barlinek, Zachodniopomorskie
Zarejestrowany: 2010-06-04

Re: connrate

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

 

#11  2010-11-20 15:52:15

  Liść - Użytkownik

Liść
Użytkownik
Skąd: Barlinek, Zachodniopomorskie
Zarejestrowany: 2010-06-04

Re: connrate

Kod:

/* 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

 

#12  2010-11-20 17:21:05

  milyges - inż.

milyges
inż.
Skąd: Gorlice/Kraków
Zarejestrowany: 2006-04-09
Serwis

Re: connrate

A może zaczniesz edytować posty a nie pisać 4 jeden pod drugim?

Offline

 

#13  2010-11-20 19:51:37

  Liść - Użytkownik

Liść
Użytkownik
Skąd: Barlinek, Zachodniopomorskie
Zarejestrowany: 2010-06-04

Re: connrate

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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)