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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: перенаправление на адрес локального web-сервера  (Прочитано 7225 раз)

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

Оффлайн marth

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Есть задача, все http запросы  пользователей одной подсети перенаправлять на  адрес локального web-сервера. Т.е. при попытке пользователя открыть любую страницу в браузере, он попадает на локальный web-сайт.
Имеется PC с Ubuntu Server 12.04 LAMP , на нем два сетевых интерфейса eth0, eth1.
eth0 должен имеет неограниченный доступ к интернету, через дополнительный роутер.
На eth1 все http запросы  пользователей должны перенаправляться  на  адрес локального web-сервера, установленного на этом же PC.
Пробывал, решать задачу через iptables, перенаправляя все http запросы интерфейса eth1 на определенный адрес. Но это работает, только когда для интерфеса eth1 позволено разрешать DNS запросы через интернет.  Если интернета нет, то при открытии страниц, происходит ошибка.
Есть мысли поставить DNS сервер на этот PC, но не могу понять, как сделать, чтобы  он запросы для всех зон, разрешал в один адрес.
Ткните, пожалуйста, носом куда копать.  Вроде простая задача, но тут споткнулся.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
-i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 80
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн marth

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Это  не работает, если отключен интернет. Браузер не может разрешить имя, и выводит об этом сообщение.
Команду вводил такую
iptables -t nat -I OUTPUT -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 80 
(сейчас пока интерфейс один, поэтому -i eth1 опустил)
Работает только если есть интернет, и браузер может разрешить имя. Задача стоит, чтобы это могло работать без интернета

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Тогда нормально ставьте задачу.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн marth

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Я написал в первом посте "Пробывал, решать задачу через iptables, перенаправляя все http запросы интерфейса eth1 на определенный адрес. Но это работает, только когда для интерфеса eth1 позволено разрешать DNS запросы через интернет.  Если интернета нет, то при открытии страниц, происходит ошибка."

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Я не вижу проблемы. Если сайт нормально недоступен, какая разница, если он так и так не откроется?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн marth

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
сайт установлен локально (доступен при остутствии игтернета) , нужно чтобы все  http запросы в локальной сети , перенаправлялись на него.
СЕйчас, если инет отключен, ,браузеры выдают ошибку, так как не могут разрешить DNS.
Думаю, нужно ставть локальный DNS сервер, и  все запросы разрешать в один адрес. КАк сделать разрешение всех в один IP не знаю.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Зачем? Если всё равно сайт, который пользователи запрашивают, в любом случае не откроется?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн marth

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Затем, чтобы у них открылся другой сайт. )
В некой местности есть открытая зона Wi-Fi, нужно чтобы люди случайно нашедшие эту зону, и попытавшиеся ей воспользоваться для просмотра веба, попали на локальный сайт.
Зачем, это не наш вопрос. Наш вопрос каким образом это реализовать.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Закрыть WiFi.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн marth

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
WiFi специально открытый, чтобы люди попали на этот сайт.

Пользователь решил продолжить мысль 20 Мая 2014, 17:33:07:
Решил задачу, через поднятие локального DNS сервера, где прописана одна зона root.
iptables при таком решении, можно вообще не трогать
Где нашел решение, уже не помню, поэтому привожу как есть, без ссылки первоисточник.

В файле named.conf объявляем только одну зону:
zone "." { type master; file "/etc/bind/root"; };
В файле /etc/bind/root объявляем эту зону

$ORIGIN .
$TTL 1H
@   IN   SOA    @ none. (
            0
            1D
            1H
            1W
            3H );
    IN    NS     10.0.0.1
    IN    A      10.0.0.1
*   IN    A      10.0.0.1

10.0.0.1 заменить на ип, который должен отдавать сервер
« Последнее редактирование: 20 Мая 2014, 17:33:07 от marth »

Оффлайн marth

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Не до конца решил задачу.
Сейчас запросы вида yandex.ru успешно перенаправляются на локальный сайт. Но если в запросе указано типа yandex.ru/bla-bal, то местный апач выдает ошибку 404, а нужно перенаправление на index.php
Сайт построен на движке Cotoni (мопед не мой), использует rewriteengine . Конфигурация .htaccess  такая
################ Cotonti Handy URLs for Apache #######################

# Below are the rules to be included in your main .htaccess file or httpd.conf

# Rewrite engine options
Options -Indexes
RewriteEngine On

# Server-relative path to Cotonti. Replace it with your path if you run Cotonti
# in a subfolder
RewriteBase "/"

# Language selector
RewriteRule ^(en|ru|de|nl)/(.*) $2?l=$1 [QSA,NC,NE]

# Sitemap shortcut
RewriteRule ^sitemap\.xml$ index.php?r=sitemap [L]

# Admin area and message are special scripts
RewriteRule ^admin/([a-z0-9]+) admin.php?m=$1 [QSA,NC,NE,L]
RewriteRule ^(admin|login|message)(/|\?|$) $1.php [QSA,NC,NE,L]

# System category has priority over /system folder
RewriteRule ^system/?$  index.php?rwr=system [QSA,NC,NE,L]

# All the rest goes through standard rewrite gateway
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]+) index.php?rwr=$1 [QSA,NC,NE,L]

Добавление в конфигурацию  ErrorDocument 404  c ссылкой на локальную страницу не помогает.
 

Оффлайн Dburus

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
День добрый, автор. Решил это вопрос? Если решил, поделись решением, пожалуйста.

Оффлайн marth

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Добрый! )
Давно дело было. Вроде в DNS прописал все переадресацию на адрес локального сервера.

Оффлайн Dburus

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Ха-ха-ха.  ;D Это же и было задачей изначальной. Жаль, что способа не помните...

 

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