У меня есть Linux, работающий как маршрутизатор. Существует сетевая карта, подключенная к Интернету (WAN), сетевая карта, подключенная к 8-портовому коммутатору GbE (LAN), и сетевая карта, подключенная к беспроводному N-маршрутизатору Linksys (WLAN). Маршрутизация между всем работает отлично.
У меня полностью отключена безопасность на беспроводном маршрутизаторе, но сетевая карта WLAN защищена брандмауэром, поэтому она будет принимать только DNS-запросы и PPTP VPN-соединения. В настоящее время трафик HTTP / HTTPS и все остальное заблокировано.
Я хотел бы запустить что-то, что прослушивает порт 80/443 сетевого адаптера WLAN, и для подключений, не связанных с VPN, при любом запросе HTTP / HTTPS он вернет одну веб-страницу с надписью «Не аутентифицирован» и объяснит, как войти в VPN. Кажется, мне нужен прозрачный прокси, но все мои поиски, кажется, направляют меня к Squid, который уже запущен на моем сервере и кажется излишним для этой простой задачи.
Есть ли более простая и легкая программа, которая делает именно это, или я должен просто проглотить ее и запустить два экземпляра Squid (или выяснить, как его настроить)?
Или это вся эта VPN, которую я делаю, полная ерунда, и мне нужно просто включить шифрование на беспроводном маршрутизаторе?
Как уже упоминалось, вы можете настроить простой веб-сервер для прослушивания запросов http / https. Выберите свой фаворит, есть из чего выбрать. Я бы сделал это с помощью apache, но только потому, что это то, с чем я больше всего знаком.
Как только веб-сервер появится, вы захотите добавить правила iptables, которые выглядят так, чтобы перехватывать трафик и отправлять его на локальный веб-сервер.
/sbin/iptables -t nat -A PREROUTING -p tcp -i {wlanif} --dport 80 -j REDIRECT --to-ports 80
/sbin/iptables -t nat -A PREROUTING -p tcp -i {wlanif} --dport 443 -j REDIRECT --to-ports 443
Нет необходимости устанавливать какой-либо модный HTTP-сервер, прокси или модуль Perl, если у вас есть netcat и оболочка:
$ пока правда; do (echo -e 'HTTP 1.0 200 OK \ r \ n \ r \ n'; cat static.html) | NC -q0 -l -p 80; сделано
Это для оригинального netcat. GNU netcat немного отличается, но вы можете использовать тот же принцип. Что касается HTTPS, вы можете использовать тот же трюк с "openssl s_server".
Хорошее предложение по поводу смокинга. Также многие типичные домашние широкополосные маршрутизаторы используют lighttpd в качестве веб-сервера для панелей управления и прочего, так что это может быть другим вариантом.
Если страница полностью статична, я бы использовал смокинг, веб-сервер ядра. Он невероятно быстрый, стабильный и очень надежный для статического контента. Я не уверен, будет ли он обрабатывать трафик SSL, поэтому вам может потребоваться прокси-сервер этого контента на сервер с загруженными на него сертификатами, поскольку это не похоже на то, что у вас есть сертификаты на этом компьютере.
Вы должны использовать небольшой веб-сервер прямо в вашем маршрутизаторе Linux. Нет необходимости перенаправлять трафик на другой веб-сервер с помощью Squid ...
Помимо уже предложенного lighttpd, Рекомендую посмотреть HTTPi, который представляет собой очень маленький веб-сервер на Perl.
Вы также можете посмотреть Эта статья в LinuxJournal, которые создают веб-сервер с использованием Python примерно в 20 строках кода.
Поскольку вы хотите обслуживать только одну статическую страницу, не смотрите на более сложные вещи ...