Jump to content
  • 0

Более корректный nat loopback


Alexey  Wordly

Question

Привет! Я пишу всякие сетевые приложули, и столкнулся с проблемой их тестирования, ибо при обращении по 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, там, помнится, внешний подставлял)  : )

Edited by Alexey Wordly
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Можно создать для экспериментов отдельный сегмент и отключить на нём nat loopback. Команда появилась в прошивке 2.11: 

  • interface {name} no ip nat loopback

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

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...