Решение

Суть

Программа обхода firewall fwprc будет использовать "tty-прокси", cotty, который открывает два псевдо-tty устройства, выполняет команды на каждом из устройств, а затем глупо копирует символы в обоих направлениях. Одной командой будет telnet на удаленную машину, а другой - локальный pppd, который после этого может открыть и контролировать telnet-соединение, при помощи стандартного chat-скрипта.

fwprc

Я написал очень хорошо документированный скрипт для обхода firewall - fwprc, который есть на моем сайте http://www.tunes.org/~fare/files/fwprc/, там же можно взять и cotty(необходимый для fwprc версии 0.2 и новее). На момент написания этого документа самые новые версии программ - это fwprc 0.3a и cotty 0.3a.

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

КОНКУРС! КОНКУРС! Пошлите мне аудио-файл .au с записью того, как вы произносите название "fwprc". Выиграет самый непонятный вариант, и имя его создателя попадет на страницу fwprc версии 1.0!

Я проверил работу этой программы в нескольких вариантах, настраивая ее через файлы конфигурации. Но, конечно, у вас она не заработает согласно закона Мерфи. Пожалуйста, посылайте мне свои предложения и дополнения, чтобы облегчить жизнь тем, кто встанет на этот нелегкий путь после вас.

.fwprcrc

Работу fwprc можно настроить при помощи файла настройки .fwprcrc, который должен быть на обеих сторонах firewall. Существует возможность использовать несколько различных конфигураций (например, Я делаю так), и несколько из них оставлены в качестве примера для читателя.

Для начала скопируйте соответствующую (предпоследнюю) секцию файла fwprc в файл .fwprcrc в вашем домашнем каталоге. Затем замените в нем значения переменных, чтобы они соответствовали вашим машинам. Затем скопируйте этот файл на удаленную машину, и все проверьте.

По умолчанию локально используется pppd, а удаленно - slirp. Чтобы это изменить, вы можете подправить соответствующую функцию в файле .fwprcrc примерно так:
remote_IP_emu () { remote_pppd }

Заметьте, что SLiRP безопаснее pppd, к нему проще получить доступ - он не требует администраторских прав на удаленной машине. Другой его плюс - он игнорирует все пакеты, которые идут не прямо с соединенной с ним машины (этот плюс становится минусом, если вы хотите таким образом работать с целой подсетью при помощи маскарадинга). Обычно стандартных функций SLiRP достаточно, но все-таки некоторые минусы у него обнаружились (например, управляемость при работе); конечно, это бесплатная программа - исправляйте исходные тексты: вносите в них все, что вам необходимо.