Jump to content
Калькуляторы

Страница "дай денег"

Добрый день, в данный момент пытаюсь сделать страницу заглушку на Squid + Mikrotik, из того что есть: Mikrotik с адрес листами абонентов которые "должны" денег, есть "белые" адреса сайта и оплаты, есть DSTnat который отправляет пользователей с сайтов не из "белого" списка по портам 80,8080,443 на внутренний адрес со squid. Squid настроен ssl_bump + intercept по порту 3129. Собственно сама проблема: не работает переадресация на squid, браузер или не выдает ничего(таймаут) или ERR_CONNECTION_REFUSED. В итоге "хочецца" как у ростелекома, при минусе на балансе отправлять на страницу "дай денег", можно с матами на сертификат, ну или просто скидывать на IP адрес с уже имеющимся OV сертификатом от комодо. Кто что подскажет?

Share this post


Link to post
Share on other sites

nginx вместо squid ?

Share this post


Link to post
Share on other sites

Был такой вариант, но не совсем понятно, тоже использовать proxy на nginx?

Share this post


Link to post
Share on other sites

ну требуется же только 302 редирект на сайт с оплатой послать?

Share this post


Link to post
Share on other sites

Вполне этого хватит, чтобы люди ввели л\с и проверили баланс. Пробовали делать это на beget, не получилось, возможно из-за ddos защиты которая у них стоит. 

Если я правильно понял, то через dstnat заворачиваем на внутренний сервер(mikrotik не поддерживает ссылки, только адреса), далее 302ым отправляем на страницу оплаты?

Share this post


Link to post
Share on other sites

Завернуть такой трафик на нгинкс и проксировать в личный кабинет, добавив в заголовки $remote_addr. Абонент сразу получает страницу с тарифом, балансом и кнопкой оплаты на необходимую сумму / обещаный платёж.

Share this post


Link to post
Share on other sites

Для начала, у вас должен быть http-трафик разрешен в инет у заблокированного абонента. Только в момент установки сессии можно произвести редирект. Если вы абоненту все наглухо зарубаете, то и редирект не состоится.

Share this post


Link to post
Share on other sites

Идея неживая уже, все сайты давно на https и ничего кроме ругани на сертификат абонент не увидит.

Share this post


Link to post
Share on other sites
25 minutes ago, rdc said:

Идея неживая уже, все сайты давно на https и ничего кроме ругани на сертификат абонент не увидит.

Вообще, для "хочу денег - дай пароль" придумали специальный код ответа 511. В отличие от 302, броузер знает, что этот ответ генерится не сайтом, на который пошли, а системой доступа. Помню много лет назад  были по этому поводу на западе дискуссии, и кто-то говорил, что порешал эту проблему. Как оно работает в целом - понятия не имею, но в самом простом случае оно редиректит, при этом клиент понимает, что не сайт свистнули, а провайдер не пускает.

 

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/511

Share this post


Link to post
Share on other sites

@vop captive portal это конечно хорошо, только вот не знаю как оно будет работать на 7, 10 точно поддерживает, но большинство людей все еще сидят на 7, молчу про xp, такие тоже есть. Но опять же таких уже не так много и у многих есть смартфоны. 

Share this post


Link to post
Share on other sites
 
 
 
 
5 hours ago, vop said:

Вообще, для "хочу денег - дай пароль" придумали специальный код ответа 511.

Придумать то придумали, а реализовать забыли.

Share this post


Link to post
Share on other sites
8 часов назад, rdc сказал:

Идея неживая уже, все сайты давно на https и ничего кроме ругани на сертификат абонент не увидит.

Раньше на nginx 302 перенаправляли. Сейчас убрали -  https. 

Share this post


Link to post
Share on other sites
9 hours ago, alexmern said:

Придумать то придумали, а реализовать забыли.

Не забыли, насколько я понял, а "осознали", что это таки, дыра. Поэтому убрали.  :)

 

Ну а для обычного трафика все же лучше делать 511 ошибку, нежели 302. Просто утверждается, что есть софт, который понимает ее, как задумано (понятия не имею, какой именно). А тот, который не понимает, тот делает просто редирект.

Share this post


Link to post
Share on other sites
16 minutes ago, vop said:

Не забыли, насколько я понял, а "осознали", что это таки, дыра. Поэтому убрали.  :)

 

Ну а для обычного трафика все же лучше делать 511 ошибку, нежели 302. Просто утверждается, что есть софт, который понимает ее, как задумано (понятия не имею, какой именно). А тот, который не понимает, тот делает просто редирект.

Проверил на нескольких современных Android (7/8/9) - captive portal только на 302 отрабатывает. На 511 - тишина.

Edited by alexmern

Share this post


Link to post
Share on other sites

511 это мертвая теория. Я вообще ни разу не видел переадресации (хотспот, нет денег, блокировка) на 511.

Share this post


Link to post
Share on other sites
2 minutes ago, alexmern said:

Проверил на нескольких современных Android (7/8) - captive portal только на 302 отрабатывает. На 511 - тишина.

Только что андроидом проверил - нормально отредиректил.  Там же надо в тексте страницы делать редирект через meta http-equiv="refresh", насколько я помню...

 

Попробую через Location, хотя это не правильно.

 

Share this post


Link to post
Share on other sites
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 by alexmern

Share this post


Link to post
Share on other sites

ну, судя по описанию, 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.
 

Share this post


Link to post
Share on other sites

зачем делать meta http-equiv="refresh"
если это всё можно сделать через 302 (а он в любом случае нужен чтобы эту страницу показать)?

Share this post


Link to post
Share on other sites
2 minutes ago, st_re said:

ну, судя по описанию, 511 это не редирект на денех дай, ... Там должна быть сама страница денех дай.

 

"Дай денех" - это бульварно-вульгарная интерпретация более общего случая "в интернет низя - иди туда, где тебе разрешат, или сделай то, что бы открыли доступ". В общем случае это авторизация. В частном может быть и денег дай. В еще более частном никуда не редиректим, а просим сходит в местный гастроном и купить карточку оплаты. :)

 

1 minute ago, alexmern said:

зачем делать meta http-equiv="refresh"
если это всё можно сделать через 302 (а он в любом случае нужен чтобы эту страницу показать)?

Ну видимо, потому, что этот refresh идет с 511-й ошибкой, которая отдается не сайтом, куда чел пришел, а строгим провайдером, который хочет денег. :) Т.е. клиент должен понимать, что не сайт с голыми тётями переехал в ваш биллинг, а до тёть он еще не доехал.:)

 

PS Реально да, без специального механизма для https особого смысла в этом нет.

Share this post


Link to post
Share on other sites

На микротике есть web-proxy, его и используйте, сделав на порт редирект средствами микротика. А уже прокси запросит нужную вам страницу, на которой будет кнопка захода в личный кабинет.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now