Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #66, ИЮНЬ 2004 г.

Двойной онлайн

Skylord (sky_lord@mail.ru)

Xakep, номер #066, стр. 066-024-1


Работа в Сети через несколько соединений одновременно

Хочется весь день сидеть на IRC, но жаба душит тратить на это диалап? Или ты доволен дешевой многочасовой аськой по GPRS, но тебя не устраивает скорость скачивания и цена за мегабайт? А может, у тебя есть локалка, но ты все равно мечтаешь сэкономить и сливать что-нибудь большое по модему? В общем, если ты ответил «Да!» хотя бы на один из этих вопросов, то этот материал наверняка должен тебя заинтересовать.

Общий смысл

Идею этой статьи подсказал один мой товарищ, которому до чертиков надоело все время переключаться с GPRS'а на модем и обратно - в зависимости от того, что он в данный момент делает в Сети. Тут же выяснилось, что возможность ходить в инет одновременно по двум соединениям интересует многих. Оно и понятно, ведь таким способом можно сочетать достоинства повременной оплаты за диалап и помегабайтной за мобильный GPRS или локалку (потому что при цене за мегабайт порядка 8-10 центов и выше качать что-то большое выгоднее обычным модемом - пусть дольше, зато дешевле). Но как это реализовать на практике? Оказывается, довольно легко!

Коннектимся

Прежде всего - пара слов о подключениях. Они могут быть какими угодно: локалка, диалап, GPRS (или, например, выход в Сеть через SkyLink), ADSL - на что хватит фантазии. В качестве примера я буду рассматривать модем и GPRS. Естественно, что провайдер для диалапа, оператор для мобильного инета и модель мобильника значения не имеют: главное, чтобы по отдельности они работали и не жаловались.

Проблема в том, что если подключиться по модему, а потом еще и по мобиле, то интернет-соединение прекратит свою работу - в трее все так же будут висеть иконки коннектов, но данные либо не будут передаваться вообще (скорее всего), либо будут передаваться медленно, с лагами и непонятно по какому каналу - модемному или мобильному. Почем? Давай разберемся.

Смотрим роутинг

Начнем с того, что в Windows, точно так же, как и в любых *никсах, статический роутинг (то есть жесткие указания путей маршрутизации) настраивается, как ни странно, командой "route" :). Чтобы получить текущую таблицу маршрутизации, открой командную строку и введи "route print" (кстати, того же можно добиться командой "netstat -r"). Если в это время ты подключен к Сети по модему, то, скорее всего, увидишь что-нибудь похожее на рисунок 1.

Адреса, начинающиеся на 127 - это loopback интерфейс, и он нас совершенно не интересует, 224.0.0.0 - это мультикастовые запросы, которые нас не интересуют тем более, а вот все остальное мы, пожалуй, рассмотрим сейчас повнимательней.

Как ты уже, вероятно, знаешь, каждая строка соответствует записи в таблице маршрутизации и указывает, что на определенный узел (первый столбец), находящийся в определенной подсети (маска - второй столбец), пакеты идут через указанный роутер (третий столбец), находящийся на заданном интерфейсе (четвертый столбец). Пятый столбец с метрикой определяет "приоритет" данного маршрута и нам с тобой не понадобится.

Первая строка с адресом 0.0.0.0 задает основной шлюз, передающий данные на любой адрес, маршрут до которого не задан непосредственно в таблице. Адресу шлюза соответствует клиентский IP соединения PPP (в WinXP/2k он указывается на вкладке «Сведения» окна состояния соединения, а в Win9x его можно узнать с помощью команды winipcfg). Так и учти на будущее - в таблице роутинга при PPP-соединении путь прописывается через его клиентский адрес. Суть в том, что у нас образуется туннель "клиент-PPP -> сервер-PPP" (обрати внимание на третью строку таблицы - маска 255.255.255.255 в ней и означает туннельное соединение), и для корректной работы маршрута необходимо указывать "вход" в туннель с нашей стороны. Хотя в итоге через туннель соединение выходит на сервер, который реально и является шлюзом.

Содержание  Вперед на стр. 066-024-2
<<< НАЗАД ||| ГЛАВНАЯ