Re: Пересылка UDP пакета из одной сети в другую
От: Reset  
Дата: 18.09.20 18:43
Оценка: 2 (1) +1
AG>a) Первая сеть с адресами: 192.168.1.XX
AG>b) Вторая сеть с адресами: 192.168.2.XX

AG>Также предположим (для упрощения) что есть три компьютера:

AG>1) 192.168.1.1 — первый узел.
AG>2) 192.168.2.1 — второй узел.
AG>3) Имеется шлюз с подсоединением к двум вышеуказаннып сетям -
AG>его адреса: 192.168.1.7 и 192.168.2.7.

AG>Вопрос:

AG>Как (на уровне UDP-сокетов) через этот самый шлюз транслировать UDP пакеты — от 192.168.1.1 к 192.168.2.1 и обратно?

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

Тебе тут, похоже, достаточно настроить маршрутизацию. Расскажу про роутинг (маршрутизацию), чтобы было понятно. Очень упрощенно.

  1. Маршрутизация производится по адресу назначения (адрес источника не важен и тем более порты, потому что маршрутизация делается по IP).
  2. При маршрутизации оба эти адреса в пакете не меняются.
Цель маршрутизации доставить пакет по назначению. Для этого в твоей сети ты настраиваешь на узле 192.168.1.1:
  1. адрес с маской подсети 192.168.1.1/24,
  2. default (0.0.0.0/0) шлюз 192.168.1.7.
По адресу с маской подсети узел будет знать, какие IP адреса доступны напрямую. Остальные пакеты с адресами назначения не в сети 192.168.1.0/24, узел отправит шлюзу.
Аналогично для узла 192.168.2.1
  1. адрес с маской подсети 192.168.2.1/24,
  2. default (0.0.0.0/0) шлюз 192.168.2.7.
Настройка шлюза :
  1. 192.168.1.7/24 на одном интерфейсе,
  2. 192.168.2.7/24 на другом интерфейсе,
  3. ip_forward, чтобы он маршрутизировал пакеты, предназначенные не ему.
Таким образом шлюз будет знать где находятся обе подсети. Еще возможно, шлюзу самому понадобиться шлюз по умолчанию, ведь, он знает только об этих двух подсетях, но это не относится к задаче.

Итак, узел 192.168.1.1 отправляет IP пакет (он может быть UDP, TCP, ICMP или любой другой IP пакет) узлу 192.168.2.1. Напрямую это адрес не доступен (у него сеть 192.168.1.1/24, а адрес 192.168.2.1), поэтому он отправляет пакет шлюзу 192.168.1.7. Тот получив пакет и обнаружив, что он предназначен не ему (dst 192.168.2.1) и, что у него включена маршрутизация поищет в таблице маршрутизации, куда его отдать дальше и отдаст в сеть 192.168.2.0/24 на адрес 192.168.2.1. Адреса источника и назначения в пакете не меняются. В результате узел 192.168.2.1 получит пакет от шлюза (маршрутизатора), но узнать он это сможет только по MAC (адреса в пакете src 192.168.1.1, dst 192.168.2.1).

Аналогично узел 192.168.2.1 отправит ответ, зная адрес отправителя из пакета (или как-то еще).

Еще бывает маршрутизация с трансляцией адресов NAT, когда адрес источника или назначения подменяется адресом шлюза (Source NAT) или другого узла (Destination NAT). Но, похоже, тебе это не надо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.