Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« : 16 Августа 2009, 01:29:55 » |
|
Собственно сабж. Как правильно разрулить http трафик на прозрачную проксю чтобы при этом юзерам все считало правильно? Прокся реально нужна т.к. с интернетом реально плохо.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #1 : 16 Августа 2009, 08:50:10 » |
|
Снизить нагрузку прокся поможет, но поверь - очень незначительно. Снизить нагрузку помогут грамотные тарифы и локальные ресурсы. Последнее, конечно, проблематично по законодательству, однако, даже укртелеком не гнушится ставить нелицензионные сервера линейки (или ВОВ, на habr-е читайте). Неплохо бы иметь свой локальный видеархив на несколько тысяч фильмов. Насчет технической части. Необходимо сделать правку nofire.pl, кусок кода типа: $NumIpfw=$End_num_ipfw; &SetIpfwRule(qq{deny ip from any to any}); превращается в $NumIpfw=$End_num_ipfw-2; &SetIpfwRule(qq{divert 1 ip from from table(0) to any}); &SetIpfwRule(qq{fwd 127.0.0.1,3128 tcp from table(0) to any dst-port 80}); &SetIpfwRule(qq{deny ip from any to any}); Этим самым мы будем считать трафик от клиента т.к. в стандартной схеме он считается при выходе из сервера, а при squid-е ip будут подменяться на ip сервера. Также мы оформили прозрачный заворот на проксю. Также обязательное переключение параметра net.inet.ip.fw.one_pass=0 - чтобы пакеты после попадания в pipe возвращались в фаервол. Также необходимо указать какую-то директиву в самом squide - она касается прозрачного проксирования. Гугл поможет
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #2 : 16 Августа 2009, 09:45:24 » |
|
Снизить нагрузку прокся поможет, но поверь - очень незначительно. Снизить нагрузку помогут грамотные тарифы и локальные ресурсы. Последнее, конечно, проблематично по законодательству, однако, даже укртелеком не гнушится ставить нелицензионные сервера линейки (или ВОВ, на habr-е читайте). Неплохо бы иметь свой локальный видеархив на несколько тысяч фильмов. Насчет технической части. Необходимо сделать правку nofire.pl, кусок кода типа: $NumIpfw=$End_num_ipfw; &SetIpfwRule(qq{deny ip from any to any}); превращается в $NumIpfw=$End_num_ipfw-2; &SetIpfwRule(qq{divert 1 ip from from table(0) to any}); &SetIpfwRule(qq{fwd 127.0.0.1,3128 tcp from table(0) to any dst-port 80}); &SetIpfwRule(qq{deny ip from any to any}); Этим самым мы будем считать трафик от клиента т.к. в стандартной схеме он считается при выходе из сервера, а при squid-е ip будут подменяться на ip сервера. Также мы оформили прозрачный заворот на проксю. Также обязательное переключение параметра net.inet.ip.fw.one_pass=0 - чтобы пакеты после попадания в pipe возвращались в фаервол. Также необходимо указать какую-то директиву в самом squide - она касается прозрачного проксирования. Гугл поможет Респект и уважуха! Я в курсе насчет нагрузки -- снижает нагрузку в среднем на 10-12%, что тоже хорошо. Видеоархив есть. Прокся уже есть, транспарент ужо включен. Попутно появился еще один вопрос по теме: при проведении указанных мероприятий как это отразится на трафике других протоколов? я имею ввиду net.inet.ip.fw.one_pass=0
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #3 : 16 Августа 2009, 10:08:05 » |
|
Это ты правильно заметил) Отразится. Надо добавить еще allow ip from table(0) to any в первом окне правил и во втором: allow ip from any to table(0) перед dyny ip from any to any в обоих случаях
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #4 : 16 Августа 2009, 11:47:49 » |
|
Это ты правильно заметил) Отразится. Надо добавить еще allow ip from table(0) to any в первом окне правил и во втором: allow ip from any to table(0) перед dyny ip from any to any в обоих случаях
как я понял правила из окон динамически очищаются, значит вышеуказанные правила нужно где-то в nofire.pl прописывать?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #5 : 16 Августа 2009, 12:07:03 » |
|
да
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #6 : 16 Августа 2009, 13:01:17 » |
|
Спасибо за помощь, вроде бы заработало. Изменения внесены вот такие: #======================================= Здесь поправочка для работы через проксю ================ #$NumIpfw=$End_num_ipfw; #&SetIpfwRule(qq{deny ip from any to any}); $NumIpfw=$End_num_ipfw-3; &SetIpfwRule(qq{divert 1 ip from table(0) to any}); &SetIpfwRule(qq{fwd 127.0.0.1,3128 tcp from table(0) to any dst-port 80}); &SetIpfwRule(qq{allow ip from table(0) to any}); &SetIpfwRule(qq{deny ip from any to any}); #=========================================================================================== $NumIpfw=$Start_num2_ipfw;
$n1=$NumIpfw+10; $n2=$NumIpfw+400;
&SetIpfwRule(qq{pipe tablearg ip from table(126) to table(127)}); # альтернативное направление -> клиент &SetIpfwRule(qq{skipto $n1 ip from not table(2) to any}); # не от клиента -> &SetIpfwRule(qq{pipe tablearg ip from any to table(20)}); # клиент -> клиент #======================================= Здесь тоже для прокси ================================== &SetIpfwRule(qq{allow ip from any to table(0)}); #============================================================================================
Надо будет проверить еще как считает.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #7 : 16 Августа 2009, 13:26:06 » |
|
Чтоб правильно считало (не считало дважды непрокcированный трафик), надо либо:
1) удалить ${f} add 510 divert 1 ip from any to any в rc.firewall 2) в nofire.pl заменить divert 1 ip from table(0) to any на divert 1 tcp from table(0) to any 80
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #8 : 16 Августа 2009, 15:00:29 » |
|
Чтоб правильно считало (не считало дважды непрокcированный трафик), надо либо:
1) удалить ${f} add 510 divert 1 ip from any to any в rc.firewall 2) в nofire.pl заменить divert 1 ip from table(0) to any на divert 1 tcp from table(0) to any 80
сделать или то или то? правильно я понимаю?
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #9 : 16 Августа 2009, 15:02:51 » |
|
Протестировал работу без учета считалок и убедился, что шейперы не шейпят http трафик - а это очень сильно не есть гуд, можно что-то сделать? 00050 allow tcp from any to me dst-port 22 00051 allow tcp from me 22 to any 00100 deny tcp from any to any dst-port 445 00110 allow ip from any to any via lo0 00120 skipto 1000 ip from me to any 00130 deny icmp from any to any in icmptypes 5,9,13,14,15,16,17 00140 deny ip from any to table(120) 00150 deny ip from table(120) to any 00160 skipto 2000 ip from any to me 00200 skipto 500 ip from any to any via fxp0 00300 skipto 4500 ip from any to any in 00400 skipto 450 ip from any to any recv fxp0 00420 divert 1 ip from any to any 00450 divert 2 ip from any to any 00490 allow ip from any to any 00500 skipto 32500 ip from any to any in 00510 divert 1 ip from any to any 00540 allow ip from any to any 01000 allow udp from any 53,7723 to any 01010 allow tcp from any to any setup keep-state 01020 allow udp from any to any keep-state 01100 allow ip from any to any 02000 check-state 02010 allow icmp from any to any 02012 allow gre from any to any 02020 allow tcp from any to any dst-port 67,68,80,443,1723 02050 deny ip from any to any via fxp0 02060 allow udp from any to any dst-port 53,67,68,123,7723 02070 allow tcp from any to any dst-port 53 02100 deny ip from any to any 05000 deny ip from not table(0) to any 05001 skipto 5010 ip from table(127) to table(126) 05002 skipto 5030 ip from any to not table(2) 05003 deny ip from any to not table(1) 05004 pipe tablearg ip from table(21) to any 05005 deny ip from any to any 05010 pipe tablearg ip from table(127) to any 05030 deny tcp from table(15) to any dst-port 25 05400 pipe tablearg ip from table(11) to any 31997 divert 1 ip from table(0) to any 31998 fwd 127.0.0.1,3128 tcp from table(0) to any dst-port 80 31999 allow ip from table(0) to any 32000 deny ip from any to any 32490 deny ip from any to any 33000 pipe tablearg ip from table(126) to table(127) 33001 skipto 33010 ip from not table(2) to any 33002 pipe tablearg ip from any to table(20) 33003 allow ip from any to table(0) 33004 deny ip from any to any 33400 pipe tablearg ip from any to table(10) 65535 allow ip from any to any
|
|
« Последнее редактирование: 16 Августа 2009, 15:05:58 от cell »
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #10 : 16 Августа 2009, 15:31:39 » |
|
да, шейпится только на исход. Надо менять rc.firewall чтоб входящий к клиенту пакеты шейпились при выходе из внутреннего интерфейса
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #11 : 16 Августа 2009, 16:49:24 » |
|
да, шейпится только на исход. Надо менять rc.firewall чтоб входящий к клиенту пакеты шейпились при выходе из внутреннего интерфейса
Как это правильно сделать?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #12 : 17 Августа 2009, 08:29:05 » |
|
это надо переделывать фаервол - пока мне не до этого. Проси помощи в зале
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #13 : 17 Августа 2009, 20:35:39 » |
|
Да я бы с радостью попросил в зале, только не вижу в нем аншлага. Прозрачный прокси сервер штука весьма часто применяемая и стандартная. Странно что здесь совсем ничего не предусмотренно на эту тему.
|
|
|
Записан
|
|
|
|
elite
Начальник планеты
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1226
In LAN we trust!
|
|
« Ответ #14 : 17 Августа 2009, 21:04:28 » |
|
Да я бы с радостью попросил в зале, только не вижу в нем аншлага. Прозрачный прокси сервер штука весьма часто применяемая и стандартная. Странно что здесь совсем ничего не предусмотренно на эту тему.
Видимо, при нынешних скоростях прокси никто не применяет )
|
|
|
Записан
|
|
|
|
|