Уважаемые форумчане!
Можно ли с помощью iptables изменить содержимое TCP пакета?
Поясню для чего это надо. Есть некоторая мультимедийная система, которая по TCP протоколу договаривается с другой, такой же, об обмене информацией. И при этом они присылают свои IP адреса в теле TCP пакета. После этого обмена они просто начинают кидаться друг в друга UDP пакетами по присланным адресам.
Так вот, когда системы находятся в реальном Интернете с белыми адресами, проблем не возникает. Они обменялись реальными адресами и начали кидаться UDP пакетами по этим же реальным адресам.
Но так получается, что одну систему надо запрятать за NAT, не спрашивайте почему, просто надо. Тут и начинается самое интересное, теперь эта система передаёт другой системе не реальный белый IP адрес, а адрес локальной сети, в которой находится, например 172.16.77.2. В результате другая система начинает кидать свои UDP пакеты в Интернет на этот не реальный адрес, и, понятно, что они уходят в никуда и до первой системы не доходят.
На разделе LAN и WAN стоит маршрутизатор (Gentoo, iptables, NAT). Вот на нём и надо провести это мероприятие, перехватить TCP пакет, в теле которого содержится комбинация AC104D02 (hex-представление адреса 172.16.77.2) и заменить её другой, с реальным IP адресом, на который и будут потом бросаться UDP пакеты.Отловить этот пакет я могу при помощи расширения iptables -m string --hex-string "AC104D02".
А вот как его не только отловить, но и заменить эти 4 байта другими?
шо это за протокол?так навскидку в голову не приходит
гугл грит http://serverfault.com/questions/318960/easy-way-to-edit-the...ну или самому helper для nf/conntrack писать
> шо это за протокол?
> так навскидку в голову не приходит
> гугл грит http://serverfault.com/questions/318960/easy-way-to-edit-the...
> ну или самому helper для nf/conntrack писатьH.323. Система видеоконференцсвязи. Сейчас копаю ядро на предмет netfilter, смотрю, там есть приблуда для него. Пытаюсь вникнуть.
вообще говоря система еба^W странная
нууу обменялись они пакетами по tcp с адресами - udp это ка гбы другой протокол, как нат вообще узнает куда кинуть udp пакет который прилетел снаружи если небыло исходящего???
а вариант что помимо адреса может передаваться порт? как тогда вообще?
что за система то можно узнать?
> вообще говоря система еба^W странная
> нууу обменялись они пакетами по tcp с адресами - udp это ка
> гбы другой протокол, как нат вообще узнает куда кинуть udp пакет
> который прилетел снаружи если небыло исходящего???
> а вариант что помимо адреса может передаваться порт? как тогда вообще?
> что за система то можно узнать?Куда кидать UDP, они как раз в ходе TCP сессии и договариваются. Естественно, с адресом передаётся и порт. Типа так...
А - имеет белый адрес 8.8.8.8 (адреса вымышленные, все совпадения случайны)
Б - имеет белый адрес 8.8.4.4TCP сессия:
А->Б. Слушаю тебя на UDP 8.8.8.8:3240
Б->А А я тебя слушаю на UDP 8.8.4.4:4350Ну а дальше А херачит UDP на 8.8.4.4:4350 (на Б), а Б на 8.8.8.8:3240
Вот когда эти адреса реальные, то проблем и не возникает. Но стоит узел А засунуть в локалку за NAT, то адрес у него будет уже не 8.8.8.8, а 172.16.77.4. А 8.8.8.8 - это будет сам NAT.
Ну и обмен будет уже, соответственно, другой...
А->Б. Слушаю тебя на UDP 172.16.77.4:3240
Б->А А я тебя слушаю на UDP 8.8.4.4:4350Вот и получается, что с моей системы поток идёт нормально, он доходит, а с удалённой идёт на 172.16.77.4. Ну куда придёт пакет, запущенный в интернет с таким адресом назначение, понятно. Никуда.
В результате на той стороне меня видят и слышат, а я их нет.
Система такая...
http://www.avaya.com/ru/product/avaya-scopia-xt-video-confer.../
> Система такая...
> http://www.avaya.com/ru/product/avaya-scopia-xt-video-confer.../The Avaya Scopia® XT Series fully supports NAT and firewall traversal, enabling you to place the unit
behind a NAT router or firewall and connect with other endpoints seamlessly. This section describes the
available methods to incorporate NAT and firewall traversal with XT Series:Читать доки пробовал?
https://downloads.avaya.com/css/P8/documents/100179342
>[оверквотинг удален]
> не доходят.
> На разделе LAN и WAN стоит маршрутизатор (Gentoo, iptables, NAT). Вот на
> нём и надо провести это мероприятие, перехватить TCP пакет, в теле
> которого содержится комбинация AC104D02 (hex-представление адреса 172.16.77.2) и заменить
> её другой, с реальным IP адресом, на который и будут потом
> бросаться UDP пакеты.
> Отловить этот пакет я могу при помощи расширения iptables -m string --hex-string
> "AC104D02".
> А вот как его не только отловить, но и заменить эти 4
> байта другими?Помоему организация этого дела в корне не правильна...
по моему мнению нужно добавить в конфигурацию мультимедийной системы возможность вписывать IP адрес белого маршрутизатора, что бы именно этот адрес отправлялся другой системе, а уж как это занатить и куда форварднуть пусть смотрят шлюзы.
> по моему мнению нужно добавить в конфигурацию мультимедийной системы возможность вписыватьУвы, не я добавляю функционал.
Сдаётся мне, что всё это нормально делает модуль ядра nf_conntrack_h323.
Завтра буду пробовать.
Подними vpn между точками. Скорее всего нужно использовать stuns в таких случаях. Он там должен быть в настройка.