Привет! Я пишу всякие сетевые приложули, и столкнулся с проблемой их тестирования, ибо при обращении по wan, роутер подставляет ответкой свой lan-адрес.
То есть, схема "мастер-сервер" + "сервер" + "клиент" - не работает в пределах одной локальной сети:
1. Сервер пробует условно залогиниться у мастера через wan, мастер от кинетика в ответке получает локальный адрес этого самого кинетика.
2. Клиент пробует получить по wan список серверов, и получает список одинаковых локальных адресов кинетика.
3. Клиент пробует подключиться по wan к серверу через локальный адрес кинетика который получил, и закономерно не может подключиться: кинетик не знает кому переправлять (разве что мучить таблицы трансляции адресов по отдельности для lan и wan).
Или пример посложнее, который принципиально не решаем с текущим положением дел:
1. Тот же сервер в локалке логинится у мастера по wan-адресу кинетика
2. Клиент из внешней сети, пытается получить у мастера тот же список адресов серверов, получает тот же список локальных адресов самого кинетика
3. Клиент пытается подключиться к своей локалке, и вообще ничего не может, ибо в его локалке вообще может не быть такого адреса.
Предлагаю более логичную схему, которая позволит работать в данных условиях, хотя возможно чуть нагрузит прошивку.
1. Если к роутеру обращаются по wan, он подменяет ответный адрес на свой wan, и мутит nat, мол если придёт ответ на wan по этому порту - отправить назад тому кто обращался.
2. Если к роутеру обращаются по lan подменять оветку на свой lan.
Это вроде не очень сложно, хотя и сложнее чем сделать фон веб-интерфейса тёмным, и я сталкивался с подобной схемой работы nlb у старых кинетиков (вроде giga 2, там, помнится, внешний подставлял) : )
Question
Alexey Wordly
Привет! Я пишу всякие сетевые приложули, и столкнулся с проблемой их тестирования, ибо при обращении по wan, роутер подставляет ответкой свой lan-адрес.
Edited by Alexey WordlyТо есть, схема "мастер-сервер" + "сервер" + "клиент" - не работает в пределах одной локальной сети:
1. Сервер пробует условно залогиниться у мастера через wan, мастер от кинетика в ответке получает локальный адрес этого самого кинетика.
2. Клиент пробует получить по wan список серверов, и получает список одинаковых локальных адресов кинетика.
3. Клиент пробует подключиться по wan к серверу через локальный адрес кинетика который получил, и закономерно не может подключиться: кинетик не знает кому переправлять (разве что мучить таблицы трансляции адресов по отдельности для lan и wan).
Или пример посложнее, который принципиально не решаем с текущим положением дел:
1. Тот же сервер в локалке логинится у мастера по wan-адресу кинетика
2. Клиент из внешней сети, пытается получить у мастера тот же список адресов серверов, получает тот же список локальных адресов самого кинетика
3. Клиент пытается подключиться к своей локалке, и вообще ничего не может, ибо в его локалке вообще может не быть такого адреса.
Предлагаю более логичную схему, которая позволит работать в данных условиях, хотя возможно чуть нагрузит прошивку.
1. Если к роутеру обращаются по wan, он подменяет ответный адрес на свой wan, и мутит nat, мол если придёт ответ на wan по этому порту - отправить назад тому кто обращался.
2. Если к роутеру обращаются по lan подменять оветку на свой lan.
Это вроде не очень сложно, хотя и сложнее чем сделать фон веб-интерфейса тёмным, и я сталкивался с подобной схемой работы nlb у старых кинетиков (вроде giga 2, там, помнится, внешний подставлял) : )
Link to comment
Share on other sites
1 answer to this question
Recommended Posts