Перейти к содержимому
Калькуляторы

captive portal

Понадобилось тут изобразить Captive portal. Взял связку из nginx+ iptables... но что-то не выходит каменный цветок, нужна помощь зала:

Завёл на стенде тестовую сеть, на шлюзе сделал (192.168.11.3  выдаётся для wifi клиентов как def gw по dhcp)

-A PREROUTING ! -d 192.168.11.3/32 -i ens4 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.11.3

 

Далее в nginx  заведено 2 виртуальных хоста:
===
server {
#    # Listening on IP Address.
#    # This is the website iptables redirects to
    listen       80 default_server;
    root         /var/www/html/portal;
    access_log  /var/log/nginx/access1.log atop;
    port_in_redirect off;
    keepalive_timeout 0;

    location / {
        return 302 http://test.ppcom:82;
    }
 }

server {
     listen       82;
     server_name  test.ppcom;
     root         /var/www/html/portal;
     access_log  /var/log/nginx/access2.log atop;

add_header Cache-Control no-cache;
# set the Expires header to 31 December 2037 23:59:59 GMT, and the Cache-Control max-age to 10 years
expires 0;

     location / {
         try_files $uri $uri/ /index.html;
     }
}

===
Локальный DNS резолвит test.ppcom так же в 192.168.11.3.

Но не выходит каменный цветок. Но если  портал повесить на 80 порт сразу,куда заворачивает трафик iptables то на андроидах всё таки рисуется страница от портала.
Вопрос - что упускаю их вида,что не отрабатывает вариант с редиректом из  nginx на страницу портала?

Да..если 1 вхост повесить на 82 порт и сюда заворачивать iptables-ами,а портал перевесить на 80 порт,то не работает с точно такой же диагностикой. До 2 Vhost-а с порталом запросов вообще нет и это видно в дампе трафика.

Причём в дампе я вижу, что nginx отдаёт

Hypertext Transfer Protocol
HTTP/1.1 302 Moved Temporarily\r\n
Server: nginx/1.14.0\r\n
Date: Sun, 14 Oct 2018 17:07:54 GMT\r\n
Content-Type: text/html\r\n
Content-Length: 161\r\n
Connection: close\r\n
Location: http://test.ppcom:82\r\n
\r\n

 

Собственно дамп трафика, судя по всему редирект вообще не отрабатывает.
Как минимум проверено на 2 телефонах - xiaomi (дамп приложен) и на соньке... симптомы одинаковые

dump7_redir.pcap

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для начала разрешите клиенту ходить на порты эти в инете. Редирект не сработает, если пакет был отклонен. Он должен иметь возможность уйти к получателю и тогда уже перехватываться и редиректиться.

Изменено пользователем murano

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ммм.. на текущий момент в iptables всего 1 правило, котрыое все пакеты на 80 порт заворачивает на локальный веб-сервер., который на этом же роутере сейчас.

И test.ppcom:82  доступен из гостевой  сети.

 

Собственно если же сразу делаю заворачивание iptables на 82 (вместо 80) порт,где висит портал  или меняю вхсоты местами то всё ок.

 

А так в таблесах висит только:

[root@host-20 ~]# iptables-save -c
# Generated by iptables-save v1.4.21 on Thu Oct 18 12:07:00 2018
*nat
:PREROUTING ACCEPT [4460:814094]
:INPUT ACCEPT [4425:806706]
:OUTPUT ACCEPT [158:12043]
:POSTROUTING ACCEPT [54:3235]
[20:1200] -A PREROUTING ! -d 192.168.11.3/32 -i ens4 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 80
COMMIT
# Completed on Thu Oct 18 12:07:00 2018
# Generated by iptables-save v1.4.21 on Thu Oct 18 12:07:00 2018
*filter
:INPUT ACCEPT [5493:906743]
:FORWARD ACCEPT [250:43242]
:OUTPUT ACCEPT [1023:345545]
COMMIT
# Completed on Thu Oct 18 12:07:00 2018

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть смутное ощущение, что оно даже не пытается пройти по 302 редиректу, вернее установить новый коннект со 2 вхостом и работать нужно в рамках  единственного вхоста...

По крайней мере это объяснило бы почему я не вижу пакетов на 2 vhost куда пытаюсь сделать 302.. То есть  на 2 вхост вообще ни 1 пакета.

 

Прикладываю свежие дампики с логами nginx

 

test.conf конфиг вхостов нгинкса
direct - таблесам заворачиваю сразу на портал
redir - пытаюсь на портал сделать с дефолтного вхоста 302

portal_debug_18102018.tar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Когда я колхозил похожее, то самым главным было не забыть исключить из редиректа трафик на сам портал — постоянно про это забывал.

То есть нужно перепроверить все ACL, в них ошибка.

 

Но сейчас бы я просто взял Chillispot.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 19.10.2018 в 00:59, stalker86 сказал:

Есть смутное ощущение

Ощущениями настраиваете?)
tcpdump что говорит? Логи в nginx отключены?

извиняюсь, за такие вопросы, самого в это тыкали "улицы" сетевого администрирования))

 

Лично мне интересно, каким образом будет работать редирект для того же гугл, с его 443 на внутренний 443/80. Вроде как вообще ничего показать не должно будет ибо ssl, sni и прочее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем тут всё оказалось куда интереснее.. Трафик дропала сама wifi точка, хотя настроена была в режиме бриджа. Там среди  прочих настроек нашлось - оно по умолчанию дропало трафик со всех серых подсетей. Исключил портал из...  и всё заработало

 

20 минут назад, default_vlan сказал:

Ощущениями настраиваете?)
tcpdump что говорит? Логи в nginx отключены?

 

 

разумеется были включены..и по логам/дампам я не видел обращений ко 2 вхосту, на который редиректил. и в дампе видел кучку запросов и по этому  складывалось ощущение что androd просто игнорирует редирек и долбит в 1 вхост.. А по факту он просто не мог достучаться до 2 вхоста.

 

И по этой же причине портал работал, если трафик  сразу в портал таблесами заворачивался

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.