Перейти до

[IPTABLES] Работа с группами адрессов


Рекомендованные сообщения

Вот никак не могу понять как сделать правило такого вида:

 

iptables -A FORWARD -s 10.10.0.55 -d !"UA-IX" -j REJECT

 

где "UA-IX" - адресса подсетей UA-IX

 

(просто их много).

 

Может кто-то с примерами обяснить как делаеться правило такого рода?

Т.е. может как-то можно считівать с файла в котором введено какое-то количество групп адрессов, или может как то алиас создать...

Ссылка на сообщение
Поделиться на других сайтах

вот так вот можно сделать:

iptables -N UA_IX

потом скриптом или как-нть ещё загнать в эту цепочку правила для всех сетей входящих UA_IX:

iptables -A UA_IX -d xxx.xxx.xxx.xxx/xx -j RETURN

 

и в конце добавить iptables -A UA_IX -j REJECT

 

теперь пакеты прошедшую эту цепочку направленные не в UA_IX будут отброшены, а входящие в UA_IX пойдут проверяться по цепочке filter дальше.

удобство в том что если нужно поменять список сетей нужно всего лишь изменить одну цепочку UA_IX

 

а в в цепочке filter писать

iptables -A FORWARD -s 10.10.0.55 -j UA_IX

 

это бывает не всегда удобно, но вам думаю подойдет.

 

Может кто знает метод лучше? Поделитесь плиз.

Ссылка на сообщение
Поделиться на других сайтах

А можно сделать такой файлик:

ips.txt

в каждой строке пишем IP

и создаем файлик iptables.cpp с таким содержанием:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
   char *stroka,line[100],ip[255];
   char *s,str[255];
   FILE *f;
   
   f=fopen("ips.txt", "r");
while (stroka=fgets(line,100,f))
    {
 if (strcmp(stroka,"\n")!=0)
     {
 	strcpy(str,stroka);
 	s=strtok(str,"\n\t\r");
 	sprintf(ip,"iptables -t filter -A INPUT -s %s -j DROP",s);
 	system(ip);
     }
    }
   fclose(f);
}

 

думаю там понятно, что можно поменять :) Там где sprintf - правило iptables

потом компилируем его: gcc iptables.cpp

и запускаем - ./a.out

a.out и ips.txt должны быть в одной папке

 

Проще конечно в шелле делать, но я сним не дружу :)

Ссылка на сообщение
Поделиться на других сайтах

Вот еще Maikl подкинул идейку.

Создается файл например ipt.sh

имеет вот такое содержание:

#!/bin/sh

IPFILE="ips.txt"

grep "^" $IPFILE | while read ip;
do
   if [ $ip <> NULL ]
       then /sbin/iptables -t filter -A INPUT -s $ip -j DROP
   fi
done

делаем файл исполняемым:

chmod +x ipt.sh

 

Понятно, что в файле ips.txt хранятся айпишники - каждый с новой строки

вот и все

Ссылка на сообщение
Поделиться на других сайтах
  • 1 month later...

Поднимим данную тему вверх. Я думаю этот вопрос больше будет касатся Quarcelа.

В общем ситуация такова:

Сделал я новую цепочку UA_IX

загнал в нее украинскую зону (colocall.net/ua/?list)

И решил открыть только украину для одного пользователя. Делал так:

 

iptables -t filter -A FORWARD -s 192.168.0.1 -j UA_IX

iptables -t filter -A FORWARD -d 192.168.0.1 -j ACCEPT

iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.1 -j MASQUERADE

iptables -t nat -A POSTROUTING -o eth0 -d 192.168.0.1 -j MASQUERADE

И получаю, что к некоторой украине доступ есть, к другой нет :(

Тоесть. Когда сделал, получил, что открывалась Украина с IP<196.xxx.xxx.xxx

Потом сервак ребутнул, и увидел, что открываются сайты у которых IP<68.xxx.xxx.xxx

В чем глюк? В цепочку UA_IX загружены все адресса. Специально сидел и 40 мин ждал, пока всю цепочку выведет.

З.Ы. Правда, что iptables должен долго выводить цепочку? У меня он показываеьт по одной записи/пару сек, если цепочка становится обьемной....

Ссылка на сообщение
Поделиться на других сайтах

Скорее всего у тебя некоторые сетки с неправильной маской прошли.

Список, кот. формаруется на UA-IX в связи с обоенностями выдечей кисками информации надо доводить до ума.

Если в коце нет маски, то это значит, что на самом деле что это сетка класса С, 256 адресов или /24.

Ссылка на сообщение
Поделиться на других сайтах

Маска там есть везде. Это проверил в первую очередь....

Вообще правила открытия таким способом только украины правельные? У кого-то работает? Аль предложите другой способ, сам пока ничего не могу придумать

Ссылка на сообщение
Поделиться на других сайтах
Маска там есть везде. Это проверил в первую очередь....

Вообще правила открытия таким способом только украины правельные? У кого-то работает? Аль предложите другой способ, сам пока ничего не могу придумать

ну у меня собственно работает..... проблем не встречал...

Ссылка на сообщение
Поделиться на других сайтах

Своими правилами поделится можеш? Т.к. обнаружил следующею вещь:

iptables -L -v

......

Chain FORWARD (policy DROP 4218 packets, 253K bytes)

pkts bytes target prot opt in out source destination

54 3559 UA_IX all -- any any 192.168.0.1 anywhere

0 0 ACCEPT all -- any any anywhere 192.168.0.1

.......

Тоесть пакеты передаются, но не принимаются..... :(

Ссылка на сообщение
Поделиться на других сайтах

Может это кто-то (некоторые провайдеры, например укртелеком) дропает пакеты на революционные сайты типа .5TV

Ссылка на сообщение
Поделиться на других сайтах

Да нет. Я даже незнаю почему, но все заработало :(. Суть в следующем.

Сначало в цепочку я добавлял как

iptables -A UA_IX -d xxx.xxx.xxx.xxx/xx -j RETURN

и не работало, а когда сделал

iptables -A UA_IX -d xxx.xxx.xxx.xxx/xx -j ACCEPT

то все стало ОК. МИР не пускает, пускает только украину. В чем тут был глюк?

Ссылка на сообщение
Поделиться на других сайтах
Да нет. Я даже незнаю почему, но все заработало :(. Суть в следующем.

Сначало в цепочку я добавлял как

iptables -A UA_IX -d xxx.xxx.xxx.xxx/xx -j RETURN

и не работало, а когда сделал

iptables -A UA_IX -d xxx.xxx.xxx.xxx/xx -j ACCEPT

то все стало ОК. МИР не пускает, пускает только украину. В чем тут был глюк?

Суть как раз была в том что бы пакетик отсеялся в цепочке ЮА_ИКС и вернулся в формард обратно если он бежит на украину, попутно добежав до своего логического ACCEPT или REJECT дополнительно фильтровался.

 

У меня написано RETURN и всё ок.

Ссылка на сообщение
Поделиться на других сайтах

глюка никакого нет, просто вы похоже не поняли разницы между RETURN и ACCEPT

Какую из этих целей использовать зависит от конкретного случая и от того как построена фильтрация пакетов.

 

Вот например, если в UA_IX используется RETURN то правила могут выглядеть примерно так:

iiptables -A FORWARD -j UA_IX

iiptables -A FORWARD -j ACCEPT

 

А вот если используется ACCEPT то правило: iptables -A FORWARD -j ACCEPT не нужно

 

RETURN возвращает проверку в предыдующую цепочку(в данном случае пакет пойдет проверятся дальше по цепочке FORWARD)

 

ACCEPT дает пакету зеленый свет и пакет уже не проверяется по другим правилам - идет в сеть

Ссылка на сообщение
Поделиться на других сайтах
  • 1 year later...

Скажите, а нет ли более разумного способа, чем фильтровать пакет через 1222 (в моем файле УА-ИХ) проверок?

В частности, я хочу, чтобы на SQUID попадал только иностранный трафик. Прокси работает в прозрачном виде.

Я создаю цепочку UAIX в таблице nat. Из цепочки PREROUTING загоняю в UAIX адрес, если он удовлетворяет одной из этих 1222 проверок. Последним в PREROUTING делаю REDIRECT на порт 3128, а в UAIX создаю только

iptables -t nat -A UAIX -j ACCEPT.

Можно это как-то сделать красивее? И сильно ли снижает такая большая проверка

производительность канала?

Спасибо.

Ссылка на сообщение
Поделиться на других сайтах

иначе это как? не файрволом? думаю нет при данных условиях.

не нагружает совсем..... хотя смотря какойтазик стоит шлюзом...

но целерон 600 вполне нормально себя чувствует....

А чем некрасиво собственно?

 

а если у вас в онлайне 1000 пользователей к примеру и на каждого по 2 как минимум правила в файрволе - вас не смущает нагрузка??

Ссылка на сообщение
Поделиться на других сайтах
Скажите, а нет ли более разумного способа, чем фильтровать пакет через 1222 (в моем файле УА-ИХ) проверок?

1222 правила это явно излишне. Агрегация списка дает его сокращение примерно в два раза (у меня 662 подсети).

Ссылка на сообщение
Поделиться на других сайтах
Скажите, а нет ли более разумного способа, чем фильтровать пакет через 1222 (в моем файле УА-ИХ) проверок?

1222 правила это явно излишне. Агрегация списка дает его сокращение примерно в два раза (у меня 662 подсети).

Простите за темноту, но не подскажете ли на примере, как эту агрегацию UA-IX сетей делать?

Ссылка на сообщение
Поделиться на других сайтах
маской наверное

Это типа, если есть

212.42.64.0/22

212.42.68.0/22

212.42.70.0/24

212.42.72.0/23

212.42.74.0/23

212.42.76.0/23

212.42.78.0/23

212.42.80.0/23,

то написать 212.42.0.0/16? Разве это корректно?

Відредаговано fufnf
Ссылка на сообщение
Поделиться на других сайтах

ЭЭЭ, а где вы 48 единиц возьмете, если их максимум может быть 32 :) ?

 

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

Відредаговано N.Leiten
Ссылка на сообщение
Поделиться на других сайтах

Тогда может кто поделися где брать уже "агрегированные" списки или подкинет скрипт для агрегации?

Ссылка на сообщение
Поделиться на других сайтах
Тогда может кто поделится где брать уже "агрегированные" списки или подкинет скрипт для агрегации?

Мои списки можно брать здесь. Основа - список UA-IX от DG с исключением нескольких небольших диапазонов (VPN провайдеры).

 

Для аггрегирования списков в свое время нашел утилиту:

 

файл 1 (20 кБ)

файл 2 (1 кБ)

 

Вроде нужен только первый, но мало ли...

Ссылка на сообщение
Поделиться на других сайтах
маской наверное

Это типа, если есть

212.42.64.0/22

212.42.68.0/22

212.42.70.0/24

212.42.72.0/23

212.42.74.0/23

212.42.76.0/23

212.42.78.0/23

212.42.80.0/23,

то написать 212.42.0.0/16? Разве это корректно?

писать 212.42.0.0/16 некорректно, а вот заменить вышеприведенный список вот этим:

212.42.64.0/20
212.42.80.0/23

очень даже корректно. А два правила это меньше чем 8 :(

Ссылка на сообщение
Поделиться на других сайтах

2Civilizator: заметил вот что.

http://ip.proline.net.ua/cgi-bin/ipzones.cgi?host=localhost

Имхо, надо в NULL какие-то сети выкидывать.

 

И ещё небольшой прикол:

http://ip.proline.net.ua/cgi-bin/ipzones.cgi?host=eblan.us

=)

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...