The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"iptables mac-source"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"iptables mac-source"  +/
Сообщение от hitr (ok) on 04-Мрт-12, 12:38 
Добрый день всем!
Не нашел в форуме подходящей темы по моему вопросу.
Имеется сервер на Ubuntu 10.04, 2.6.32-38-server, iptables v1.4.4, Squid Cache: Version 3.0.STABLE19
Имеется сеть провайдера с белым адресом и по этому же проводу приходит VLAN серой сетки с фильтрацией трафика для школ.
Стоит задача половина компов пустить через белый адрес, а вторую половину через прокси на VLAN, использую вот такую конструкцию iptables -t nat -I PREROUTING -m mac ! --mac-source ${M} -p tcp -m multiport --dport 80,8080 -j DNAT --to-destination 192.168.0.1:3128, эта строчка выполняется в цыкле.
И почему то все отправляются на прокси, а должны только чьи мак адреса не указаны в массиве ${M}. Если написать одну строку без цыкла iptables -t nat -I PREROUTING -m mac ! --mac-source 90:E6:BA:2F:37:E6 -p tcp -m multiport --dport 80,8080 -j DNAT --to-destination 192.168.0.1:3128, то все нормально, все кроме этого мак адреса идут на прокси, а этот просто натится. Что не так делаю, может кто сталкивался?
Ответить | Правка | Cообщить модератору

Оглавление

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


1. "iptables mac-source"  +/
Сообщение от shadow_alone (ok) on 04-Мрт-12, 12:56 
А проверить что цикл выводит не судьба?
Ну или просто посмотреть итоговой iptables-save после цикла.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "iptables mac-source"  +/
Сообщение от hitr (ok) on 04-Мрт-12, 13:22 
> А проверить что цикл выводит не судьба?
> Ну или просто посмотреть итоговой iptables-save после цикла.

после цыкла все нормально :OUTPUT ACCEPT [609337:47247402]
-A PREROUTING -p tcp -m mac ! --mac-source 08:00:27:57:F4:9F -m multiport --dports 80,8080 -j DNAT --to-destination 192.168.0.1:3128
-A PREROUTING -p tcp -m mac ! --mac-source 90:E6:BA:2F:37:21 -m multiport --dports 80,8080 -j DNAT --to-destination 192.168.0.1:3128
-A PREROUTING -p tcp -m mac ! --mac-source 20:CF:30:3A:B9:70 -m multiport --dports 80,8080 -j DNAT --to-destination 192.168.0.1:3128
т.е. в цикле все нормально отрабатывает

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

3. "iptables mac-source"  –1 +/
Сообщение от pgs (??) on 04-Мрт-12, 14:08 
>> А проверить что цикл выводит не судьба?
>> Ну или просто посмотреть итоговой iptables-save после цикла.
> после цыкла все нормально :OUTPUT ACCEPT [609337:47247402]
> -A PREROUTING -p tcp -m mac ! --mac-source 08:00:27:57:F4:9F -m multiport --dports
> 80,8080 -j DNAT --to-destination 192.168.0.1:3128
> -A PREROUTING -p tcp -m mac ! --mac-source 90:E6:BA:2F:37:21 -m multiport --dports
> 80,8080 -j DNAT --to-destination 192.168.0.1:3128
> -A PREROUTING -p tcp -m mac ! --mac-source 20:CF:30:3A:B9:70 -m multiport --dports
> 80,8080 -j DNAT --to-destination 192.168.0.1:3128
>  т.е. в цикле все нормально отрабатывает

reload squid после выполнения скрипта iptables делаете?

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

5. "iptables mac-source"  +/
Сообщение от shadow_alone (ok) on 04-Мрт-12, 14:13 
> reload squid после выполнения скрипта iptables делаете?

А что это даст то? что за глупости.

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

4. "iptables mac-source"  +/
Сообщение от shadow_alone (ok) on 04-Мрт-12, 14:12 
А не проще сделать привязку к маку в DHCP, а в iptables уже рулить адресами?
Если боитесь что будут назначать адреса вручную, сделать привязку адреса к масу в ARP-таблице.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

7. "iptables mac-source"  +/
Сообщение от hitr (ok) on 04-Мрт-12, 15:10 
> А не проще сделать привязку к маку в DHCP, а в iptables
> уже рулить адресами?
> Если боитесь что будут назначать адреса вручную, сделать привязку адреса к масу
> в ARP-таблице.

то что могут вручную назначить не боюсь, прав не хватит.
т.е. в dhcp будет выглядеть примерно так:
host comp1 {                                                                                                                      
  hardware ethernet 01:02:03:04:05:06;                                                                                              
  fixed-address 192.168.0.77;                                                                                                        
}
и так для каждого?
многовато писать и при добавлении нового компа нужно прописать в dhcp и в iptables добавить

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

8. "iptables mac-source"  +/
Сообщение от shadow_alone (ok) on 04-Мрт-12, 15:16 
Достаточно добавить в dhcp только тех кто будет ходить через NAT, ну или наоборот, только тех кто через прокси. Кого меньше, того и добавляйте.
а в iptables заранее все пропишите.
адреса для NAT-а выделяйте от 192.168.0.1 до 192.168.0.126
а диапазон без привязки к макам сделайте от 192.168.0.129 до 192.168.0.254

192.168.0.0/25 для NAT
192.168.0.128/25 для прокси.

И соответственно:

-A PREROUTING -s 192.168.0.128/25 -p tcp -m multiport --dports 80,8080 -j DNAT --to-destination 192.168.0.1:3128 

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

9. "iptables mac-source"  +/
Сообщение от hitr (ok) on 04-Мрт-12, 15:33 
>[оверквотинг удален]
> или наоборот, только тех кто через прокси. Кого меньше, того и
> добавляйте.
> а в iptables заранее все пропишите.
> адреса для NAT-а выделяйте от 192.168.0.1 до 192.168.0.126
> а диапазон без привязки к макам сделайте от 192.168.0.129 до 192.168.0.254
>
192.168.0.0/25 для NAT 
> 192.168.0.128/25 для прокси.

> И соответственно:
>
-A PREROUTING -s 192.168.0.128/25 -p tcp -m multiport --dports 80,8080 -j DNAT 
> --to-destination 192.168.0.1:3128

спасибо огромное за совет, сейчас буду пробовать

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

6. "iptables mac-source"  +/
Сообщение от shadow_alone (ok) on 04-Мрт-12, 14:16 
>> А проверить что цикл выводит не судьба?
>> Ну или просто посмотреть итоговой iptables-save после цикла.
> после цыкла все нормально :OUTPUT ACCEPT [609337:47247402]
> -A PREROUTING -p tcp -m mac ! --mac-source 08:00:27:57:F4:9F -m multiport --dports
> 80,8080 -j DNAT --to-destination 192.168.0.1:3128
> -A PREROUTING -p tcp -m mac ! --mac-source 90:E6:BA:2F:37:21 -m multiport --dports
> 80,8080 -j DNAT --to-destination 192.168.0.1:3128
> -A PREROUTING -p tcp -m mac ! --mac-source 20:CF:30:3A:B9:70 -m multiport --dports
> 80,8080 -j DNAT --to-destination 192.168.0.1:3128
>  т.е. в цикле все нормально отрабатывает

В принципе все правильно, у Вас с логикой правил проблема.
Когда обрабатывается первое правило, если мак отличный от 08:00:27:57:F4:9F то оно посылает его на прокси.
Так что, iptables отрабатывает правильно.

Сделайте по человечески, или без !, или по адресам.

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

10. "iptables mac-source"  +/
Сообщение от тень_pavel_simple on 04-Мрт-12, 16:24 
>[оверквотинг удален]
> Стоит задача половина компов пустить через белый адрес, а вторую половину через
> прокси на VLAN, использую вот такую конструкцию iptables -t nat -I
> PREROUTING -m mac ! --mac-source ${M} -p tcp -m multiport --dport
> 80,8080 -j DNAT --to-destination 192.168.0.1:3128, эта строчка выполняется в цыкле.
> И почему то все отправляются на прокси, а должны только чьи мак
> адреса не указаны в массиве ${M}. Если написать одну строку без
> цыкла iptables -t nat -I PREROUTING -m mac ! --mac-source 90:E6:BA:2F:37:E6
> -p tcp -m multiport --dport 80,8080 -j DNAT --to-destination 192.168.0.1:3128, то
> все нормально, все кроме этого мак адреса идут на прокси, а
> этот просто натится. Что не так делаю, может кто сталкивался?

содаёте новую цепочку, все кто по одному адресу - в эту цепочку, остальных на пhjкси  в это цепочке указываете DNAT куда вы его там

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

11. "iptables mac-source"  +/
Сообщение от shadow_alone (ok) on 04-Мрт-12, 16:28 
> содаёте новую цепочку, все кто по одному адресу - в эту цепочку,
> остальных на пhjкси  в это цепочке указываете DNAT куда вы
> его там

Тогда надо без исключений делать, то есть без !, иначе смысла нет в цепочке, после первого правила по -j RETURN, если мак-адрес не совпадает, будет сбрасывать на прокси.

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

12. "iptables mac-source"  +/
Сообщение от тень_pavel_simple on 04-Мрт-12, 16:31 
>> содаёте новую цепочку, все кто по одному адресу - в эту цепочку,
>> остальных на пhjкси  в это цепочке указываете DNAT куда вы
>> его там
> Тогда надо без исключений делать, то есть без !, иначе смысла нет
> в цепочке, после первого правила по -j RETURN, если мак-адрес не
> совпадает, будет сбрасывать на прокси.

да -- верно никаких ! не нужно в данном случае... а вот при чём тут -j RETURN не асилил.

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

13. "iptables mac-source"  +/
Сообщение от shadow_alone (ok) on 04-Мрт-12, 16:32 
> да -- верно никаких ! не нужно в данном случае... а вот
> при чём тут -j RETURN не асилил.

Я имел ввиду правила в цепочках.

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

14. "iptables mac-source"  +/
Сообщение от тень_pavel_simple on 04-Мрт-12, 16:35 
>> да -- верно никаких ! не нужно в данном случае... а вот
>> при чём тут -j RETURN не асилил.
> Я имел ввиду правила в цепочках.

если цепочка вложенная то -j RETURN выполняется в дефолте по окончанию правил цепочки... насколько я ничего не помню.

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

15. "iptables mac-source"  +/
Сообщение от тень_pavel_simple on 04-Мрт-12, 16:37 
>>> да -- верно никаких ! не нужно в данном случае... а вот
>>> при чём тут -j RETURN не асилил.
>> Я имел ввиду правила в цепочках.
> если цепочка вложенная то -j RETURN выполняется в дефолте по окончанию правил
> цепочки... насколько я ничего не помню.

кроме того можно все делать через --set-mark и без цепочек и с чётким определением кого куда.

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

16. "iptables mac-source"  +/
Сообщение от shadow_alone (ok) on 04-Мрт-12, 16:42 
> кроме того можно все делать через --set-mark и без цепочек и с
> чётким определением кого куда.

Совершенно верно. Но думаю, по адресам намного удобнее сделать.

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

17. "iptables mac-source"  +/
Сообщение от hitr (ok) on 04-Мрт-12, 18:29 
>> кроме того можно все делать через --set-mark и без цепочек и с
>> чётким определением кого куда.
> Совершенно верно. Но думаю, по адресам намного удобнее сделать.

По адресам, если привязывать адреса к макам в dhcp, то имена хостов не записываются в зоны bind.
можно подробнее про --set-mark, на днях пробовал, но чего то не получилось

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

18. "iptables mac-source"  +/
Сообщение от hitr (ok) on 04-Мрт-12, 20:25 
>>> кроме того можно все делать через --set-mark и без цепочек и с
>>> чётким определением кого куда.
>> Совершенно верно. Но думаю, по адресам намного удобнее сделать.
> По адресам, если привязывать адреса к макам в dhcp, то имена хостов
> не записываются в зоны bind.
> можно подробнее про --set-mark, на днях пробовал, но чего то не получилось

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

$ipt -t mangle -N check_mac

touch /tmp/query
echo 'SELECT name FROM mac;' | mysql -s -ubase_user -pbase_pass base_name > /tmp/query
MAC=`cat /tmp/query`
for M in ${MAC}; do
$ipt -t mangle -A check_mac -m mac --mac-source ${M} -j MARK --set-mark 1
done
rm /tmp/query

$ipt -t mangle -I PREROUTING -p tcp -j check_mac
$ipt -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp --dport 80 -m mark ! --mark 1 -j DNAT --to-destination 192.168.0.1:3128

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

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

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




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

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