Не для одного компьютера, а для всей локальной сети.
Другими словами, как перенаправить все исходящие HTTP запросы локальной сети на один сайт.
Есть локальная сеть организации.
Общий доступ к интернету организован с помощью шлюза на Debian, iptables на котором настроен с помощью пакета arno-iptables-firewall.
Нужно сделать так, чтобы при вводе любого http-адреса в любом браузере любой клиентской машины, человек попадал на один и тот же сайт. При этом все остальные сетевые службы, такие как аська, скайп, почта и т.д., должны работать без ограничений.
Да, сайт, на который должны попадать клиенты, находится на виртуальном хостинге, то есть у него нет внешнего ip-адреса. Вернее, сам адрес есть, но к нему привязаны ещё десятки различных доменных имён, поэтому доступ по http://[ip] невозможен.
Время ограничено, сделать всё надо за 15 минут.
Если бы целевой сайт находился на нормальном хостинге, то есть если бы ему был сопоставлен конкретный адрес интернета - всё решение ограничилось бы вводом единственной инструкции в iptables, а именно:
где $EXT_WEB - внешний ip-адрес сайта.
Но, как уже говорилось, это невозможно.
Поэтому пойдём другим путём, но в этом же направлении.
Устанавливаем на шлюз веб-сервер:
Настраиваем его - разрешаем обрабатывать инструкции .htaccess:
/etc/apache2/sites-enabled/000-default
В самом .htaccess делаем перенаправление на внешний веб-сервер по имени сайта:
/var/www/.htaccess
sitename.dom - наш целевой сайт.
Теперь при попытке зайти на шлюз по http, то есть по 80 порту - попадаем на sitename.dom.
Через iptables загибаем все http-запросы на веб-сервер шлюза. Все, кроме тех, что ведут на целевой сайт:
Здесь $GW_IP - адрес шлюза в локальной сети.
Чтобы правило действовало и после перезагрузки шлюза - добавляем его в автозагрузку:
/etc/rc.local
Комментарии и критика - приветствуются.
Если кто скажет как можно было сделать проще - буду благодарен.