- iptables mac-source, shadow_alone, 12:56 , 04-Мрт-12 (1)
А проверить что цикл выводит не судьба? Ну или просто посмотреть итоговой iptables-save после цикла.
- iptables mac-source, hitr, 13:22 , 04-Мрт-12 (2)
> А проверить что цикл выводит не судьба? > Ну или просто посмотреть итоговой 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 т.е. в цикле все нормально отрабатывает
- iptables mac-source, pgs, 14:08 , 04-Мрт-12 (3) –1
>> А проверить что цикл выводит не судьба? >> Ну или просто посмотреть итоговой 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 делаете?
- iptables mac-source, shadow_alone, 14:13 , 04-Мрт-12 (5)
> reload squid после выполнения скрипта iptables делаете?А что это даст то? что за глупости.
- iptables mac-source, shadow_alone, 14:12 , 04-Мрт-12 (4)
А не проще сделать привязку к маку в DHCP, а в iptables уже рулить адресами? Если боитесь что будут назначать адреса вручную, сделать привязку адреса к масу в ARP-таблице.
- iptables mac-source, hitr, 15:10 , 04-Мрт-12 (7)
> А не проще сделать привязку к маку в DHCP, а в iptables > уже рулить адресами? > Если боитесь что будут назначать адреса вручную, сделать привязку адреса к масу > в ARP-таблице.то что могут вручную назначить не боюсь, прав не хватит. т.е. в dhcp будет выглядеть примерно так: host comp1 { hardware ethernet 01:02:03:04:05:06; fixed-address 192.168.0.77; } и так для каждого? многовато писать и при добавлении нового компа нужно прописать в dhcp и в iptables добавить
- iptables mac-source, shadow_alone, 15:16 , 04-Мрт-12 (8)
Достаточно добавить в dhcp только тех кто будет ходить через NAT, ну или наоборот, только тех кто через прокси. Кого меньше, того и добавляйте. а в iptables заранее все пропишите. адреса для NAT-а выделяйте от 192.168.0.1 до 192.168.0.126 а диапазон без привязки к макам сделайте от 192.168.0.129 до 192.168.0.254192.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
- iptables mac-source, hitr, 15:33 , 04-Мрт-12 (9)
>[оверквотинг удален] > или наоборот, только тех кто через прокси. Кого меньше, того и > добавляйте. > а в 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 спасибо огромное за совет, сейчас буду пробовать
- iptables mac-source, shadow_alone, 14:16 , 04-Мрт-12 (6)
>> А проверить что цикл выводит не судьба? >> Ну или просто посмотреть итоговой 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 отрабатывает правильно. Сделайте по человечески, или без !, или по адресам.
- iptables mac-source, тень_pavel_simple, 16:24 , 04-Мрт-12 (10)
>[оверквотинг удален] > Стоит задача половина компов пустить через белый адрес, а вторую половину через > прокси на 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 куда вы его там
- iptables mac-source, shadow_alone, 16:28 , 04-Мрт-12 (11)
> содаёте новую цепочку, все кто по одному адресу - в эту цепочку, > остальных на пhjкси в это цепочке указываете DNAT куда вы > его там Тогда надо без исключений делать, то есть без !, иначе смысла нет в цепочке, после первого правила по -j RETURN, если мак-адрес не совпадает, будет сбрасывать на прокси.
- iptables mac-source, тень_pavel_simple, 16:31 , 04-Мрт-12 (12)
>> содаёте новую цепочку, все кто по одному адресу - в эту цепочку, >> остальных на пhjкси в это цепочке указываете DNAT куда вы >> его там > Тогда надо без исключений делать, то есть без !, иначе смысла нет > в цепочке, после первого правила по -j RETURN, если мак-адрес не > совпадает, будет сбрасывать на прокси.да -- верно никаких ! не нужно в данном случае... а вот при чём тут -j RETURN не асилил.
- iptables mac-source, shadow_alone, 16:32 , 04-Мрт-12 (13)
> да -- верно никаких ! не нужно в данном случае... а вот > при чём тут -j RETURN не асилил.Я имел ввиду правила в цепочках.
- iptables mac-source, тень_pavel_simple, 16:35 , 04-Мрт-12 (14)
>> да -- верно никаких ! не нужно в данном случае... а вот >> при чём тут -j RETURN не асилил. > Я имел ввиду правила в цепочках.если цепочка вложенная то -j RETURN выполняется в дефолте по окончанию правил цепочки... насколько я ничего не помню.
- iptables mac-source, тень_pavel_simple, 16:37 , 04-Мрт-12 (15)
>>> да -- верно никаких ! не нужно в данном случае... а вот >>> при чём тут -j RETURN не асилил. >> Я имел ввиду правила в цепочках. > если цепочка вложенная то -j RETURN выполняется в дефолте по окончанию правил > цепочки... насколько я ничего не помню.кроме того можно все делать через --set-mark и без цепочек и с чётким определением кого куда.
- iptables mac-source, shadow_alone, 16:42 , 04-Мрт-12 (16)
> кроме того можно все делать через --set-mark и без цепочек и с > чётким определением кого куда.Совершенно верно. Но думаю, по адресам намного удобнее сделать.
- iptables mac-source, hitr, 18:29 , 04-Мрт-12 (17)
>> кроме того можно все делать через --set-mark и без цепочек и с >> чётким определением кого куда. > Совершенно верно. Но думаю, по адресам намного удобнее сделать.По адресам, если привязывать адреса к макам в dhcp, то имена хостов не записываются в зоны bind. можно подробнее про --set-mark, на днях пробовал, но чего то не получилось
- iptables mac-source, hitr, 20:25 , 04-Мрт-12 (18)
>>> кроме того можно все делать через --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
|