LINUX.ORG.RU

Идентификация отправителя UDP пакета

 


1

2

Такой вопрос нужно идентифицировать отправителя UDP пакета, люди будут находиться за nat и надо понять что некое устройство отправило 5 пакетов, а другое 2. В заголовках судя по картинкам которые есть в гугле различить ни как. Кто может знает как это возможно сделать???? т.е. мне не надо знать что за машина отправила, а просто какой-либо левой идентификатор, чтобы можно было понять отправила сейчас пакет эта машина, следующий она же, а следующий уже другая. Это используется для статистики, а не обратной связи.


Если клиенты шлют со своего одного и того же порта, то по идее и нат должен использовать один и тот же свой исходящий порт на каждого клиента (нат ведь фактически является маппером портов). Если клиенты шлют очередной пакет откуда попало, то очевидно никак.

arturpub ★★ ()

А если тебе надо знать это и между сессиями, то никак, кроме как единожды сгенерить на каждом клиенте uuid и слать его в каждом [первом] пакете.

arturpub ★★ ()
Ответ на: комментарий от redixin

Короче смысл такой, есть клиенты в локальной сети сидят и работают через NAT в интернете и подключены к моему DNS, нужно какой-либо левый идентификатор, чтобы можно было понять отправила сейчас пакет эта машина, следующий она же, а следующий уже другая. Это используется для статистики, а не обратной связи.

xADMx ()
Ответ на: комментарий от xADMx

Расположить кэширующий DNS там же, где и клиенты.
Тогда NAT мешать не будет, и запросы можно будет логировать хоть через iptables ... -j LOG.

ArcFi ()
Ответ на: комментарий от deep-purple

Я даже не понимаю каким образом сделать как вы предложили. как я понимаю если «городить свой протокол поверх удп», то я что-то должен установить на комп клиенту???

xADMx ()
Ответ на: комментарий от xADMx

Есть стойкое подозрение, что иначе задача вообще не решаема без модификации протокола, сервера и клиента.

ArcFi ()

Никак!!!!!!!1111111111111111

thesis ★★★★★ ()
Ответ на: комментарий от xADMx

Твои формулировки ужасны, но ответ на то, что ты хотел спросить — нет, для TCP-соединений из-за NAT та же ситуация, что и для UDP-пакетов из-за NAT. Почитай про NAT, перенеси DNS на другую сторону NAT и собирай свою «статистику», пока не дозреешь рассказать нам настоящую задачу.

t184256 ★★★★★ ()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от xADMx

Посмотрите сами через Wireshark с фильтром по слову «dns».
Что-то однозначно идентифицирующее клиента, кроме IP, передавать просто бессмысленно.

ArcFi ()

Можно выставлять разный ttl dns-запросам для каждого узла. А за натом их по этому ttl идентифицировать.

Но это я теоретизирую, может в таком способе есть неочевидные грабли

Deleted ()
Ответ на: комментарий от t184256

Да, был не прав в том что не рассказал смысл всей идеи. Я хочу реализовать wifi авторизацию через DNS, как это сделано у hotwifi.ru.

xADMx ()
Ответ на: комментарий от xADMx

Я хочу реализовать wifi авторизацию через DNS

О, как минимум клиентов ты не контролируешь

как это сделано у hotwifi.ru.

ОК, и как это у них сделано? С чего ты взял, что у них «авторизация через DNS», чем бы это ни было?

На http://www.hot-wifi.ru реклама бяки в квадрате — социального captive-портала. Платного.

t184256 ★★★★★ ()
Ответ на: комментарий от Deleted

Хотя, чего это я. Можно же проще - натить DNS-запросы на привязанный к пользователю внешний порт (группу портов). Пришел запрос с порта 20015, значит «внутренний» адрес 192.168.0.15 например.

В общем, если есть контроль за натом, задачу решить как-то можно

Deleted ()
Ответ на: комментарий от xADMx

ожидал увидеть что-то интересное, увидел типичную километровую хаброисторию ни о чем про «взлом» captive-портала. стал читать, ожидая встретить iodine-туннель, а в итоге аж посмеялся.

Перевод на краткий и понятный:

Captive portal относительно нормального человека работает примерно так: по умолчанию доступ наружу закрыт, а DNS-сервер всего лишь подсовывает IP-адрес вебсервера, выдающего страничку входа на любой запрос. Затем, когда пользователь ввел нужные данные, ты логгируешь соответсвие IP-адрес — личность бедняги и добавляешь куда-нибудь правило, «выпускающее» его в нормальную сеть, а именно перестающее перенаправлять его DNS-запросы на твой сервер и нормально маршрутизирующее его пакеты.

Если ты что-то не понял — не беда. Абсолютно. Эта схема проверена, отлично описана, однозначно есть бесплатные и рабочие решения => кончай делать вид, что разбираешься в этом всем и бери проверенное, готовое решение.

Captive portal наркоманов по ссылке пропустил первый пункт, а именно «по умолчанию доступ наружу закрыт». Со всеми вытекающими последствиями. Не покупай у них ничего, не равняйся на них и ни в коем, ни в коем случае не ходи их путем, пытаясь нагородить что-то сам.

Еще вопросы остались?

t184256 ★★★★★ ()
Ответ на: комментарий от Deleted

одна беда — задача к теме отношения никак не имеет. как всегда на ЛОРе — ТС накидал слов в заголовок, набегают, кхм, «эксперты» и начинают играть в традиционную игру «угадай, а чего ТС хотел-то». Пока нет только их извечных оппонентов с воплями «кому какая разница, чего он хотел, отвечай на вопрос!». Ну ничего, дадим им немного времени, может спят еще.

t184256 ★★★★★ ()

А чем не устраивает проброс нужных портов (PAT) и идентификация по IP?

DiMoN ★★★ ()
Ответ на: комментарий от xADMx

Можно привязать «исходящий» порт (лучше группу конечно)

Что-то вроде такого - udp-пакеты с адреса 192.168.0.15 на порт 53 исходят из диапазона 20150-20159:

# iptables -t nat -A POSTROUTING -s 192.168.0.15 -p udp --dport 53 -o eth0 -j SNAT --to a.b.c.d:20150-20159

Или маркировать на входе, потом натить по марке

Deleted ()
Ответ на: комментарий от t184256

Мне кажется вы спешите! 1) Я знаю что такое Captive portal. 2) в статье написано что для участия в их авторизации просто достаточно написать в DHCP DNS который будет выдаваться клиентам и все, значит они отлавливают каким-то образом какие-то пакеты от клиентов за NAT.

xADMx ()
Ответ на: комментарий от Deleted

Смотрите если сравнивать с hot-wifi то там не надо прошивать альтернативной прошивкой, а просто достаточно в DHCP написать их DNS.

xADMx ()
Ответ на: комментарий от xADMx

Я уже сам придумал примерно как надо сделать просто не понятно будет ли так работать и насколько это геморно: 1) клиент посылает dns запрос 2) dns переводит его с UDP на TCP и держит постоянное соединение 3) клиент попадает на портал 4) проходит авторизацию 5) перенаправляется на специальный домен например gfdqd216ewdf.hotwifi.ru 6) dns смотрит и проверяет в Sql gfdqd216ewdf на доступ, и после этого начинает работать для него как нормальный DNS, держит соединение 30 минут и разрывает для повторной авторизации.

xADMx ()
Ответ на: комментарий от xADMx

для участия в их авторизации просто достаточно написать в DHCP DNS который будет выдаваться клиентам и все

нет, нет, нет, нет и нет. еще надо HTTP-сервер с авторизацией, и DNS-сервер, настроенный отправлять всех туда.

значит они отлавливают каким-то образом какие-то пакеты от клиентов за NAT.

право слово, перестань. серьезно. знаешь слова captive portal — почитай уже, как оно работает. с какого перепугу ты должен городить NAT _между_ клиентами и captive portal, а потом из-за NAT'а разбираться, что там по ту сторону происходит? то за злой бог стрельбы в ногу вложил в твою голову эту мысль?

t184256 ★★★★★ ()
Ответ на: комментарий от xADMx

Ну, я отвечал на текст из ОП. Вроде стало понятнее что нужно.

В DNS-пакете есть поле Transaction ID. Оно должно быть рандомизировано, но по факту получается не очень. Я щас посмотрел на живом трафике, этот ID у каждого клиента монотонно растет (в пределах 16 бит). От запроса к запросу увеличивается на небольшие значения.

Смотреть на этот ID для решения задачи выглядит перспективно. Хотя, конечно, надо пробовать, может быть все не так просто

Deleted ()
Ответ на: комментарий от t184256

Как же вы не поймете что весь смысл этой авторизации находиться в простоте её установки и грубо говоря кроссплатформенности. Т.е. держит кафе человек, у него стоит обычный роутер со стандартной прошивкой и он понимает что нужно подчиняться закону или отключать wi-fi, и как обычно человек который не соображает и боится что-то сделать с роутером будет выбирать то что самое легкое.

xADMx ()
Ответ на: комментарий от xADMx

Лол, ты еще и бабло на этом зашибать хочешь, продавая свою реализацию для использования в таких «кафе»? При этом, похоже, хочешь тупо поднять где-то там dns, которые будет разруливать доступы на всех твоих клиентах? Ничего не получится - во-первых ты - днище, и не разбираешься в том, что планируешь делать, а во-вторых никто с тобой связываться не будет, возможность поднять «хотспот» есть из коробки во всяких ddwrt (ставится через вебморду роутера в один клик) и большинстве нормальных устройств (то есть вот эти ваши говнодлинки мимо идут), при этом цена таких девайсов начинается тысяч от двух.

anonymous ()
Ответ на: комментарий от anonymous

О боже, сколько эмоций. Ну расскажи мне, что надо сделать чтобы поднять хотспот на DD-WRT, только когда начнешь это все расписывать ты поймешь весь смысл. ПЕТУШОК)))

xADMx ()
Ответ на: комментарий от xADMx

Как же вы не поймете что весь смысл этой авторизации находиться

в соблюдении идиотского антиконституционного законодательства РФ.

t184256 ★★★★★ ()
Ответ на: комментарий от xADMx

Это, ты забыл сказать мысль. Ну да, умные люди (поумнее тех, на которых ты ссылался) способны спроектировать, разработать, продать и поддерживать такое решение. Ты-то тут причем?

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

Раз 20 прочитал ваш комментарий, когда понял посмеялся. Я ссылался на ту статью только из-за того чтобы показать что существует какой-то метод.

xADMx ()

Тебе нужен captive portal. Это делается иначе. На хабре, как всегда полная чушь.

Гугли captive portal, есть много готового.

redixin ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.