1) Запускаем на машине в сетке А сервер — он будет просто слушать (не секьюрно — он будет слушать всех! — о безопасности заботьтесь сами).
2) Запускаем клиента в сетке B.
Что происходит?
— когда сервер запускается, он начинает отправку фиксированных ICMP «эхо
Запрос» пакетов на фиксированный адрес 3.3.3.3. Мы ожидаем, что эти пакеты
не будут возвращены.
— Теперь 3.3.3.3 НЕ есть тот хост, с которым мы хотим связаться! Но мы его ЗНАЕМ!
— Когда клиент хочет подключиться — он послылает ICMP «Время истекло» пакет якобы с информацией 3.3.3.3 от своего IP.
на адрес роутера сети А
И они попадают серверу в сети А, как якобы ответы на отлуп от 3.3.3.3! Но с дополнительным полезным содержимым (а именно IP адресом клиента и клиентской сети) внутри.
Таким образом, сервер получил IP клиента и его сетки.
Далее
3) Cервер начинает бомбить IP роутера клиента UDP пакетами, скажем, на порт 2222. Его роутер сети А замечает это и открывает обратный маршрут для ответов на этот же порт. Что нам и нужно.
Таким образом, мы получили двусторонний канал UDP пакетов, в который далее можно упихать что угодно — TCP сессии и т.д.
Любые карты с чипом позволяют оффлайн