Здравствуйте!Я администратор у маленького провайдера. Как вы знаете, есть закон по которому мы должны блокировать политически неблагонадежные сайты. Для нас большой проблемы нет, наш оператор их блокирует, дополнительно заморачиваться и не очнь надо. Но вот наша доблесная прокуратура решила заработать себе галочку. Через суд нас обязали прикрыть ролик на ютубе.
Ну раз наш самый справедливый и гумманный сказал - значит надо!
У меня стоит маршрутизатор под управлением FreeBSD. Воткнул в него Режик+Squid прозрачно. Вместо ролика со злыми ингушами у наших абонентов появляется страничка с "Ай-яй-яй, не ходи сюда!!!". Все замечательно.
Только вот... Зайдя на любой сайт, типа 2ip.ru, он мне говорит IP моего маршрутизатора, а вот за этим прокси вот твой реальный АЙПИ. Не кошерно конечно, но и не так как уж и страшно. Но вот стали переодически на Яндексах и Гуглах появляться сообщения: ваш адрес очень любопытный, много задает вопросов, вы наверное терминатор!!! И требует доказать абоненту, что он истинный потомок Джона Конара, а не какойто там житкий. В общем надо капчу вводить... А это мне уже не нравиться.
Нашел в сети такую технологию Сквида TPROXY. С помощью нее Сквид загружает сайт, использую адрес клиента. Но TPROXY работает только под Linux. В портах есть lusca_head. Это сквид с TPROXY для FreeBSD. Попробывал ее.
Если включить transparent - все работает. А вот если tproxy, то в браузере выдает такую штуку.
В браузере:While trying to process the request:
GET / HTTP/1.1
Host: 192.168.1.59:83
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: pma_lang=ru; pma_mcrypt_iv=JkfL3GPfLzg=; pmaUser-1=5o6xJk1UOio=; pma_collation_connection=utf8_general_ci
Connection: keep-alive
Cache-Control: max-age=0
The following error was encountered:
Invalid Request
Перед GET иммено стоят непонятные невидимые символы.
На сквид я заворачиваю с помощью ipfw:
ipfw add fwd 127.0.0.1,3128 tcp from any to not me in xmit em1
ipfw add fwd 127.0.0.1,3128 tcp from any to not me in recv em1Уж очень хочется оставить ipfw и FreeBSD, потому что стоит еще самописный демон, который дребует именно ipfw. Также отлаженная система управления клиентами и т.д.
Уважаемые спецы, может кто сталкивался с подобной задачей? Помогите советом.
С уважением,
Алексей
>[оверквотинг удален]
> ipfw add fwd 127.0.0.1,3128 tcp from any to not me in xmit
> em1
> ipfw add fwd 127.0.0.1,3128 tcp from any to not me in recv
> em1
> Уж очень хочется оставить ipfw и FreeBSD, потому что стоит еще самописный
> демон, который дребует именно ipfw. Также отлаженная система управления клиентами и
> т.д.
> Уважаемые спецы, может кто сталкивался с подобной задачей? Помогите советом.
> С уважением,
> АлексейВ Squid
forwarded_for delete
via off
> В Squid
> forwarded_for delete
> via offСпасибо за отклик!
В данном случае тот же 2ip скажет что прокси вы не используете. Но адрес покажет проксевый.
Соответственно все равно будут получать капчу в поисковиках. Хотелость бы чтобы удаленный хость видил ip клиента, а не прокси...С уважением,
Алексей.
>> В Squid
>> forwarded_for delete
>> via off
> Спасибо за отклик!
> В данном случае тот же 2ip скажет что прокси вы не используете.
> Но адрес покажет проксевый.
> Соответственно все равно будут получать капчу в поисковиках. Хотелость бы чтобы удаленный
> хость видил ip клиента, а не прокси...
> С уважением,
> Алексей.а зачем вы _все_ DST IP заворачиваете на прокси?
Добрый,> Уважаемые спецы, может кто сталкивался с подобной задачей? Помогите советом.
> С уважением,
> АлексейА ядро собрано с:
options IP_NONLOCALBIND?
А вообще вот тут пример: http://tproxy.no-ip.org/
http://habrahabr.ru/post/219435/ - только перепишите под себя правила.
Во-первых я не првильно прописал настройку tproxy:
Было: http_port 3128 tproxy
Надо: http_port 3128 transparent proxyНо в таком случае запроса от реального адреса не происходит. То есть прокси запрос делает от себя.
Включил полный дебаг, увидел следующее:
comm_dfopen6: FD: TPROXY comm_ips_bind_rem() failed: errno 1 ((1) Operation not permited)Погуглил. Ага не разрешает спуфить адрес не от рута.
> options IP_NONLOCALBIND
На эту опцию make ругается, что нет такой...
Нашел ссылочку:
http://adsh.org.ua/blog/comments/52/#commentsСейчас пока нет возможности заниматься данным вопросом. В понедельник перекомпилирую ядро, попробую, отпишусь по результатам.
Большое спасибо за Ваше участие!
С уважением,
Алексей.
Все получилось!Пропатчил сорцы, перекомпилировал и установил ядро. На внешнем хосте отобразился мой адрес, а не проксевый.
Пошел готовить боевой сервак.
Большое спасибо!
С уважением,
Алексей.
Еще раз здравствуйте!Недавно поднимал сервак для тестов с проксями... Оказалось что lusca-head в портах уже нет. В порту www/squid он версии 3.4.9. Почитал README, там написано, что TPROXY нормально работает, надо только опции IPFW_TRANSPARENT поставить. Попробовал, выдает ошибку:
FATAL: http(s)_port: TPROXY support in the system does not work.Все дело в том, что его запускать надо рутом, т.е. в rc.conf добавит squid_user="root". Работает без проблем.
Допустим клиентская сеть 10.0.0.0/24 на интерфейсе em1, внешняя на em0, тогда фаервол будет выглядить так:ipfw add fwd 127.0.0.1,3128 all from 10.0.0.0/24 to any 80 in recv em1
ipfw add fwd 127.0.0.1 all from any 80 to 10.0.0.0/24 in recv em0Если вторую строку не добавить, то пакеты от сервера будут сразу пересылаться к клиенту, не попадая в сквид.
С уважением,
Алексей!
> Все дело в том, что его запускать надо рутом, т.е. в rc.conf
> добавит squid_user="root". Работает без проблем.Не пугайте людей. Пропачьте сорцы, как в моей заметке, и юзайте с новым сквидом.
>> Все дело в том, что его запускать надо рутом, т.е. в rc.conf
>> добавит squid_user="root". Работает без проблем.
> Не пугайте людей. Пропачьте сорцы, как в моей заметке, и юзайте с
> новым сквидом.Добрый день! Тоже столкнулся с задачей спуфа адресов через прокси. Вопрос: для современной FreeBSD 11.1 патч будет работоспособен?