Добрый день!
Проблема заключается в следующем. Есть настроенный сервер, на котором вращается NAT(iptables) и proxy (Squid версии 2.7), чтоб народ в локалке в инет ходил. Заключили договор с электронной библиотекой, права доступа определяются через IP, т.е. локалка ходит в библиотеку нормально со всеми привилегиями. Нужно организовать перенаправление входящих подключений на наш сервак, на эту библиотеку, чтобы пользователи из дома могли серфить по библиотеке как будто из локалки.только через iptables организовать не вышло. так как на IP библиотеки висят несколько сайтов.
iptables -t nat -A PREROUTING -p tcp -d 1.1.1.1 --dport 80 -j DNAT --to-destination 2.2.2.2:80
iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 80 -j SNAT --to-source 1.1.1.11.1.1.1 - мой IP
2.2.2.2 - IP библиотеки по whoisПытался все входящие заворачивать на Squid и через
deny_info http://URL.com/ all
перенаправлять все на этот сайт, тоже не вышло, squid просто отбрасывает пакет на урлу не пропуская его через себя.Помогите решить проблему, 3-ий день не получается и идеи иссякли.
>[оверквотинг удален]
> DNAT --to-destination 2.2.2.2:80
> iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 80 -j
> SNAT --to-source 1.1.1.1
> 1.1.1.1 - мой IP
> 2.2.2.2 - IP библиотеки по whois
> Пытался все входящие заворачивать на Squid и через
> deny_info http://URL.com/ all
> перенаправлять все на этот сайт, тоже не вышло, squid просто отбрасывает пакет
> на урлу не пропуская его через себя.
> Помогите решить проблему, 3-ий день не получается и идеи иссякли.пробуй в прероунтинг заворачивать не на Ip а на name Либо нужно алиас прокинуть в сквиде чтобы по одному из твоих внутренних ip открувался внешний адрес и потом роутить на него из iptables. Удаленка по схеме подключение к локалке --> прокинутый ip ---> адрес библиотеки
>>[оверквотинг удален]
>> DNAT --to-destination 2.2.2.2:80
>> iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 80 -j
>> SNAT --to-source 1.1.1.1как дома набрав url библиотеки они попадают к вам?
>> 1.1.1.1 - мой IP
>> 2.2.2.2 - IP библиотеки по whois
>> Пытался все входящие заворачивать на Squid и через
>> deny_info http://URL.com/ allacl all правильно выбран? попробуйте вместо all тут указать acl с url
>> перенаправлять все на этот сайт, тоже не вышло, squid просто отбрасывает пакет
>> на урлу не пропуская его через себя.
>> Помогите решить проблему, 3-ий день не получается и идеи иссякли.
> пробуй в прероунтинг заворачивать не на Ip а на name Либо нужнопосле загрузки правил в iptables имен там не будет.
> алиас прокинуть в сквиде чтобы по одному из твоих внутренних ip
> открувался внешний адрес и потом роутить на него из iptables. Удаленка
> по схеме подключение к локалке --> прокинутый ip ---> адрес библиотеки
>>>[оверквотинг удален]
>>> DNAT --to-destination 2.2.2.2:80
>>> iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 80 -j
>>> SNAT --to-source 1.1.1.1
> как дома набрав url библиотеки они попадают к вам?
>>> 1.1.1.1 - мой IP
>>> 2.2.2.2 - IP библиотеки по whois
>>> Пытался все входящие заворачивать на Squid и через
>>> deny_info http://URL.com/ all
> acl all правильно выбран? попробуйте вместо all тут указать acl с urlхотя наверно так тоже не будет работать, скорей всего после этого браузер пойдет напрямую, а не через прокси, но попробуйте.
нужно чтобы они дома для хождения в библиотеку в браузере указывали использовать ваш прокси, ну и вам соответственно это разрешить.
>>> перенаправлять все на этот сайт, тоже не вышло, squid просто отбрасывает пакет
>>> на урлу не пропуская его через себя.
>>> Помогите решить проблему, 3-ий день не получается и идеи иссякли.
>> пробуй в прероунтинг заворачивать не на Ip а на name Либо нужно
> после загрузки правил в iptables имен там не будет.
>> алиас прокинуть в сквиде чтобы по одному из твоих внутренних ip
>> открувался внешний адрес и потом роутить на него из iptables. Удаленка
>> по схеме подключение к локалке --> прокинутый ip ---> адрес библиотеки
> нужно чтобы они дома для хождения в библиотеку в браузере указывали использовать
> ваш прокси, ну и вам соответственно это разрешить.Это, конечно, вариант, но хотелось бы более красивое решение, пользователи не будут постоянно перенастраивать проксю в браузере, а мне не хочется ловить весь траффик у себя на сервере. К сожалению в браузерах нет функции "Использовать прокси-сервер для следующих URL".
>>>[оверквотинг удален]
>>> DNAT --to-destination 2.2.2.2:80
>>> iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 80 -j
>>> SNAT --to-source 1.1.1.1
> как дома набрав url библиотеки они попадают к вам?Они набирают мой урл (http://1.1.1.1), и должны вылетать на библиотеку с IP 1.1.1.1
>>> 1.1.1.1 - мой IP
>>> 2.2.2.2 - IP библиотеки по whois
>>> Пытался все входящие заворачивать на Squid и через
>>> deny_info http://URL.com/ all
> acl all правильно выбран? попробуйте вместо all тут указать acl с urlНе понял зачем, ведь через deny_info я определяю куда пойдет пользователь в случае отказа. Кроме всех правил есть http_access deny all, и вот этих all, если срабатывает правило, squid отправляет на указанный в deny_info URL.
>>> перенаправлять все на этот сайт, тоже не вышло, squid просто отбрасывает пакет
>>> на урлу не пропуская его через себя.
>>> Помогите решить проблему, 3-ий день не получается и идеи иссякли.
>> пробуй в прероунтинг заворачивать не на Ip а на name Либо нужноЗаворачивать на name не получиться, потому что iptables утилита сетевого уровня и понимает только IP
> после загрузки правил в iptables имен там не будет.
>> алиас прокинуть в сквиде чтобы по одному из твоих внутренних ip
>> открувался внешний адрес и потом роутить на него из iptables. Удаленка
>> по схеме подключение к локалке --> прокинутый ip ---> адрес библиотекиПро алиас не понял, можно поподробнее, и, если можно, с примером.
Заранее спасибо.
>>>>[оверквотинг удален]
>>>> DNAT --to-destination 2.2.2.2:80
>>>> iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 80 -j
>>>> SNAT --to-source 1.1.1.1
>> как дома набрав url библиотеки они попадают к вам?
> Они набирают мой урл (http://1.1.1.1), и должны вылетать на библиотеку с IP
> 1.1.1.1при этом в данных пакета, в заголовках http, URL библиотеки не будет, а если как вы говорите там несколько сайтов, и если все на одном порту, то вы будите поподать только на один, если менять только IP.
>>>> 1.1.1.1 - мой IP
>>>> 2.2.2.2 - IP библиотеки по whois
>>>> Пытался все входящие заворачивать на Squid и через
>>>> deny_info http://URL.com/ all
>> acl all правильно выбран? попробуйте вместо all тут указать acl с url
> Не понял зачем, ведь через deny_info я определяю куда пойдет пользователь в
> случае отказа. Кроме всех правил есть http_access deny all, и вот
> этих all, если срабатывает правило, squid отправляет на указанный в deny_info
> URL.по моему про http_access deny all выше вы ничего не писали, а acl имеет значение.
>[оверквотинг удален]
>>>> Помогите решить проблему, 3-ий день не получается и идеи иссякли.
>>> пробуй в прероунтинг заворачивать не на Ip а на name Либо нужно
> Заворачивать на name не получиться, потому что iptables утилита сетевого уровня и
> понимает только IP
>> после загрузки правил в iptables имен там не будет.
>>> алиас прокинуть в сквиде чтобы по одному из твоих внутренних ip
>>> открувался внешний адрес и потом роутить на него из iptables. Удаленка
>>> по схеме подключение к локалке --> прокинутый ip ---> адрес библиотеки
> Про алиас не понял, можно поподробнее, и, если можно, с примером.
> Заранее спасибо.
> по моему про http_access deny all выше вы ничего не писали, а
> acl имеет значение.Про http_access deny all я не писал, это правило которое есть по умолчанию.
да, acl имеет значение, в данном случае
acl all src all
Проблема решается следующим образом.
1. В iptables добавляется правило
-A PREROUTING -p tcp -m tcp -i eth0 --dport 80 -j REDIRECT --to-ports 3128где eth0 - внешний интерфейс.
2. В конфиг Squid добавляем следующее
# Определяем acl с регулярным выражением содержащим название нашей библиотеки ,
# в данном случае biblioclub
acl biblioclub dstdom_regex -i biblioclub
# Разрешаем доступ для всех на все домены содержащие слово biblioclub
http_access allow all biblioclub
# Стандартное правило запрещающее всем и все, что не оговорено в правилах выше
http_access deny all3. Ставим Firefox, добавляем в него FoxyProxy. Добавляем в FoxyProxy наш прокси сервер на 80 порту. Настраиваем шаблон URL на наш сайт библиотеки.
И вуаля!!!! Все работает.