Alexspils Posted December 7, 2006 Posted December 7, 2006 (edited) Задача: Дать прямой канал на местные адреса,прямой заграничный канал и проксированный заграничный http траффик. 2 машины на bsd 5.5-RELEASE.На 1 squid с опциями http_port 3128 httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on На роутере ядро с включенными опциями для ipfw.с местными адресами проблем нет, пометил их как LV10-25 и засунул в pipe и ограничил как надо.прямой загран это то что не пометил, тоже в pipe. А вот проксированный заграничный http траффик не могу завернуть.Правила ${fwcmd} add fwd xxx.xxx.xxx.9,3128 tcp from { not ${LV10}, ${LV11}, ${LV12}, ${LV13}, ${LV14}, ${LV15} } to ${ournet} 80 ${fwcmd} add fwd xxx.xxx,xxx,9,3128 tcp from { not ${LV20},${LV21},${LV22},${LV23},${LV24},${LV25} } to ${ournet} 80 ipfw show показывает 05400 43 6838 fwd xxx.xxx.xxx.9,3128 tcp from { not 159.148.0.0/16,193.41.195.0/24,193.41.33.0/24,193.41.45.0/24,193.68.64.0/19,193.108.29.0/24,193.108.144.0/22,193.108.185.0/24,193.109.211.0/24,193.109.85.0/24,193.110.8.0/23,193.110.164.0/23 or to xxx.xxx.xxx.0/22 } dst-port 80 после включения правила пропадает весь http траффик.смущает строчка or to xxx.xxx.xxx.0/22.Сам проксик работает, фиревалл на нём отключён. Где собака зарыта? Edited December 7, 2006 by Alexspils Вставить ник Quote
gauss Posted December 7, 2006 Posted December 7, 2006 (edited) для прозрачного проксирования сквид должен быть запущен на той же самой машине, а не на второй. соответственно правила файрвола должны быть: ... ipfw add fwd 127.0.0.1, 3128 ... ... Edited December 7, 2006 by gauss Вставить ник Quote
Alexspils Posted December 7, 2006 Author Posted December 7, 2006 а на 2-х разных никак низя?? у меня рутер не потянет скорее всего такую нагрузку Вставить ник Quote
balamutang Posted December 8, 2006 Posted December 8, 2006 (edited) а на 2-х разных никак низя?? у меня рутер не потянет скорее всего такую нагрузку можно конечно. у тебя кстати во второй строке фаервола очепятка - вместо точки запятая. Edited December 8, 2006 by balamutang Вставить ник Quote
Alexspils Posted December 9, 2006 Author Posted December 9, 2006 (edited) я просто вместо реального адреса вбивал ххх :) правила я правильно написал? почему or to xxx.xxx.xxx.xxx/22? Edited December 9, 2006 by Alexspils Вставить ник Quote
Alexspils Posted December 9, 2006 Author Posted December 9, 2006 (edited) с or разобрался. Надо было между переменными LV ставить or :) но вот форвардить ипфв всё равно не хочет. форвардит с такими правилами ${fwcmd} add fwd 127.0.0.1,3128 tcp from ${ournet} to { not ${LV10} or ${LV11} or ${LV12} or ${LV13} or ${LV14} or ${LV15} } dst-port 80 ${fwcmd} add fwd 127.0.0.1,3128 tcp from ${ournet} to { not ${LV20} or ${LV21} or ${LV22} or ${LV23} or ${LV24} or ${LV25} } dst-port 80 но тогда форвардит всё, и латвию и зарубеж... Edited December 9, 2006 by Alexspils Вставить ник Quote
balamutang Posted December 9, 2006 Posted December 9, 2006 с or разобрался. Надо было между переменными LV ставить or :) но вот форвардить ипфв всё равно не хочет. форвардит с такими правилами${fwcmd} add fwd 127.0.0.1,3128 tcp from ${ournet} to { not ${LV10} or ${LV11} or ${LV12} or ${LV13} or ${LV14} or ${LV15} } dst-port 80 ${fwcmd} add fwd 127.0.0.1,3128 tcp from ${ournet} to { not ${LV20} or ${LV21} or ${LV22} or ${LV23} or ${LV24} or ${LV25} } dst-port 80 но тогда форвардит всё, и латвию и зарубеж... потому что подход в принципе не правильный. давай лучше так попробуй:${fwcmd} table 1 add ${LV10} ...... ${fwcmd} table 1 add ${LV25} ${fwcmd} add fwd 127.0.0.1,3128 tcp from ${ournet} to not "table(1)" dst-port 80 Вставить ник Quote
Alexspils Posted December 9, 2006 Author Posted December 9, 2006 завтра утром попробую, утром пользователей меньше... Вставить ник Quote
Alexspils Posted December 10, 2006 Author Posted December 10, 2006 спасибо, всё получилось Вставить ник Quote
Alexspils Posted December 11, 2006 Author Posted December 11, 2006 только ipfw table 1 list показывает только 1-ые сети из переменных LV, пока просто добавил все сети по очереди в таблицу.Если есть менее громоздкое решение, дайте знать Вставить ник Quote
balamutang Posted December 12, 2006 Posted December 12, 2006 только ipfw table 1 list показывает только 1-ые сети из переменных LV, пока просто добавил все сети по очереди в таблицу.Если есть менее громоздкое решение, дайте знать что-то не понял про первые сети. если можно , то пару примеров приведите Вставить ник Quote
Alexspils Posted December 12, 2006 Author Posted December 12, 2006 например LV10="159.148.0.0/16,62.85.0.0/20,...." если добавлять переменные в таблицу, то ipfw table 1 show показывает 159.148.0.0/16 0 0 ..... ..... ..... Вставить ник Quote
balamutang Posted December 12, 2006 Posted December 12, 2006 (edited) например LV10="159.148.0.0/16,62.85.0.0/20,...."если добавлять переменные в таблицу, то ipfw table 1 show показывает 159.148.0.0/16 0 0 ..... ..... ..... а.. ну правильно. а теперь представь что будет если ты это в одну строку фаервола запихнешь типа :${fwcmd} add fwd 127.0.0.1,3128 tcp from ${ournet} to not 159.148.0.0/16,62.85.0.0/20,xxx.xxx.xxx/16,xxx.xxx.xxx/16,xxx.xxx.xxx/16,xxx.xxx.xxx/20,xxx.xxx.xxx/18,xxx.xxx.xxx/21,xxx.xxx.xxx/22,xxx.xxx.xxx/16,xxx.xxx.xxx/20,........... и тд dst-port 80 - это еще более громоздко, потому что все переменные тебе надо обязательно запихнуть в одно правило, иначе правила будут исключать друг-друга. в таблицах ты можешь сети и хосты менять на лету, не меняя самих правил фаервола и работать с таблицами фаер будет быстрей. а в твоем варианте с переменными это не проканает, придется каждый раз удалять правило и добавлять его, что не есть хорошо. строки заполняющие таблицу лучше вообще вынести во внешний скрипт и вызывать его из основного. при этом можно будет править таблицы не касаясь самого фаервола или даже хранить список сетей в БД. типа -----------правила фаервола-------------- .... ${fwcmd} add fwd 127.0.0.1,3128 tcp from ${ournet} to not "table(1)" dst-port 80 /etc/frwl/table1.sh .... -----------конец фаервола----------------- -----/etc/frwl/table1.sh---------------------- ${fwcmd}="/sbin/ipfw -q" ${fwcmd} table 1 flush ${fwcmd} table 1 add 159.148.0.0/16 ${fwcmd} table 1 add 62.85.0.0/20 ..... и тд -----конец /etc/frwl/table1.sh--------------- при этом подредактировав table1.sh можно сразу же запустить его на выполнение, не рискуя потом пилить в другой конец здания/города/области в случае ошибки в правилах. Edited December 12, 2006 by balamutang Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.