Форум: "Сети";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизUDP port mapping Найти похожие ветки
← →
bugman (2005-06-21 16:53) [0]Короче, требуется помощь в следующей ситуации. Голову разбил - не понимаю, почему не выходит. Вначале опишу ситуацию: есть "большая" локальная сеть, к ней подсоединено много мелких сегментов. Рассмотрим два из них, назовем их L и С. Чтобы дальше не путаться: сеть L = 192.168.6.xxx, C = 192.168.8.xxx. Они рутятся. Т.е. сеть L висит на шлюзе 192.168.6.1, сеть C на шлюзе 192.168.8.1. Через шлюз проходят только те, кто на шлюзе "прописан", т.е. "договорные" товарищи (я один из них), которые проплачивают владельцу крупной "белой" сети за Инет + абонентка, а забивать канал только из-за сетевых игр "провайдеру" не охота. Но всем, не смотря на договора или их отсутствие охота вместе хотя бы играть в CS (Counter-Stike). Доступа к шлюзу мы не имеем. Не долгая думая, я как администратор одного из сегментов, понимаю, что тут нам на помощь придет port mapping =) Т.е. на одной из машин (которая прописана на шлюзе) в сегменте L, к примеру, устанавливаем ПО, которое осуществляет redirect по определенным TCP/UDP портам на CS-сервер в другом сегменте или же на официальный CS-сервер провайдера. Решил написать небольшой сервис под win32 с иcпользованием INDY10. На форумах по этой потрясающей игре раздобыл инфу по портам, получилось следующее: UDP/1200, UDP/27000-27015 (включительно), TCP/27030-27039 (включительно). Короче, использую TIdMappedPortTCP и TIdMappedPortUDP. Для теста беру следующий конфиг: машину из C-сегмента (192.168.8.11), "прошитую" на шлюзе, свою машину (тоже прошитую) из L-сегмента (192.168.6.3) и непрошитую L-машину, на которой запускаю выделенный CS-сервер, который биндю на ее IP (192.168.6.30:27015). Итак, вернемся к самому приложению =) Динамически создаю 15 TIdMappedPortUDP, биндю их на 192.168.6.3:порт, в качестве MappedHost / MappedPort = 192.168.6.30:порт, аналогично с TIdMappedPortTCP (+ UDP/1200 еще, он еще в design time). Что происходит при попытке C-машины осуществить коннект на 6.3 - происходит запрос на UDP/27015 в этотм момент на CS-клиенте 8.11 начинает происходить загрузка, я же локально на 6.3 вижу, что идет запрос от 8.11 на мою, от меня на 6.30 и обратно. Происходит это все буквально секунду и ступорится. Т.е. 8.11 продолжает сыпать мне пакеты, я же молчу, даже не передавая их на 6.30. В чем мой вопрос? =) Вопросов несколько - 1. Может у кого есть идеи, где тут собака зарыта? 2. Как я правильно понял доки IndyProject, обрабатывать какое-либо событие компонентов TIdMappedPortXXX мне в данном случае не надо. Достаточно их забиндить, прописать mapped host/port, активировать? 3. Кто может дать работспособный пример, можно не на INDY с UDP bridging =) ? Помогите разобраться. Прошу вас, мастера. Кто сталкивался? Сразу отвечу на пару возможных вопросов, уточняющих ситуацию: использовать WinRoute / UserGate и т.д. не хочу до последнего - я считаю что это равносильно забиванию гвоздей микроскопом. К роутеру даже за ящик пива админу "белой" сети меня не пустят =)
← →
bugman (2005-06-21 16:57) [1]Создание:
procedure TMainForm.CreateMP;
var
i: Integer;
begin
for i:=0 to 15 do
begin
UDPArray[i]:=TIdMappedPortUDP.Create(MainForm);
UDPArray[i].Bindings.Add;
UDPArray[i].Bindings[0].IP:="192.168.6.3";
UDPArray[i].Bindings[0].Port:=27000+i;
UDPArray[i].MappedHost:="192.168.6.30";
UDPArray[i].MappedPort:=27000+i;
UDPArray[i].DefaultPort:=27000+i;
UDPArray[i].ThreadedEvent:=True;
end;
for i:=0 to 9 do
begin
TCPArray[i]:=TIdMappedPortTCP.Create(MainForm);
TCPArray[i].Bindings.Add;
TCPArray[i].Bindings[0].IP:="192.168.6.3";
TCPArray[i].Bindings[0].Port:=27030+i;
TCPArray[i].MappedHost:="192.168.6.30";
TCPArray[i].MappedPort:=27030+i;
TCPArray[i].DefaultPort:=27030+i;
end;
end;
З.Ы. Попутно =) В чем заключается разрешение / запрет broadcast для TIdMappedPortUDP? как такогового же броадкаста же нету? только если я его буду где-нибудь использовать сим компонентом непосредственно, верно?
З.Ы.Ы Наставьте меня на путь истиный. Когда-нибудь я тоже вам пригожусь.
← →
Eraser © (2005-06-21 21:10) [2]bugman (21.06.05 16:53)
А ещё есть символы #10 и #13 )
← →
DeadMeat © (2005-06-21 21:57) [3]Все читать не смог..
Поэтому такое.. Возьми HLProxy и не мучайся..
---
...Death Is Only The Begining...
← →
bugman (2005-06-21 22:11) [4]Eraser © (21.06.05 21:10) [2]
ты веткой не ошибся? =) я такое уже в какой-то ветке видел =)))
DeadMeat © (21.06.05 21:57) [3]
не канает HLProxy почему-то. вроде все верно. пробовал разных юзверей на разные порты (от 16000 и выше). не вышло. а так вроде все номрально - хотя бы грузиться начинает. помогите с маппингом разобраться. вдруг когда понадобится. плиз, спецы, подсобите в вопросе.
З.Ы. Простите что так много написал в первом посте, что аж читать трудно и долго. Извините. Просто хотел максимально детально обрисовать ситуацию.
← →
bugman (2005-06-21 22:12) [5]Eraser © (21.06.05 21:10) [2]
ты веткой не ошибся? =) я такое уже в какой-то ветке видел =)))
DeadMeat © (21.06.05 21:57) [3]
не канает HLProxy почему-то. вроде все верно. пробовал разных юзверей на разные порты (от 16000 и выше). не вышло. а так вроде все номрально - хотя бы грузиться начинает. помогите с маппингом разобраться. вдруг когда понадобится. плиз, спецы, подсобите в вопросе.
З.Ы. Простите что так много написал в первом посте, что аж читать трудно и долго. Извините. Просто хотел максимально детально обрисовать ситуацию.
← →
bugman (2005-06-22 21:32) [6]помогите. прошу вас. может все-такие есть какие мысли? извините, что текст вопроса так ужасно оформил... может новую ветку создать? )
← →
panov © (2005-06-22 22:28) [7]>bugman (22.06.05 21:32) [6]
может новую ветку создать? )
Создай. Только разбей на строки текст.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c