Jump to content

Recommended Posts

Posted (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 by Alexspils
Posted (edited)

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

соответственно правила файрвола должны быть:

...

ipfw add fwd 127.0.0.1, 3128 ...

...

Edited by gauss
Posted (edited)

а на 2-х разных никак низя?? у меня рутер не потянет скорее всего такую нагрузку

можно конечно. у тебя кстати во второй строке фаервола очепятка - вместо точки запятая.

Edited by balamutang
Posted (edited)

я просто вместо реального адреса вбивал ххх :) правила я правильно написал? почему or to xxx.xxx.xxx.xxx/22?

Edited by Alexspils
Posted (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 by Alexspils
Posted
с 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

Posted

только ipfw table 1 list показывает только 1-ые сети из переменных LV, пока просто добавил все сети по очереди в таблицу.Если есть менее громоздкое решение, дайте знать

Posted

только ipfw table 1 list показывает только 1-ые сети из переменных LV, пока просто добавил все сети по очереди в таблицу.Если есть менее громоздкое решение, дайте знать

что-то не понял про первые сети. если можно , то пару примеров приведите

Posted (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 by balamutang

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.