The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"iptables вместо squid"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Настройка Squid и других прокси серверов (Разное)
Изначальное сообщение [ Отслеживать ]

"iptables вместо squid"  –1 +/
Сообщение от Square_qwerty (ok) on 29-Апр-16, 20:56 
Здравствуйте.

Решил отказаться от squid’a (в виду проблемности с https (для меня)), и с делать все через iptables.
Получилось следующее:
IP-адреса выдаются на основании MAC
правила для групп находятся в отдельных файлах
при запуске считываются правила и добавляются в iptables

Конфиг DHCP:
ddns-update-style none;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
  option domain-name-servers 192.168.1.1;
  option subnet-mask 255.255.255.0;
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  default-lease-time 600;
  max-lease-time 7200;
}
include "/etc/dhcp/hosts";

Файл с хостами для DHCP:
host host1 {
  hardware ethernet 00:0C:29:E7:СС:7C;
  fixed-address 192.168.1.10;
}

host host2 {
  hardware ethernet 00:0C:FF:E7:45:7C;
  fixed-address 192.168.1.11;
}

host host3 {
  hardware ethernet 99:0C:29:E7:45:7C;
  fixed-address 192.168.1.12;
}

и т.д.

Файл добавления правил:
#!/bin/bash

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Правила по умолчанию
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

echo "1" > /proc/sys/net/ipv4/ip_forward

# Директория с файлами правил
RULES_DIR=/home/user/rules

### INPUT
# Разрешить входящие соединения с локалхоста
iptables -A INPUT -i lo -j ACCEPT
# Разрешить уже установленные входящие соединения
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешить SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Разрешить DNS
iptables -A INPUT -p udp --dport 53 -j ACCEPT

### FORWARD
# Разрешить уже установленные пересылаемые соединения
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Правила
# rules.sh - файл чтения правил из файла
find $RULES_DIR -type f | grep -E -o "group_([0-9A-Za-z\-\_])+" | while read FILENAME; do
    $RULES_DIR/rules.sh $RULES_DIR/$FILENAME
done

# почта
iptables -A FORWARD -p tcp -m tcp --dport 995 -j ACCEPT
iptables -A FORWARD -p tcp -m tcp --dport 465 -j ACCEPT

# DNS
iptables -A FORWARD -p udp -s 192.168.1.0/24 -m multiport --dport 53 -j ACCEPT
iptables -A FORWARD -p udp -d 192.168.1.0/24 -m multiport --dport 53 -j ACCEPT

### NAT
# Включить NAT для локальной подсети
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE

service dnsmasq restart

Файл чтения правил из файла:
#!/bin/bash

mac=$( cat $1 | grep -E -o '((([0-9A-Fa-f]){2}(\:)?){5,7}(\|)?)+' )

mac=${mac//"|"/" "}

for i in $mac
do
    cat $1 | grep -e "rule " | while read line
    do
        ports=$( echo $line | grep -E -o '([0-9]{1,5}(\|)?)+' )
        sites=$( echo $line | grep -E -o '(([0-9a-zA-Z])*(\.)?([0-9a-zA-Z])+(\.){1}([0-9a-zA-Z]){2,9}(\|)*)+' )

        ports=${ports//"|"/" "}
        sites=${sites//"|"/" "}
        
        if [ ${#posts} != 0 ] & [ ${#sites} != 0 ]; then
            # Есть порты и сайты

            for p in $ports
            do
                for s in $sites
                do
                    iptables -A FORWARD -p tcp --dport $p -d $s -m mac --mac-source $i -j ACCEPT
                    iptables -A FORWARD -p tcp --dport $p -s $s -m mac --mac-source $i -j ACCEPT
                done
            done
        else
            if [ ${#posts} > 0 ]; then
                # Есть порты
            for p in $ports
                do
                    iptables -A FORWARD -p tcp --dport $p -m mac --mac-source $i -j ACCEPT
                done
        else
                # Есть сайты
                for s in $sites
                do
                    iptables -A FORWARD -p tcp -d $s -m mac --mac-source $i -j ACCEPT
                    iptables -A FORWARD -p tcp -s $s -m mac --mac-source $i -j ACCEPT
                done
        fi
        fi
    done
done

Пример файла правил:
<rules mac="00:0C:FF:E7:45:7C|00:0C:FF:E7:99:7C">
    <rule port="80|8080" sites="ubuntu.ru|novosti.ru" />
    <rule port="443" sites="mail.ru|youtube.com" />
</rule>

В правилах указывается разрешенный порт и сайты, на которые разрешен доступ по этому порту с mac указанных в свойстве mac. Если не указывать сайты, будет открыт доступ ко всем сайтам этого порта. Если ничего не указать, будет запрещен доступ ко всему.

В принципе все работает (проверял на физической сети с 3 компами, и виртуальной сети с 2 компами).

Вопрос вот в чем, правильно ли так делать, какие проблемы могут возникнуть (нагрузка на сервер (процессор), общая работоспособность сети и интернета в целом, и т.д.)?

Конфигурация будет следующей:
Процессор: 4-х ядерный, 3.2 ГГц
ОЗУ: 8 Гб
Сетевые карты: 1 Гбит

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "iptables вместо squid"  +/
Сообщение от fail on 29-Апр-16, 21:44 
>[оверквотинг удален]
> }
> host host2 {
>   hardware ethernet 00:0C:FF:E7:45:7C;
>   fixed-address 192.168.1.11;
> }
> host host3 {
>   hardware ethernet 99:0C:29:E7:45:7C;
>   fixed-address 192.168.1.12;
> }
> и т.д.

...


>[оверквотинг удален]
> не указать, будет запрещен доступ ко всему.
> В принципе все работает (проверял на физической сети с 3 компами, и
> виртуальной сети с 2 компами).
> Вопрос вот в чем, правильно ли так делать, какие проблемы могут возникнуть
> (нагрузка на сервер (процессор), общая работоспособность сети и интернета в целом,
> и т.д.)?
> Конфигурация будет следующей:
> Процессор: 4-х ядерный, 3.2 ГГц
> ОЗУ: 8 Гб
> Сетевые карты: 1 Гбит

имхается SRP нарушен...
вопрос времени(и внимательности) когда "разойдутся" MACи в dhcp и скриптах

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "iptables вместо squid"  –1 +/
Сообщение от Square_qwerty (ok) on 29-Апр-16, 22:39 
> имхается SRP нарушен...
> вопрос времени(и внимательности) когда "разойдутся" MACи в dhcp и скриптах

Согласен, нужно быть очень внимательным. Но тем не менее, кроме этого, есть ли еще какие нибудь проблемы?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "iptables вместо squid"  +/
Сообщение от fail_ on 30-Апр-16, 21:39 
>> имхается SRP нарушен...
>> вопрос времени(и внимательности) когда "разойдутся" MACи в dhcp и скриптах
> Согласен, нужно быть очень внимательным. Но тем не менее, кроме этого, есть
> ли еще какие нибудь проблемы?

Визуально нет...
Oднaкo, гиподинaмия(и пр.) аццкие штуки творит...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "iptables вместо squid"  +/
Сообщение от aaa (??) on 01-Май-16, 19:38 
>[оверквотинг удален]
> не указать, будет запрещен доступ ко всему.
> В принципе все работает (проверял на физической сети с 3 компами, и
> виртуальной сети с 2 компами).
> Вопрос вот в чем, правильно ли так делать, какие проблемы могут возникнуть
> (нагрузка на сервер (процессор), общая работоспособность сети и интернета в целом,
> и т.д.)?
> Конфигурация будет следующей:
> Процессор: 4-х ядерный, 3.2 ГГц
> ОЗУ: 8 Гб
> Сетевые карты: 1 Гбит

Плохая идея, как с этим бороться будете:

;; ANSWER SECTION:
youtube.com.        18    IN    A    108.177.14.91
youtube.com.        18    IN    A    108.177.14.93
youtube.com.        18    IN    A    108.177.14.136
youtube.com.        18    IN    A    108.177.14.190

Таблесы работают по ип.
Скивид по именам.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "iptables вместо squid"  +/
Сообщение от aaa (??) on 01-Май-16, 19:50 
>[оверквотинг удален]
>> ОЗУ: 8 Гб
>> Сетевые карты: 1 Гбит
> Плохая идея, как с этим бороться будете:
> ;; ANSWER SECTION:
> youtube.com.  18 IN A 108.177.14.91
> youtube.com.  18 IN A 108.177.14.93
> youtube.com.  18 IN A 108.177.14.136
> youtube.com.  18 IN A 108.177.14.190
> Таблесы работают по ип.
> Скивид по именам.

теперь стало:

;; ANSWER SECTION:
youtube.com.        64    IN    A    209.85.233.190
youtube.com.        64    IN    A    209.85.233.91
youtube.com.        64    IN    A    209.85.233.93
youtube.com.        64    IN    A    209.85.233.136

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "iptables вместо squid"  +/
Сообщение от тень_pavel_simple on 19-Май-16, 09:14 
во первых вместо портянки из маков и ip нужно использовать ipset
во вторых dnsmasq умеет добавлять в ipset ответы клиенту при запросе.
остаётся контролировать dnsmasq
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру