Делаем шрифты TrueType доступными
Давайте начнем со шрифтов. Для этого подойдет любой шрифт TrueType, включенный в любую реализацию MS Windows. Не забудьте, что текстовые процессоры и другие программы тоже могут включать в себя свои шрифты. Шрифты MacOS для этого не подойдут. Существуют также несколько наборов "бесплатных" шрифтов, которые вы можете скачать из сети, если вы уже сожгли свой CD с Windows (см. ссылки в разделе3 Разд. Ссылки).
Для того, чтобы использовать TrueType, шрифты должны быть всегда доступны серверу шрифтов. Это означает, что они должны быть на файловой системе, которая всегда подключена. Я бы не советовал вам использовать Windows-раздел, если у вас система с двойной загрузкой. Шрифты лучше скопировать в Linux-раздел. Во-первых, станем пользователем root при помощи команды su:
Файл fonts.alias
fonts.alias - это еще один конфигурационный файл, который можно использовать для изменения способа работы со шрифтами. Подобно файлам fonts.scale и fonts.dir, файл fonts.alias
должен быть в том же каталоге, что и шрифты, к которым вы задаете алиасы. Этот файл не обязятелен, но он может решить некоторые проблемы. Ниже приведен пример строки из файла /usr/X11R6/lib/X11/fonts/misc/fonts.alias в системе Redhat:
fixed -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1 |
fixed - это алиас. При каждом запросе мы на самом деле получаем определение шрифта из второй колонки. Шрифт слишком мал? Мы просто изменяем определение шрифта. (Внимание: этот файл критичен для работы системы, по крайней мере в RedHat.) Этот принцип справедлив для всех шрифтов, включая и TrueType. На самом деле, если у вас нет TrueType шрифтов, вы можете использовать эту хитрость для подстановки подобного ему шрифта Type 1, или другого шрифта, алиас которого ссылается на TrueType.
Файл fonts.alias очень важен для некоторых программ, которые не совсем правильно работают с данными, которые есть в файле fonts.scale. Одной из таких программ является Netscape. Если у вас нет файла fonts.alias, то вы заметите, что Netscape показывает размеры шрифтов от 0 до 12. Это можно исправить при помощи fonts.alias. Вы также можете заметить, что, если вы зададите другой размер в опции scalable font в пункте меню Preferences, Netscape не запомнит эту настройку. Это очень неудобно! Это также исправляется при помощи алиасов. Поэтому нам очень нужен этот файл. Вот пример из файла fonts.scale:
arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-ascii-0 arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-fcd8859-15 arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-15 arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-1 |
Это - векторные шрифты, поэтому мы не задаем стандартные размеры шрифтов. Нам надо создать свой файл fonts.alias. Ниже приведена его часть (касающаяся Arial):
-monotype-Arial-medium-r-normal--6-60-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--7-70-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--8-80-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--10-100-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--9-90-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--11-110-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--10-100-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--11-110-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--12-120-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--13-130-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--13-130-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--14-140-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--14-140-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--15-150-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--15-150-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--18-180-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--18-180-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--24-240-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--24-240-75-75-p-0-iso8859-1 |
Заметьте, что я разделил каждую строку на две для читаемости. В этом файле должны быть две колонки без символа "\", разделенные, как минимум, одним пробелом. Это достаточно для Netscape. Обратите внимание на различие поля pointsize записей первой и второй колонок первых двух строк. В первой колонке в этом поле написано "6", а во второй - "9". Таким образом, можно обойти синдром "очень мелких шрифтов" Netscape. Подправьте этот файл по вашему вкусу, разрешению экрана и т.п.
Этот файл можно создать вручную при помощи текстового редактора, или, что проще, при помощи специальных скриптов, использующих sed и awk. Прекрасное обсуждение содержимого этого файла есть здесь. Там же есть ссылка на python-скрипт, который может почти автоматически создать этот файл прямо на том сайте.
KDE
KDE - это одна из наилучших вещей, которые случались с Linux и X в течение долгого времени. Она представляет из себя полный пользовательский интерфейс, который очень сильно приближает Linux к цели - быть доступным для среднего непрофессионала. Более подробную информацию о KDE вы можете найти по адресу http://www.kde.org/. Тогда почему я пою этой системе дифирамбы здесь? Потому что в KDE версии 1.1 есть новая функция - совместить шрифты и цвета в ваших программах, включая и не-KDE программы, с тем стилем, который на этот момент выбран для KDE.
Использование шрифтов и цветов KDE в не-KDE приложениях
Это очень просто. Просто запустите Центр Управления KDE, перейдите к пункту Desktop, внутри него зайдите в подпункт Style. Там будет флажок с надписью "Использовать шрифты и цвета в не-KDE приложениях" ("Apply fonts and colors to non-KDE apps"). Установите его, нажмите OK, и все! В следующий раз, когда вы будете запускать многие X-приложения, они будут использовать те же цвета и шрифты, которые используют ваши KDE-приложения. Некоторым больше нравится эта опция, некоторым меньше. Если она вам не понравится, вы всегда можете ее выключить.
Doug Holland
meldroc@frii.com Обновлено: Hal Burgiss
hburgiss@bellsouth.net
Перевод: Станислав Рогин, ASPLinux
Каким образом можно исправить безобразные и нечитаемые шрифты X-Windows.
Настраиваем параметр FontPath
Первое, что нужно посмотреть, для излечения проблем со шрифтами - это файл XF86Config. (обычное его место - /usr/X11/lib/X11/XF86Config или /etc/X11/XF86Config.) Если вы еще до сих пор не догадались, то наиболее важная часть этого файла, относящаяся к шрифтам, это секция FontPath. Пока мы не углубились в нее, нужно бросить быстрый взгляд на другие части вашей X-конфигурации. Плохие настройки монитора могут со значительно большей вероятностью вызвать сильную головную боль, чем плохие или нечитаемые шрифты. Поэтому убедитесь в том, что частота вертикальной синхронизации монитора настолько высока, насколько может позволить ваш монитор (85+ Hz это великолепно, 75 Hz - так, ничего, 60 Hz - очень болезненно.)
Используйте ваш любимый текстовый редактор, чтобы исправить файл XF86Config. Почти в самом начале файла вы увидите примерно такие строки:
Настройка X-сервера
Для того, чтобы X работал значительно лучше, надо сделать несколько простых операций.
Netscape
Давайте согласимся с одним фактом, Netscape - это очень важная программа для Linux программа. Мы все ее используем, всем нам она очень нужна, поэтому остановимся на ней поподробнее. Стандартная установка Netscape известна своими проблемами со шрифтами - большие шрифты состоят из крупных точек, шрифты выглядят неправильно, шрифты слишком мелки для чтения. В-общем, неудобно! Может быть, именно поэтому вы читаете этот текст?
Я надеюсь, что вы уже последовали моим предыдущим советам. То, что я посоветую в этом разделе должно вам помочь. Наличие шрифтов TrueType в вашей системе уже стало необходимостью, и для работы с ними вам нужен сервер шрифтов TrueType. Многие веб-страницы используют конкретные семейства шрифтов, таких, как Arial, которые не очень типичны для пользователей Linux. Это неправильный шаг с точки зрения дизайна, но наличие в вашей системе стандартных TrueType шрифтов поможет вам обойти глупость некоторых веб- дизайнеров. НУ НЕ МОЖЕМ МЫ ОБОЙТИСЬ БЕЗ MICROSOFT!
Предположим, что в вашей системе уже работает TrueType. Зайдите в Netscape в меню Edit -> Preferences -> Fonts. Откройте список под названием Variable Width Font в правой части окна. Выберите любой подходящий вам шрифт. Включите флажок Allow Scaling. Если вам предлагаются только 0 и 12 размер шрифта, то вы можете ввести свой размер в окошке рядом с размерами, а затем нажать на кнопку OK. Проблема состоит в том, что Netscape не запомнит эти значения, и вам придется вносить их каждый раз при запуске Netscape. Это нужно только, если вы еще не настроили файл fonts.alias. Этот файл разрешит ваши проблемы. Читайте раздел Разд. Файл fonts.alias, чтобы узнать подробнее о файле fonts.alias.
Вы можете поэкспериментировать над настройками в файлах ~/.Xdefaults (или ~/.Xresources):
Netscape*DocumentFonts.sizeIncrement: 10 Netscape*documentFonts.xResolution*iso-8859-1: 120 Netscape*documentFonts.yResolution*iso-8859-1: 120 |
Переменная 'sizeIncrement' контролирует размер интервала при различии заданных в странице параметров 'basefont':
Значение по умолчанию - '20', что достаточно много. Изменяя это число можно уберечь Netscape от слишком больших или слишком малых шрифтов. Разрешения по x и по y - очень грубый эквивалент разрешения экрана в точках на дюймах. Экспериментируйте.
Затем запустите команду:
$ xrdb -load ~/.Xdefaults |
(или .Xresources) и перезапустите Netscape. Таким образом можно изменять разные параметры Netscape. Вы можете посмотреть содержимое файла Netscape.ad, который должен входить в поставку вашего пакета Netscape.
Если при помощи этих советов вы не сможете добиться желаемого результата, и проблема "мелких шрифтов" останется, то смотрите выше раздел, касающийся файла fonts.alias. С помощью этого файла вы можете добиться значительно лучших результатов.
Настройка Mozilla должна быть практически идентична Netscape.
Опции командной строки X-сервера
Следующая вещь, которую вам необходимо сделать, это настроить опции командной строки Х-сервера. Вам будет необходимо использовать опцию -dpi, которая определяет разрешение монитора в точках на дюйм. Так как в наше время многие системы используют дисплеи с высоким разрешением, то есть большие шансы, что они будут прекрасно работать с разрешением в 100 точек на дюйм (dpi).
Если вы запускаете Х с командной строки консоли, наберите
$ startx -dpi 100. |
Если вы используете xdm для графического входа в систему, вам, наверное, потребуется изменить ваш файл /usr/X11/lib/X11/xdm/Xservers (или, возможно, в /etc/X11/xdm/Xservers), в котором будет командная строка запуска для Х-сервера. В моем файле находится такая строчка:
:0 local /usr/X11R6/bin/X -dpi 100 -gamma 1.6 |
Дополнительную информацию смотрите в руководстве по Х и Х-серверу.
Серверы шрифтов
Существует несколько различных версий серверов шрифтов, которые нам подойдут: xfstt, xfsft, а также подправленная Redhat версия xfs, основанная на xfsft. Несмотря на похожесть имен, это абсолютно различные программы. Скорее всего, ваш дистрибутив включает в себя один из этих пакетов, и, возможно, часть из них вы уже установили.
Раньше, серверы шрифтов использовать для передачи шрифтов по сети. В этом случае шрифты могли находиться на одной машине, и клиенты могли обращаться к ним по мере необходимости. Однако, в настоящее время разработчики встроили в них возможность вывода шрифтов (Эта возможность уже встроена в XFree86 4.x, поэтому вам не понадобится отдельный сервер шрифтов, если вам нужна лишь поддержка TrueType)
Один из таких серверов шрифтов - xfstt. xfstt был создан специально для работы с шрифтами TrueType.
xfstt очень просто установить. Сначала, загрузите его из сети, или проверьте CD с вашим дистрибутивом. Самую свежую версию можно найти по адресу http://metalab.unc.edu/pub/Linux/X11/fonts/
После того, как вы получите архив, разархивируйте его:
Шрифты TrueType (Одна из немногих хороших вещей в Windows)
По той интересной причине, что ребята в Redmond-е значительно сильнее заботятся о внешнем виде своего программного обеспечения (чем о нормальности внутреннего содержания ;) они встроили поддержку шрифтов TrueType в Windows. Windows 9x и почти все остальные варианты Windows поставляются сейчас со шрифтами Arial, Times New Roman, и Courier New, которые являются почти полными аналогами шрифтов Helvetica, Times и Courier. Шрифты TrueType - векторные, поэтому они выглядят хорошо при больших размерах, и они прекрасно описаны, поэтому они хорошо читаются даже при очень маленьких размерах. Многие Windows-программы поставляются с дюжинами шрифтов TrueType. Не используйте пока ваш Windows CD, как горючее для микроволновой печи, сначала достаньте оттуда шрифты.
К великому сожалению, в XFree86 3.x не встроена поддержка шрифтов TrueType, поэтому вам придется самим ее добавить. Однако, эта поддержка встроена в XFree86 версий 4.x (см. раздел Разд. XFree86 версий 4.x). Это означает, что вам надо установить сервер шрифтов, поддерживающий TrueType, и, конечно, сами шрифты. Вы не найдете хороших шрифтов ни в одном дистрибутиве. Наиболее вероятная причина этого - ни один хороший качественный шрифт до сих пор не имеет подходящей для этого открытой лицензии.
Ссылки
HOWTO: Настройка Видео-режимов - основы и детали того, как взять максимум от вашего монитора.
HOWTO: Шрифты - Много полезных советов по установке шрифтов и настройке приложений (StarOffice, Applixware, Wordperfect, Ghostscript, TeX/LaTeX).
HOWTO: TrueType - много советов по печати и немного описаний приложений.
Домашняя страница xfsft, программы поддержки TrueType для X. Эта программа положена в основу модуля "freetype" XFree86 версий 4.x и xfs, входящего в состав дистрибутива Redhat. Неплохой сайт, на котором есть ссылки на другую информацию, касающуюся шрифтов и TrueType.
Домашняя страница ueType - еще один сервер шрифтов TrueType, который подходит Японских, Китайских и Корейских шрифтов.
Советы по решению проблем с размером шрифтов на сайте Netscape.
Wordperfect для Linux -- Шрифты и Принтеры автора Rod Smith, автора книги Использование Corel Wordperfect 8 для Linux от Que. Великолепная информация по Wordperfect, и как использовать в нем TrueType.
Проект XFree86 - та компания классных ребят, тратящих огромное количество сил и времени на создание этого шикарного графического интерфейса. Некоторая информация о шрифтах на странице XFree86 4.x.
Веб-шрифты Microsoft прямо из пасти огнедышащего Дракона -- и бесплатно! Если у вас нет доступа к системе win32, то вам понадобятся шрифты, предназначенные для Win3.1. Их можно распаковать в Linux (см. вышеe).
RPM-пакет Веб-Шрифты - содержит часть веб-шрифтов MS.
HP FontSmart TrueType Fonts от Hewlett Packard -- Garamond, Bodoni, Dark Courier, Euro Sign и Ozzie Black. Могут быть разархивированы в Linux утилитой unzip.
Freeware Connection -- Сайты Бесплатных Шрифтов - большое количество ссылок на сайты со шрифтами.
TrueType Шрифт Bitstream's Geometric Slabserif.
XFree86 версий 4.x
XFree86 4.0 среди большого количества новых возможностей включает в себя встроенную поддержку шрифтов TrueType. Расширенная поддержка шрифтов основана на xfsft Juliusz Chroboczek, который, в свою очередь, основан на библиотеке FreeType, написанной Mark Leisher, поэтому его настройка похожа на настройку xfsft и модифицированной Redhat версии xfs.
Переменная FontPath находится там же, в файле XF86Config. Для пользователей Redhat xfs это означает, что им надо перенести FontPath из файла /etc/X11/fs/config обратно в XF86Config. Более того, надо заметить, что для поддержки TrueType шрифтов xfs больше не нужен. Вы можете его отключить, только если вам не нужен сетевой сервер шрифтов.
Section "Files" FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/Type1" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/share/fonts/default/Type1" FontPath "/usr/local/share/fonts/ttfonts" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" EndSection |
Доя использования TrueType, вы также должны указать загрузку модуля X-сервера в разделе "Module":
Section "Module" Load "freetype" Load "speedo" Load "type1" EndSection |
Для каждого каталога со шрифтами TrueType вы должны создать файлы fonts.scale и fonts.dir
(аналогично xfsft и xfs Redhat). В создании файла fonts.scale вам поможет утилита ttmkfdir. Смотрите выше раздел с описанием xfs Разд. xfs, входящий в состав дистрибутива Redhat, в котором описывается, как это сделать.
xtt - это другой доступный модуль работы с TrueType, который больше известен поддержкой идеографических (Восточных) шрифтов. Вы можете использовать и его, но не вместе с обычным.
Xfsft
xfsft - это решение для работы с TrueType, предложенное Juliusz Chroboczek. xfsft основан на библиотеке работы со шрифтами FreeType, которая разработана Mark Leisher. Также существует патч для xfs XFree86, и связанная с ним библиотека -- xfs + ft. xfs, входящий в состав Redhat является на самом деле xfsft с небольшими изменениями. Более того, XFree86 версий 4.x включает в себя модуль работы со шрифтами freetype, который также сделан Juliusz Chroboczek.
Сборка xfsft требует наличия части исходных текстов XFree86 (кроме самих исходных текстов xfsft), так что это не очень быстрое занятие. Инструкции по сборке и настройке xfsft находятся в самом файле исходных текстов, поэтому я не буду вдаваться в подробности. Там все достаточно просто. На домашней странице xfsft также есть ссылки на уже собранные программы (см. выше).
Заметьте, что xfsft требует наличия файлов fonts.scale и fonts.dir. Файл fonts.scale можно создать вручную (уф!), или при помощи утилиты ttmkfdir. Она не входит в состав xfsft, но вы найдете ее здесь
или, возможно, на других известных Linux-сайтах. Она также входит в состав RPM Freetype в RedHat.
Вам необходимо настроить файл конфигурации. Ниже приведен пример:
в Linux нет стандартной системы
К сожалению, в Linux нет стандартной системы работы со шрифтами. Вам придется настраивать каждую программу в отдельности. В каждой программе может быть свой собственный способ настройки, поэтому читайте руководства.
Многие программы с графическим интерфейсом должны поддерживать и шрифты TrueType и шрифты Type 1. Однако, например, Wordperfect для Linux, не может их использовать. (См.ниже ссылки, где можно найти более подробную информацию о Wordperfect.) Текстовым редакторам, терминальным программам и т.п. требуются фиксированные шрифты, и они плохо работают с TrueType или с другими векторными шрифтами.
Несмотря на то, что мы не обсуждали здесь шрифты Type 1, они практически идентичны TrueType по своим свойствам. Скорее всего часть из них у вас уже есть. Однако, к большому сожалению, Type 1 не стал сетевым стандартом в отличие от TrueType. На самом деле они предназначались для печати. Более подробно об этом вы можете прочитать на странице ghostscript.
Антиалиасинг не поддерживается ни одной версией XFree86.
Несмотря на то, что существует возможность задать стандартный размер шрифта xfs-сервера, эта функция не используется практически ни одним приложением.
Дополнительные трудности
Чтобы все было хорошо, локальный эмулятор должен позволять создавать IP-соединения на уровне ядра, то есть, быть pppd. Однако pppd достаточно глуп - он позволяет создавать соединения только через /dev-устройства или через текущий tty; это должно быть tty, а не парой потоков (pipe) (как все было бы просто!). Он подходит для удаленной стороны - он может использовать tty telnet-сессии; но вот для локальной машины он никак не подходит - он не может запустить telnet-соединения; должен существовать какой-то обходной путь.
Telnet работает почти правильно с парой потоков, хотя он все-таки настаивает на выполнении ioctl с tty, с которым он взаимодействует; использование telnet без tty тоже не совсем правильно, потому что на медленных компьютерах соединение будет прерываться (fwprc 0.1 работал правильно на P/MMX 233, один из 6 раз на 6x86-P200+, и вообще не работал на 486dx2/66).
[Примечание: Если я найду того негодяя (возможно он из фанатов MULTICS, да и в UNIX должны были найтись пара недоумков, скопировавших глупую идею), который изобрел принцип "tty"-устройств - запись и чтение производятся с одним "псевдо"-файлом, вместо того, чтобы иметь одну чистую пару потоков - Я его задушу!]
Другие настройки
На самом деле существуют разные firewall, а не только те, которые позволяют вам устанавливать telnet-соединения. Но, в любом случае, пока может существовать поток пакетов, идущий через firewall, будет и способ его обойти. Вопрос лишь в сложности написания программы обхода.
Достаточно простой случай - когда вы можете запустить ssh на локальной машине и pppd на удаленной. Чисто теоретически, cotty версии 0.3a должен это поддерживать, но в fwprc поддержки ssh нет. Возможно, вы реализуете эту поддержку самостоятельно. Вы даже можете сделать это без firewall - таким образом вы получите защищенную Виртуальную Частную сеть "VPN" (Virtual Private Network). Подробнее читайте мини-HOWTO "VPN".
Если вы должны работать с 7-битной линией - используйте SLIP, вместо PPP. Я никогда не тестировал подобный вариант - в этом просто нет необходимости, почти все линии в наше время более-менее поддерживают 8 бит; но больших трудностей быть не должно.
Если единственный путь через firewall - это WWW-прокси (обычно - это самый минимум в сети, подключенной к Интернету), то еще не все потеряно. Вы можете написать демона, который буферирует входящие и исходящие данные, и посылает их по HTTP-соединениям, достигая тем самым некоторого подобия протокола telnet-поверх-HTTP, над которым можно запустить fwprc. Возможно, это будет не очень быстро и гибко, но для fetchmail(1), suck(1) и им подобным неинтерактивным программам этого хватит.
Если вам надо нечто более производительное, но не фильтруется нечто очень дикое (запросы DNS, ICMP-пакеты, и т.п.), то у вас дела достаточно плохи. Вам придется править в ядре работу с IP, используя (например) систему работы с пакетами из проекта Fox. Вы сможете получить IP-по-HTTP, IP-по-DNS, IP-по-ICMP, или нечто подобное - это все требует не только достаточно сложного протокола обмена, но и работы с ядром OS - это достаточно сложно.
Кстати, если вы будете обходить Firewall при помощи псевдо-HTTP демона, не забудьте вложить в него пару-тройку веб-страниц, чтобы сбить с толку противных подозрительных администраторов firewall.
Другие требования
Вы знаете, что делаете; Вы знаете, как установить сетевое соединение; У вас есть имя и пароль входа в две системы на обеих сторонах от firewall; Вы можете устанавливать telnet-соединение с одной системы на другую (или ssh-, или нечто подобное) ; Вы можете запустить IP-эмулятор в оболочках в обеих системах; У вас есть программы, умеющие использовать эмуляцию IP на обеих сторонах;
Заметьте, что эмуляцию может использовать любая программа, так как локальный эмулятор - это pppd, взаимодействующий с ядром Linux; другие эмуляторы (например Term) требуют рекомпиляции и подключения соответствующих библиотек.
pppd можно найти на любом уважающем себя ftp-сайте; там же обычно можно найти и SLiRP. Если на удаленной машине у вас нет прав системного администратора, то вы можете использовать SLiRP.
Firewall Piercing mini-HOWTO
Francois-Rene Rideau
fare@tunes.org
Перевод: Станислав Рогин, ASPLinux
В этом документе способ использования PPP поверх telnet, целью которого является работа с сетью в обход firewall.
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 достаточно, но все-таки некоторые минусы у него обнаружились (например, управляемость при работе); конечно, это бесплатная программа - исправляйте исходные тексты: вносите в них все, что вам необходимо.
Где взять необходимые программы?
Многие из описанных здесь программ обычно входят в комплект вашего дистрибутива, правда, возможно, не полностью или с некоторыми ограничениями; во всяком случае, все пакеты, кроме двух последних, существуют в формате rpm. Если вы хотите получить последнюю версию исходных текстов или уже готовых программ (ведь может на одном из концов соединения быть не-Linux), посетите следующие страницы:
SLiRP можно найти по адресу
http://blitzen.canberra.edu.au/slirp и/или ftp://www.ibc.wustl.edu/pub/slirp_bin/..
zsh можно найти по адресу http://www.peak.org/zsh/.
ppp можно найти по адресу ftp://cs.anu.edu.au/pub/software/ppp/.
fwprc и cotty можно найти по адресу http://www.tunes.org/~fare/files/fwprc/
Называем все своими именами
Если вы хотите, чтобы этот обходной путь работал для вас, вам придется понять, КАК он работает, чтобы, если что-то сломается, вы знали где искать неисправность.
Первый шаг на пути к пониманию проблемы - присвоить всему соответствующие названия.
Итак "локальная" - это машина, которая устанавливает соединение, файлы на ней тоже называются "локальными"; и наоборот - "удаленная" - это машина с другой стороны соединения.
Поддержка этого документа
Я ощущал необходимость написать этот документ, но у меня не было достаточно времени, поэтому этот мини-HOWTO получился достаточно сыроват. Он таким и останется до тех пор, пока я не получу достаточно отзывов и предложений, и из них пойму, что и где дописать. Я буду очень рад отзывам и помощи. С радостью отдам в хорошие руки поддержку этого мини-HOWTO.
В любом случае, данный документ осветил некоторые проблемы, решением которых может заняться человек, которому не жалко времени (или денег?), чтобы их разрешить: в идеях нет ничего сложного, но вот детали могут достаточно сложны.
Не стесняйтесь присылать мне свои вопросы, и, я надеюсь, решения проблем, связанных с этим документом.
Получение письма-триггера
Если ваша машина находится за firewall, то ваша почта может находиться на центральном сервере, который, естественно, не делает фильтрование при помощи procmail(1) и не позволяет установить telnet-соединение. Нет проблем! Вы можете в этом случае использовать fetchmail(1), запустив его в режиме демона - он будет посылать и принимать почту в вашем Linux, (и/или вы можете использовать cron для связи с сервером через равные промежутки времени). fetchmail(1) будет посылать локальную почту через sendmail(8), а он в свою очередь должен быть настроен на использование для локальной доставки procmail(1). Заметьте, что если вы запустите fetchmail(1) в режиме демона, вы не сможете параллельно запускать еще одну копию fetchmail(1) для приема почты в определенное время - это аналогично запуску fwprc; конечно, вы можете запускать демон fetchmail(1) от некоего псевдо-пользователя. Частый запуск процедуры получения почты не даст ничего хорошего ни вашей машине, ни серверу. Слишком редкий запуск приведет к большой задержке писем в пути (а значит и задержке установки обратного соединения). Я запускаю свой fetchmail(1) каждые две минуты.
Понимание сути проблемы
Четкое понимание сути проблемы - большая половина ее решения.
Проблема
Наша цель - соединить между собой ввод и вывод локального IP-эмулятора, соответственно, с выводом и вводом удаленного IP-эмулятора
Каналами связи между двумя эмуляторами могут быть либо устройства (обычно pppd), либо "текущий терминал (tty)". Первый вариант, практически, невозможен в telnet-соединениях. Второй должен быть достаточно хитрым, потому что, когда вы запускаете локальный эмулятор из командной строки, он подключен к текущему tty пользователя, а не к telnet-сессии; если мы захотим открыть новую сессию (локальную или удаленную) на новом терминале, нам придется синхронизировать запуск и соединение IP-эмуляторов, иначе мусор одного из эмуляторов будет восприниматься как команды на другой стороне - это приведет еще к большему мусору и т.п..
Проблемы с безопасностью
Конечно, если ваш системный администратор установил firewall, то у него (нее) были на это причины - и вы могли подписать с ним контракт, запрещающий вам обходить этот firewall. С другой стороны, если вам разрешен telnet наружу (это главное условие для описанного здесь обхода firewall), значит вам разрешен доступ к внешним компьютерам - а если у вас есть доступ к внешним компьютерам, то вы можете выполнить то, что описано ниже.
Поэтому использование существующих прорех в firewall - это всего лишь вопрос удобства использования стандартных утилит и протоколов - это не использование специальных или модифицированных (и перекомпилированных) программ, использующих несколько специализированных прокси, неправильно или плохо настроенных, некомпетентным или невнимательным системным администратором; это не установка большого количества специализированных преобразователей, позволяющих работать вам с интернетом через пути, разрешенные на firewall (например, через HTTP).
Более того, использование пользовательского IP-эмулятора (такого, как SLiRP) должно оградить firewall от внешних атак, если конечно вы сами этого не разрешите (или они очень умны и хитры, и root на внешней машине следит за вами).
Вообще, описанный здесь обход firewall относительно безопасен. Однако, многое зависит от конкретных обстоятельств, и я не даю никаких гарантий. Многие вещи в Интернете сами по себе небезопасны, с этим обходом или без него - подходите ко всему с должной мерой осторожности, если у вас нет причин чувствовать себя безопасно. Если необходимо - используйте шифрование, дополнительную авторизацию и т.п..
Если подытожить - не используйте эту информацию, если не знаете, что делаете. Еще раз прочитайте главу "Ответственность".
Разумное обоснование
Часто возникают такие ситуации, при которых telnet-соединение может быть установлено только с одной стороны firewall; однако, некоторые способы связи с другой стороны все-таки существуют (например e-mail). В этом случае, обход firewall возможен - это делается при помощи некоторого сообщения на "правильную" сторону firewall с указанием установить telnet-соединение.
fwprc включает в себя код, позволяющий это сделать. Для этого, с удаленной стороны, должно придти письмо с PGP-аутентификацией; все, что вам надо - запустить fwprc в качестве фильтра procmail(1), (подробные инструкции есть внутри самого fwprc). Однако заметьте, что вам придется запускать pppd с соответствующими правами - возможно, придется писать свой su для того, чтобы стать root-ом. Инструкции приведены в fwprc.
Более того, аутентифицированный триггер - это еще не безопасное соединение. В этом случае я бы посоветовал вам использовать ssh (возможно поверх telnet) для того, чтобы обезопасить себя. И еще, опасайтесь того, что может произойти между приходом письма-триггера и установкой соединения при помощи ssh. Я приветствую любые советы по поводу этого.
Суть
Программа обхода firewall fwprc
будет использовать "tty-прокси", cotty, который открывает два псевдо-tty устройства, выполняет команды на каждом из устройств, а затем глупо копирует символы в обоих направлениях. Одной командой будет telnet на удаленную машину, а другой - локальный pppd, который после этого может открыть и контролировать telnet-соединение, при помощи стандартного chat-скрипта.
Вступительное слово
Не является секретом тот факт, что системные администраторы и пользователи смотрят на вопросы безопасности и применения ограничений немного по-разному. Достаточно часто по этой причине пользователь оказывается за firewall, который он может и обойти, испытывая при этом некоторые неудобства. В этом мини-HOWTO приводится описание простого способа использования стандартных утилит работы с интернетом, в обход firewall, при помощи IP-эмулятора, запущенного поверх telnet.
Идея создания данного документа была навеяна Мини-HOWTO "Term+Firewall", автора Barak Pearlmutter bap@cs.unm.edu, описавшего старую, и более нигде не применяемую программу, Term (кстати, великолепную для своих времен вещь). Также эта идея была подкреплена наличием некоторых особенностей не совсем стандартных telnet-ов.
Вторая копия ОЧЕНЬ ВАЖНОЙ ГЛАВЫ "ОТВЕТСТВЕННОСТЬ" -- это не шутка!!!
" Я снимаю всякую ответственность с себя за содержание этого документа. Если его использование обернется против вас самих - это ваши проблемы. А не моя вина. Если вы не осознаете риск сопряженный с выполнением этих инструкций, не делайте этого. Если все же сделаете, а после этого кто-то проникнет в сеть вашей компании, вы потеряете работу, компания - миллионы долларов, то не приходите ко мне со слезами."
Cftp
Удобный FTP клиент, работающий в полноэкранном режиме. Возможностей у него не очень много, но это восполняется легкостью в работе. Просмотр каталогов осуществляется при помощи клавиш управления курсором и Enter.
Вы можете получить последнюю версию cftp по адресу http://ftp.giga.or.at/pub/nih/cftp/.
Другие команды ftp
Существуют и другие команды ftp. Если у вас есть права, вы можете создавать каталоги на удаленном сервере, используя команду mkdir. Вы можете удалять файлы на сервере, используя команду delete, или rmdir, для удаления каталогов. Также, вы можете изменять права доступа к файлам, используя команду chmod.
Для получения большего количества информации, смотрите помощь в ftp программе (введите help (без параметров) для вывода списка всех команд или help для помощи по конкретной команде). Прочитайте страницы руководства (введите man ftp в командной строке).
FTP mini-HOWTO
Matthew Borowski
mkb@yahoo.com
Перевод: Александр Ермолаев, ASPLinux
Как использовать ftp клиенты и серверы
Linux mini-HOWTO
gFTP - FTP клиент для X Windows, написанный с использованием Gtk. Интерфейс, подобен популярному программному продукту WS_FTP.
gFTP показывает одновременные закачки, продолжает прерванные закачки, организует очередь, имеет возможность загружать полные каталоги, поддерживает proxy, имеет кеширование удаленных каталогов, пассивный и активный режим, поддержка drag-n-drop, диспетчер подключения и многое другое.
Если у вас установлен Red Hat Linux и графическая оболочка GNOME, тогда у вас, вероятно, уже есть gFTP. Если нет, вы можете найти gFTP на домашней страничкеhttp://gftp.seul.org/.
Linux mini-HOWTO
Guiftp - простой ftp клиент, написаный с помощью GTK+. Используйте его, если у вас нет необходимости использовать особые возможности, и вы хотите получить простой клиент.
Домашняя страничка Guiftp http://www.altern.org/ldufresne/guiftp/.
Как работает FTP сервер
Традиционный FTP сервер (ftpd) запускается через inetd (internet superserver daemon). Стандартный FTP порт - 21. Когда пользователь пытается войти, FTP сервер использует стандартный системный вызов для проверки имени и пароля пользователя, используя файл паролей или таблицу NIS, если вы ее используете. Если вход успешный, то пользователь получает доступ к системе.
Анонимный FTP работает по-другому. Пользователь входит под именем anonymous или the ftp (это может быть определено в файле конфигурации). Он получает доступ к публичным каталогам и не может получить доступ к каталогам, к которым ему запрещен доступ (напр. bin/, etc/, и lib/). Файлы для загрузки обычно содержатся в каталоге pub/.
FTP демон запускает внутренние команды для запроса ls. Вы можете помещать дополнительные программы в каталог bin, и пользователь сможет запускать их в своем ftp клиенте. Например, FTP из Red Hat включает команду RPM (пользователь сможет работать с пакетами RPM на сайте).
Некоторые серверы FTP работают по-другому. Например, позволяют установить учетные записи для пользователей, независимо от системного файла паролей (только учетные записи для FTP). Некоторые серверы (напр. ProFTPD и NcFTPd) имеют встроенную команду ls и не нуждаются в специальном дереве каталогов. Другие серверы ftp не следуют стандартным правилам ftp. FTP4ALL, например, не использует системный файл паролей. Использует свой файл пользователей и групп, и имеет особенности типа коэффицент закачка/загрузка и настраиваемые сообщения сервера.
Клиенты для X Window
Имеется несколько графических FTP клиентов, разработанных для работы в X Window. Эти клиенты просты в работе для пользователей, использующих графическую среду, и предлагают некоторые возможности, которые было бы трудно использовать в тектовых ftp клиентах.
Консольные FTP клиенты
Программа ftp доступна на большинстве систем (даже Win32 идет с ftp программой).
Существует большое количество других консольных ftp клиентов. Список, приведенный здесь, далеко не полный, но включает наиболее популярные из них. Ищите их на FreshMeat, чтобы найти больше.
Lftp
lftp-клиент является расширенной командной строкой, основанной на FTP клиенте. Подобно bash, он имеет управление заданиями. Использует библиотеку readline GNU для ввода. Вы имеете возможность редактирования в командной строке и автозавершение ввода. lftp также имеет поддержку закладок, использование зеркал сайтов, и передачу нескольких файлов одновременно.
Вы можете получить последнюю версию lftp по адресу http://ftp.yars.free.net/projects/lftp/.
Debian пакет доступен здесь ftp://ftp.freshmeat.net/pub/debs/lftp/.
LLNL XDIR и XFTP
LLNL XFTP был одним из первых графических FTP клиентов для Linux. Он поддерживает FXP (передачу файлов между двумя удаленными сайтами) и имеет Motif интерфейс.
Подробная информация доступна на http://www.llnl.gov/ia/xdir_xftp/.
Lukemftp
lukemftp имеет расширенные возможностеи, которые включают: редактирование командной строки, выбор в командной строке FTP и HTTP адреса, контекстно-зависимое завершение строки, линейку продвижения процесса, поддержка IPv6, изменение времени сохранения, страничный просмотр локальных и удаленных файлов, поддержка пассивного режима (с перходом в активный режим), поддержка SOCKS и регулировка скорости передачи.
lukemftp я рекомендую пользователям, не желающим использовать что-то отличное от стандартного ftp клиента, но при этом жаждущим получить широкие возможности.
Последняя версия lukemftp находится по адресу ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/.
Метки hash и tick
Было бы неплохо наблюдать процесс загрузки файла с FTP. Вы можете использовать команду hash для вывода метки хеширования, пока загружается файл:
Навигация и просмотр каталогов
Введите команду ls, чтобы просмотреть список файлов. Команда ls выполняется на FTP сервере. Опции этой команды, которые вы можете использовать, отличаются на разных серверах. Большинство основных опций, в общем, везде доступны, смотрите страницы руководства (manpage) по ls для уточнения подробностей.
NcFTP
NcFTP - общеизвестный ftp клиент для пользователей Unix. Он поставляется с большинством дистрибутивов Linux, и обладает расширенными функциями, такими, как автозавершение по tab и создание закладок. Версия 2 программы NcFTP имела проблемы при работе в полноэкранном режиме. Это исправлено в версии 3 (сейчас в бета).
Он не на все 100% совместим по стандартным ftp командам. Например, get и put в NcFTP подобны mget и mput в стандартном ftp. Так, если вы хотите сохранить удаленный файл под другим именем на локальном диске, вы должны ввести get -z remotename localname. NcFTP имеет отличную помощь, которая поможет изучить вам команды.
Последняя версия NcFTP доступна по адресу http://www.ncftp.com..
Об FTP
FTP (File Transfer Protocol - Протокол передачи файлов) - клиент-серверный протокол, протокол, который позволяет пользователю передавать и получать файлы с удаленного сайта. Он работает с TCP, и обычно используется в сети Internet, хотя может использоваться и в локальной сети.
FTP сайт - компьютер, на котором запущена программа FTP сервера (FTP демон или ftpd). Общедоступные FTP сайты обычно доступны любому, зашедшему под именем anonymous или ftp. Имеется много отличных FTP сайтов, на которых есть архивы свободно распространяемого программного обеспечения для Unix. Узнав, как использовать FTP, вы откроете себе доступ к огромным ресурсам.
Частные FTP сайты требуют имя пользователя и пароль. Если вы имеете учетную запись у вашего провайдера, вы можете обращаться к вашим файлам через FTP (свяжитесь с вашим системным администратором, чтобы проверить это).
FTP клиент - пользовательское приложение, которое обеспечивает доступ к FTP серверам. Существует множество FTP клиентов. Одни из них работают в графическом режиме, другие в текстовом.
FTP был впервые разработан в калифорнийском университете для включения в 4.2BSD (Berkeley Unix). RFC находится по адресу ftp://nic.merit.edu/documents/rfc/rfc0959.txt..
Помощь по FTP серверам
WU-FTPD - ftp демон включен во многие дистрибутивы Linux, в том числе в Red Hat и Caldera. Вы можете больше узнать о WU-FTPD здесь http://www.wu-ftpd.org.
ProFTPD мощный FTP сервер с конфигурацией в стиле Apache, он поддерживает виртуальные хосты, и внутренний ls.
Полный справочник по командам и файлы дистрибутива можно найти по адресу A complete command reference and downloads can be found at http://www.proftpd.org
Регистрация на FTP сервере
Когда вы соединитесь с FTP сайтом, система спросит ваш логин (нажмите Enter, и вы войдете под локальным именем, в данном случае под именем foo). Мы войдем как anonymous или ftp, чтобы получить доступ к общедоступному архиву.
Режимы передачи файлов
После входа на FTP сайт, ftp выдаст тип передачи файлов. В данном случае - двоичный (бинарный) тип передачи. Двоичный режим передачи файлов - передача файлов в том виде, в котором они хранятся на FTP сервере. Режим Ascii (текстовый) используется для передачи только тектовых файлов. Вы можете вводить ascii или binary для переключения между режимами передачи.
Поскольку вы хотите получить исходные тексты ядра, оставьте двоичный режим передачи. Бинарный режим необходимо использовать для всех нетекстовых типов файлов - таких как графика, архивы, программы и т.п. Если сомневаетесь - используйте бинарный режим.
Руководство начинающего по пользованию ftp
Быстрое руководство к использованию ftp.
Стандартная ftp программа - настоящий ftp клиент. Она входит в большинство дистрибутивов Linux. Сначало появилась в 4.2BSD.
WXftp
WXftp - FTP клиент, разработанный для X Windows, чтобы использоваться, главным образом, на рабочей станции Linux. Написан с использованием WXWindows toolkit и может быть откомпилирован с использованием Motif или GTK+.
WXftp включает интуитивно понятный пользовательский интерфейс (подобный WS_FTP), диспетчер сеансов, помощь, линейку процесса закачки, и многое другое.
WXftp можно найти на домашней страничке http://www.wxftp.seul.org.
Yafc
Yafc очень приятный в использовании ftp клиент, с возможностями, включающими кеширование каталогов, автозавершение при вводе удаленного имени файла, элиасы (aliases), раскраску файлов, рекурсивное исполнение get/put/ls/rm, организацию очереди, множественные соединения, поддержку proxy и другие.
Последнюю версию yafc вы можете получить с http://www.stacken.kth.se/~mhe/yafc/.
Debian пакет доступен по адресу http://members.home.com/decklin/experimental/.
http://members.home.com/decklin/experimental/.
Redhat пакет можно получить по адресу http://lz.freeservers.com/linux/yafc.html.
Загрузка и закачивание файлов
Введите ls, и найдите файл, который хотите загрузить с FTP. Это linux-2.2.13.tar.gz. Введите следующую команду:
Запуск ftp программы
Скажем, вы хотите соединится с FTP сайтом metalab.unc.edu, чтобы получить последние исходные тексты ядра Linux.
В командной строке введите:
Запуск команд среды
FTP клиент поддерживает использование знака (!), чтобы исполнять локальные команды. Например, вывести список файлов текущей локальной директории: