Стоит фигня. Работает через Windows шлюз (есть спец. программа). Начальник из экономии требует Linux. Нужен NAT. Алгоритм работы спец. программы следующий: Программа сервер - ISS открывает по одному входному UDP порту(по умолчанию) на каждом сетевом интерфейсе. Далее, изначально с входных портов ISS воспринимает только пакеты SYN: [0x5F] - идентификатор пакета SYN [0x10] - количество 16-битных слов, следующих за данным байтом [DEST_BOARD_IP (4)] - IP адрес платы назначения (4 байта) [DEST_BOARD_ PORT (2)] - UPD порт платы назначения (2 байта) [RESERVED(2)] - зарезервировано - 2 байта [DEST_SWITCH_IP (4)] - IP адрес SWITCH-а , за которым скрыта плата [DEST_SWITCH_ PORT (2)] : [RESERVED(2)] [SRC_BOARD_IP (4)] [SRC _BOARD_ PORT (2)] [RESERVED(2)] [SRC _SWITCH_IP (4)] [SRC T_ SWITCH_PORT(2)] [RESERVED(2) Алгоритм работы ISS. 1.. При приходе пакета SYN на любой входной интерфейс, сравнивается адрес: DEST_SWITCH_IP = = MY_SWITCH_IP && DEST_SWITCH_ PORT = = MY_SWITCH_ PORT для каждого сетевого интерфейса, если найдено совпадение, то данный пакет ретранслируется через соответсвующий интерфейс (где совпало) на адрес платы, указанный в пакете SYN: DEST_BOARD_IP && DEST_BOARD_PORT. Если совпадения не найдено, то пакет рестранслируется непосредственно на адрес DEST_SWITCH_IP && DEST_SWITCH_PORT. В момент ретрансляции первого пакета SYN - запоминается маршрут ретрансляции: IN_IP_ADDR, IN_UDP_PORT <-aOUT_IP_ADDR,OUT_UDP_PORT. Далее, все пакеты поступившие на IN, или OUT точку БЕЗ АНАЛИЗА ретранслируются в противоположную точку . Т.е. пакеты, пришедшие от OUT - > пересылаются в IN, и наоборот от IN в OUT. Если в течение 10 секунд, по маршруту НИ в одном направлении не было пакетов, то запись о нем стирается (запись может создать только следующий пакет SYN на прот 4120). !!! Если пакет SYN с ТЕМ-ЖЕ ИСХОДЯЩИМ адресом (SRC_IP,SRC_PORT) но другим адресом назначения (DSP_IP,DST_UDP) поступает, а соединение с ИСХОДЯЩИМ адресом УЖЕ БЫЛО УСТАНОВЛЕНО РАНЕЕ, ТО ЭТО СОЕДИТНЕНИЕ ПЕРЕКЛЮЧАЕТСЯ НА ДРУГОЙ АДРЕС НАЗНАЧЕНИЯ (ИЗМЕНЯЕТЯ СООТВЕТВИЕ IN(SRC)<->OUT (DST a NEW_DST).
Вообще такое на Линуксе возможн. Если да то как???