Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: iptables -s 192.168.0.1/24 ! -s 192.168.0.1 как это сделать?  (Прочитано 4580 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Здравствуйте!
Локальная сеть выходит в интернет через машину с прозрачным squid. На этой же машине стоит веб сервер(apache2), к которому должны иметь доступ пользователи локальной сети. На этот веб сервер прикручен sams2 для блокирования некоторых страниц.
Сейчас настроено так:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source <внешний ip>
iptables -t nat -A PREROUTING -s 192.168.0.0/24 ! -d 192.168.0.1 -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128

И вроде бы абсолютно все работает как надо, но имеет место следующее:
Факт 1. Заходим из локалки на заблокированный сайт(вместо него указана заглушка http://localhost/sams2/messages/blocked.php)  и вместо странички заглушки видим:Not Found

The requested URL /sams2/messages/blocked.php was not found on this server.
Apache Server at localhost Port 80
Факт 2. Указываем адресом заглушки http://<внешний ip>/sams2/messages/blocked.php.
Тогда страничка заглушки грузится, но не грузится изображение на этой страничке.
Факт 3. Если указать адресом заглушки http://192.168.0.1/sams2/messages/blocked.php, то долго долго пытается установить соединение, но не выходит.

Во всех трех вариантах, если обратится напрямую по адресу http://192.168.0.1/sams2/messages/blocked.php или http://<внешний ip>/sams2/messages/blocked.php, то все грузится как надо.

Мои подозрения: когда веб сервер обращается сам к себе у него адресом источника является 192.168.0.1  и он по правилу iptables попадает на сквид, а сквид его перебрасывает на веб-сервер провайдера. И думаю, что надо бы к правилу iptables -t nat -A PREROUTING -s 192.168.0.0/24 ! -d 192.168.0.1 -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128 припсать ! -s 192.168.0.1, но дважды -s в правиле нельзя писать.
Везде где я упоминал провайдера на самом деле стоит другой прокси сервер, тоже с апачем. Но в контексте вопроса, это не имеет значения.

Верны ли мои подозрения? Если нет, то в чем дело?
Если верны, то как изменить правила? Так чтобы адресом источника во втором правиле была указана вся подсеть, кроме сервера.
Спасибо!



Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Неверные предположения. траффик с локального приложения не попадает в цепочку PREROUTING таблицы nat

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Только что проверил вот что. Попробовал обратится к моему серверу и запросить страничку другую, которой точно нет.
В итоге в сообщении об ошибке был указан Apache/2.2.16 (Debian) Server

А если поглядеть на факт 1, то там выводится просто Apache Server. Из чего делаю вывод, что запросы действительно перенаправляются дальше на сервер "провайдера", а не обрабатывается на моем сервере.

Пользователь решил продолжить мысль 27 Июля 2011, 11:57:22:
Может в днс проблема?
cat /etc/resolv.conf
nameserver 127.0.0.1
nameserver <адрес провайдера>

cat /etc/hosts
127.0.0.1       localhost servername
192.168.0.1   servername
<внешний ip> servername

cat dnsmasq.conf
listen-address=127.0.0.1,192.168.0.1
« Последнее редактирование: 27 Июля 2011, 11:58:08 от AAXEE »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Может всё-таки конфиги апача и кальмара покажете? или так и будем в угадайку играть и читать Ваши ..ммм... какбы помягче.... идеи?

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Конфиги апача вообще не трогал, все по умолчанию, только sams сам сделал себе один файл.

cat /etc/apache2/apache2.conf
(Нажмите, чтобы показать/скрыть)

cat /etc/apache2/ports.conf
(Нажмите, чтобы показать/скрыть)

cat /etc/apache2/conf.d/apache.sams2.conf
(Нажмите, чтобы показать/скрыть)

cat /etc/apache2/sites-available/default
(Нажмите, чтобы показать/скрыть)

sites-enables/000-default является симлинком для sites-available/default
httpd.conf пустой

cat /etc/squid/squid.conf
(Нажмите, чтобы показать/скрыть)

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Пока некогда ковыряться... Попробуйте добавить в squid.conf
always_direct allow localhostчтобы запрос к локальному http-серверу однозначно не отправлял на родительский прокси

Оффлайн AAXEE

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
К сожалению это не помогло. Никаких изменений.

 

Страница сгенерирована за 0.109 секунд. Запросов: 22.