skew_death Posted November 6, 2019 Добрый день, в данный момент пытаюсь сделать страницу заглушку на Squid + Mikrotik, из того что есть: Mikrotik с адрес листами абонентов которые "должны" денег, есть "белые" адреса сайта и оплаты, есть DSTnat который отправляет пользователей с сайтов не из "белого" списка по портам 80,8080,443 на внутренний адрес со squid. Squid настроен ssl_bump + intercept по порту 3129. Собственно сама проблема: не работает переадресация на squid, браузер или не выдает ничего(таймаут) или ERR_CONNECTION_REFUSED. В итоге "хочецца" как у ростелекома, при минусе на балансе отправлять на страницу "дай денег", можно с матами на сертификат, ну или просто скидывать на IP адрес с уже имеющимся OV сертификатом от комодо. Кто что подскажет? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MMM Posted November 6, 2019 nginx вместо squid ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
skew_death Posted November 6, 2019 Был такой вариант, но не совсем понятно, тоже использовать proxy на nginx? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MMM Posted November 6, 2019 ну требуется же только 302 редирект на сайт с оплатой послать? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
skew_death Posted November 6, 2019 Вполне этого хватит, чтобы люди ввели л\с и проверили баланс. Пробовали делать это на beget, не получилось, возможно из-за ddos защиты которая у них стоит. Если я правильно понял, то через dstnat заворачиваем на внутренний сервер(mikrotik не поддерживает ссылки, только адреса), далее 302ым отправляем на страницу оплаты? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ixi Posted November 6, 2019 Завернуть такой трафик на нгинкс и проксировать в личный кабинет, добавив в заголовки $remote_addr. Абонент сразу получает страницу с тарифом, балансом и кнопкой оплаты на необходимую сумму / обещаный платёж. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
murano Posted November 6, 2019 Для начала, у вас должен быть http-трафик разрешен в инет у заблокированного абонента. Только в момент установки сессии можно произвести редирект. Если вы абоненту все наглухо зарубаете, то и редирект не состоится. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rdc Posted November 6, 2019 Идея неживая уже, все сайты давно на https и ничего кроме ругани на сертификат абонент не увидит. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted November 6, 2019 25 minutes ago, rdc said: Идея неживая уже, все сайты давно на https и ничего кроме ругани на сертификат абонент не увидит. Вообще, для "хочу денег - дай пароль" придумали специальный код ответа 511. В отличие от 302, броузер знает, что этот ответ генерится не сайтом, на который пошли, а системой доступа. Помню много лет назад были по этому поводу на западе дискуссии, и кто-то говорил, что порешал эту проблему. Как оно работает в целом - понятия не имею, но в самом простом случае оно редиректит, при этом клиент понимает, что не сайт свистнули, а провайдер не пускает. https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/511 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
skew_death Posted November 7, 2019 @vop captive portal это конечно хорошо, только вот не знаю как оно будет работать на 7, 10 точно поддерживает, но большинство людей все еще сидят на 7, молчу про xp, такие тоже есть. Но опять же таких уже не так много и у многих есть смартфоны. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alexmern Posted November 7, 2019 5 hours ago, vop said: Вообще, для "хочу денег - дай пароль" придумали специальный код ответа 511. Придумать то придумали, а реализовать забыли. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alex39x Posted November 7, 2019 8 часов назад, rdc сказал: Идея неживая уже, все сайты давно на https и ничего кроме ругани на сертификат абонент не увидит. Раньше на nginx 302 перенаправляли. Сейчас убрали - https. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted November 7, 2019 9 hours ago, alexmern said: Придумать то придумали, а реализовать забыли. Не забыли, насколько я понял, а "осознали", что это таки, дыра. Поэтому убрали. :) Ну а для обычного трафика все же лучше делать 511 ошибку, нежели 302. Просто утверждается, что есть софт, который понимает ее, как задумано (понятия не имею, какой именно). А тот, который не понимает, тот делает просто редирект. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alexmern Posted November 7, 2019 (edited) 16 minutes ago, vop said: Не забыли, насколько я понял, а "осознали", что это таки, дыра. Поэтому убрали. :) Ну а для обычного трафика все же лучше делать 511 ошибку, нежели 302. Просто утверждается, что есть софт, который понимает ее, как задумано (понятия не имею, какой именно). А тот, который не понимает, тот делает просто редирект. Проверил на нескольких современных Android (7/8/9) - captive portal только на 302 отрабатывает. На 511 - тишина. Edited November 7, 2019 by alexmern Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted November 7, 2019 511 это мертвая теория. Я вообще ни разу не видел переадресации (хотспот, нет денег, блокировка) на 511. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted November 7, 2019 2 minutes ago, alexmern said: Проверил на нескольких современных Android (7/8) - captive portal только на 302 отрабатывает. На 511 - тишина. Только что андроидом проверил - нормально отредиректил. Там же надо в тексте страницы делать редирект через meta http-equiv="refresh", насколько я помню... Попробую через Location, хотя это не правильно. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alexmern Posted November 7, 2019 (edited) 4 minutes ago, vop said: meta http-equiv="refresh" Это костыль "микротика" который не может нормально отдать http код. Вы по сути отдали 200 со страницей в которой уже методами http идет редирект. Как разтаки Location и есть тру-метод. На nginx рабочая конфигурация так: server { listen 80 default_server; return 302 https://portal.xxxx.uz; } Edited November 7, 2019 by alexmern Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted November 7, 2019 ну, судя по описанию, 511 это не редирект на денех дай, ... Там должна быть сама страница денех дай. https://tools.ietf.org/html/rfc6585 Цитата 511 Network Authentication Required The 511 status code indicates that the client needs to authenticate to gain network access. The response representation SHOULD contain a link to a resource that allows the user to submit credentials (e.g., with an HTML form). Note that the 511 response SHOULD NOT contain a challenge or the login interface itself, because browsers would show the login interface as being associated with the originally requested URL, which may cause confusion. The 511 status SHOULD NOT be generated by origin servers; it is intended for use by intercepting proxies that are interposed as a means of controlling access to the network. Responses with the 511 status code MUST NOT be stored by a cache. Nottingham & Fielding Standards Track [Page 4]6.1. The 511 Status Code and Captive Portals The 511 status code is designed to mitigate problems caused by "captive portals" to software (especially non-browser agents) that is expecting a response from the server that a request was made to, not the intervening network infrastructure. It is not intended to encourage deployment of captive portals -- only to limit the damage caused by them. A network operator wishing to require some authentication, acceptance of terms, or other user interaction before granting access usually does so by identifying clients who have not done so ("unknown clients") using their Media Access Control (MAC) addresses. Unknown clients then have all traffic blocked, except for that on TCP port 80, which is sent to an HTTP server (the "login server") dedicated to "logging in" unknown clients, and of course traffic to the login server itself. For example, a user agent might connect to a network and make the following HTTP request on TCP HTTP/1.1 511 Network Authentication Required Content-Type: text/html <html> <head> <title>Network Authentication Required</title> <meta http-equiv="refresh" content="0; url=https://login.example.net/"> </head> <body> <p>You need to <a href="https://login.example.net/"> authenticate with the local network</a> in order to gain access.</p> </body> </html> Here, the 511 status code assures that non-browser clients will not interpret the response as being from the origin server, and the META HTML element redirects the user agent to the login server. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alexmern Posted November 7, 2019 зачем делать meta http-equiv="refresh" если это всё можно сделать через 302 (а он в любом случае нужен чтобы эту страницу показать)? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted November 7, 2019 2 minutes ago, st_re said: ну, судя по описанию, 511 это не редирект на денех дай, ... Там должна быть сама страница денех дай. "Дай денех" - это бульварно-вульгарная интерпретация более общего случая "в интернет низя - иди туда, где тебе разрешат, или сделай то, что бы открыли доступ". В общем случае это авторизация. В частном может быть и денег дай. В еще более частном никуда не редиректим, а просим сходит в местный гастроном и купить карточку оплаты. :) 1 minute ago, alexmern said: зачем делать meta http-equiv="refresh" если это всё можно сделать через 302 (а он в любом случае нужен чтобы эту страницу показать)? Ну видимо, потому, что этот refresh идет с 511-й ошибкой, которая отдается не сайтом, куда чел пришел, а строгим провайдером, который хочет денег. :) Т.е. клиент должен понимать, что не сайт с голыми тётями переехал в ваш биллинг, а до тёть он еще не доехал.:) PS Реально да, без специального механизма для https особого смысла в этом нет. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Saab95 Posted November 21, 2019 На микротике есть web-proxy, его и используйте, сделав на порт редирект средствами микротика. А уже прокси запросит нужную вам страницу, на которой будет кнопка захода в личный кабинет. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...