URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 6552
[ Назад ]

Исходное сообщение
"Перенаправление входящий подключений на внешний WEB сервер."

Отправлено alextyapin , 16-Ноя-10 17:41 
Добрый день!
Проблема заключается в следующем. Есть настроенный сервер, на котором вращается 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.1

1.1.1.1 - мой IP
2.2.2.2 - IP библиотеки по whois

Пытался все входящие заворачивать на Squid и через
deny_info http://URL.com/ all
перенаправлять все на этот сайт, тоже не вышло, squid просто отбрасывает пакет на урлу не пропуская его через себя.

Помогите решить проблему, 3-ий день не получается и идеи иссякли.


Содержание

Сообщения в этом обсуждении
"Перенаправление входящий подключений на внешний WEB сервер."
Отправлено kim303 , 19-Ноя-10 17:15 
>[оверквотинг удален]
> 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 ---> адрес библиотеки


"Перенаправление входящий подключений на внешний WEB сервер."
Отправлено reader , 19-Ноя-10 17:44 
>>[оверквотинг удален]
>> 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 ---> адрес библиотеки


"Перенаправление входящий подключений на внешний WEB сервер."
Отправлено reader , 19-Ноя-10 18:03 
>>>[оверквотинг удален]
>>> 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 ---> адрес библиотеки


"Перенаправление входящий подключений на внешний WEB сервер."
Отправлено alextyapin , 22-Ноя-10 10:56 
> нужно чтобы они дома для хождения в библиотеку в браузере указывали использовать
> ваш прокси, ну и вам соответственно это разрешить.

Это, конечно, вариант, но хотелось бы более красивое решение, пользователи не будут постоянно перенастраивать проксю в браузере, а мне не хочется ловить весь траффик у себя на сервере. К сожалению в браузерах нет функции "Использовать прокси-сервер для следующих URL".


"Перенаправление входящий подключений на внешний WEB сервер."
Отправлено alextyapin , 22-Ноя-10 10:18 
>>>[оверквотинг удален]
>>> 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 ---> адрес библиотеки

Про алиас не понял, можно поподробнее, и, если можно, с примером.

Заранее спасибо.


"Перенаправление входящий подключений на внешний WEB сервер."
Отправлено reader , 22-Ноя-10 10:54 
>>>>[оверквотинг удален]
>>>> 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 ---> адрес библиотеки
> Про алиас не понял, можно поподробнее, и, если можно, с примером.
> Заранее спасибо.


"Перенаправление входящий подключений на внешний WEB сервер."
Отправлено alextyapin , 22-Ноя-10 15:25 
> по моему про http_access deny all выше вы ничего не писали, а
> acl имеет значение.

Про http_access deny all я не писал, это правило которое есть по умолчанию.

да, acl имеет значение, в данном случае
acl all src all



"Перенаправление входящий подключений на внешний WEB сервер."
Отправлено alextyapin , 23-Ноя-10 12:55 
Проблема решается следующим образом.
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 all

3. Ставим Firefox, добавляем в него FoxyProxy. Добавляем в  FoxyProxy наш прокси сервер на 80 порту. Настраиваем шаблон URL на наш сайт библиотеки.

И вуаля!!!! Все работает.