Чел сидит под NAT'ом, нужно заслать ему UDP.
Теоретически, сам формируешь udp-пакет с адресом-назначением int и отправляешь его на ext, как на роутер.Но опять таки - это зависит от того, как построен файрвол. Если в правилах сказано, что с внешнего интерфейса пакеты для внутренней сети принимать нельзя (как это должно быть), то номер не пройдет.
PS. Сам я в этих делах не мастак, но по идее оно работает так :)
>Теоретически, сам формируешь udp-пакет с адресом-назначением int и отправляешь его на ext,
>как на роутер.
>
>Но опять таки - это зависит от того, как построен файрвол. Если
>в правилах сказано, что с внешнего интерфейса пакеты для внутренней сети
>принимать нельзя (как это должно быть), то номер не пройдет.
>
>PS. Сам я в этих делах не мастак, но по идее оно
>работает так :)Еще один вопрос: а как мне внутренний ip узнать его, от него пакеты когда идут, в заголовке внешний стоит.
А никак.Ты определись - известен int или нет :)
>А никак.
>
>Ты определись - известен int или нет :)Как никак? Ситуация то простая как лопата: пишу клиент-серверное ПО, но встала проблема экономных провайдеров, которые всех своих юзеров на парочку ip садят. Нужна возможность доставки пакетов tcp и udp, когда ip реальный все ок, а когда нет, чего делать?
А вот так вот - никак :)Если ты имеешь ввиду аську, которая показывает внутренний IP, так это сам клиент говорит серверу, если не отключить эту фичу. А для старого протокола (который еще по udp работал) в ipchains/iptables есть отдельный модуль. Так же как и для ftp для соединения в активном режиме.
В принципе, ты можешь по tcp-соединению получать эту информацию. То есть, сам клиент будет её передавать серверу, а там уж делай, что хочешь.
Ну или написать свой модуль для файрвола и заставить провайдеров его подключить. Если сможешь, конечно :)
попробуй посмотреть в сторону GNU' ICQ и пр. софта open source - эта проблема уже давно решена...
>попробуй посмотреть в сторону GNU' ICQ и пр. софта open source -
>эта проблема уже давно решена...Мдя ... Куда катится мир ... Если провайдер не будет пробрасывать UDP соединения на определнный порт снаружи внутрь то хоть вы зазасылайтесь, они не дойдут ... Учите технологию работы NAT
Teoreticheski eto vozmozhno cherez LooseRouting IP option. Parkticheski ona vsemi firewallami ignoriruetsya/vyrezaetsya - posemu nikak. I uznat' int adress bez pomoschi klienta tozhe nel'zya.
А может у кого исходники простых асек есть? (смотрел micq, не разобрался где у нее что). И еще вопрос: я правильно понимаю, что можно используя сокеты послать на внешний ip, а в заголовке прописать внутренний?