Альтернативный DHCP-клиент (ISC dhclient)
Если вам не удалось добиться успеха с dhcpcd, вы можете попробовать ISC dhclient. Он идет вместе с дистрибутивом ISC DHCP, который включает и DHCP-клиент и DHCP-сервер. Инструкции, как собрать дистрибутив ISC DHCP, могут быть найдены здесь. Когда закончите, вернитесь в этот раздел для настройки клиента.
Следующую информацию предоставил Ted Lemon mellon@isc.org>>, один из авторов dhclient. |
В текущей версии DHCP-клиента вам на самом деле не нужен файл dhclient.conf. Все, что вам нужно сделать, это просто запустить dhclient: /sbin/dhclient.
При этом настроятся все возможные интерфейсы. Если этого не произошло или вы хотите настроить только один интерфейс, создайте /etc/dhclient.conf с примерно такой конфигурацией:
interface "eth0" { send dhcp-client-identifier 1:xx:xx:xx:xx:xx:xx; send dhcp-lease-time 86400; } |
Здесь определяется интерфейс eth0 (если вам нужен другой, то соответственно измените eth0). Замените xx:xx:xx:xx:xx на Ethernet-адрес карты. Это делает dhclient скорее похожим на клиент Win95.
Debian
Готовый deb-пакет DHCPcd находится по адресу:
http://ftp.debian.org/debian/dists/slink/main/binary-i386/net/
Или, можете следовать инструкциям из Slackware.
Чтобы поставить пакет наберите dpkg -i /where/ever/your/debian/packages/are/dhcpcd*deb.
Оказывается, что больше ничего настраивать не надо, т.к.:
DHCP mini-HOWTO
Vladimir Vuksan
vuksan@veus.hr
Перевод: Александр Ермолаев, ASPLinux
В этом документе даются ответы на вопросы возникающие при установке DHCP-сервера и DHCP-клиента на Linux.
DHCP-сервер под UNIX
Существует несколько различных DHCP-серверов под Unix и коммерческих, и бесплатных. Наиболее популярным считается Paul Vixie/ISC DHCPd. Последнюю версию 2.0 (для большинства пользователей) или бета-версию 3.0 вы можете взять по адресу
Некоторые дистрибутивы предоставляют готовый пакет dhcpd, так что вы можете пропустить этот раздел, если он у вас есть.
Скачайте и разархивируйте его. После этого перейдите в каталог с исходными текстами и наберите: ./configure
После того, как закончится настройка на вашу систему, наберите: make и make install.
Другие интересные документы
В апрельском Linux Magazine есть хорошая статья, которая называется Network Nirvana: How to make Network Configuration as easy as DHCP, которая описывает установку DHCP.
Где найти клиент (dhcpcd)
Вы можете скачать DHCP-клиент, предназначенный для вашего дистрибутива. Если вы хотите собрать его из исходных текстов, то вам нужен пакет dhcpcd 1.3.18. Его разработал Sergei Viznyuk sergei@phystech.com>, и в данный момент он идет в готовом виде в большинстве из дистрибутивов.
Исходные тексты dhcpcd могут быть скачаны с
ftp://ftp.phystech.com/pub/ (Основной сайт)
http://www.cps.msu.edu/~dunham/out/
Затем следуйте нижеуказанным инструкциям.
LinuxPPC и MkLinux
Следующий раздел написан R. Shapiro
По данным реализации "1999" (R5), Linuxppc теперь почти полностью совместим с Redhat, только с одним замечанием (см. ниже). В общих чертах, инструкции выглядят точно также, как и в RedHat 6.x и Mandrake 6.x.
Исключение составляет тот факт, что RedHat 6 использует 'pump' в качестве клиента, а 'pump' не очень хорошо работает под Linuxppc.
Чтобы обойти это, вы должны поставить последнюю версию dhcpcd (Sergei Viznyuk) и отредактировать /sbin/ifup
на использование dhcpd вместо pump.
Измените
Настройка DHCP-сервера
После окончания инсталяции наберите ifconfig -a. Вы увидите примерно следующее:
Опции DHCPd
Теперь вам надо настроить DHCPd. Чтобы это сделать, вам нужно создать или отредактировать файл /etc/dhcpd.conf. Существует также графический интерфейс kcmdhcpd для dhcpd под KDE ( http://www.kde.org/ ), который аналогичен конфигуратору DHCP под Windows NT. Когда выйдет KDE 2.0, оно должно идти вместе с kcmdhcpd, или вы можете качать его непосредственно с:
ftp://ftp.us.kde.org/pub/kde/unstable/apps/network/
Если вы хотите настроить его вручную, следуйте нижеуказанным инструкциям.
В большинстве случаев вам нужно назначать случайные IP адреса. Это может быть сделано при помощи следующих установок:
Основные проблемы и их решения
Если вы выполнили вышеуказанные шаги, а доступ к сети так и не заработал, то далее приводятся различные объяснения этому:
У вас не настроена сетевая карта
Во время процесса загрузки Linux пытается определить тип вашей карты и выводит что-то вроде этого:
Протокол DHCP
DHCP - это Dynamic Host Configuration Protocol (протокол динамической конфигурации машин). Он используется для настройки часто изменяемых сетевых параметров машин (клиентов) с помощью сервера. DHCP полностью совместим с BOOTP. Для дополнительной информации см. RFC 2131 (RFC 1541) и др. (см. раздел "Ресурсы Internet" в конце этого документа). Можете также почитать http://web.syr.edu/~jmwobus/comfaqs/dhcp.faq.html.
Этот мини-HOWTO описывает использование как DHCP-СЕРВЕРА, так и DHCP-КЛИЕНТА. Большинству людей нужен DHCP-клиент, который необходим на рабочих станциях для получения информации c сервера. DHCP-сервер необходим администраторам сети для передачи информации DHCP-клиентам. Так что, если вы обычный пользователь, то вам нужен DHCP-клиент.
в стандартный дистрибутив RedHat как
DHCPcd включается в стандартный дистрибутив RedHat как RPM-пакет, так что вы можете найти в вашем дистрибутиве в каталоге RPMS или по адресу:
ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/dhcpcd-0.6-2.i386.rpm
Установите его командой - rpm -i dhcpcd-0.6-2.i386.rpm.
Кроме того, вы можете сами скомпилировать его, следуя шагам, описанным в Slackware.
Следующую информацию мне предоставил nothing@cc.gatech.edu>.
Из файла /etc/resolv.conf я убрал мой статический адрес и имя машины. Однако, оставил строку с "search" и обе строки с "nameserver" (по какой то причине dhcpcd не создает файл /etc/dhcpc/resolv.conf, так что я использую постоянный файл /etc/resolv.conf).
В /etc/sysconfig/network я удалил настройку HOSTNAME и GATEWAY, а другие оставил как есть (NETWORKING, DOMAINNAME, GATEWAYDEV).
В /etc/sysconfig/network-scripts/ifcfg-eth0 я убрал IPADDR, NETMASK, NETWORK, и BROADCAST, а DEVICE и ONBOOT оставил как есть. Строку с BOOTPROTO изменил на BOOTPROTO=dhcp.
Сохранил файл. И перезапустил компьютер.
Когда закончите, переходите к заключительному шагу.
RedHat 5.x
Под RedHat 5.0+ настроить DHCPcd очень просто. Все что вам нужно, это запустить Панель Управления, набрав control-panel.
Выберите "Network Configuration" (Конфигурация Сети)
Нажмите на "Interfaces" (Интерфейсы)
Нажмите "Add" (Добавить)
Выберите Ethernet
В "Edit Ethernet/Bus Interface" выберите "Activate interface at boot time" (Активировать интерфейс во время загрузки) и выберите "DHCP" в качестве "Interface configuration protocol" (Протокол конфигурации интерфейса).
When you are finished go the last step.
RedHat 6.x и Mandrake 6.x
Под RedHat 6.0+ настроить DHCPcd очень просто. Все что вам нужно, это запустить Панель Управления, набрав control-panel.
Выберите "Network Configuration" (Конфигурация Сети)
Нажмите на "Interfaces" (Интерфейсы)
Нажмите "Add" (Добавить)
Выберите Ethernet
В "Edit Ethernet/Bus Interface" выберите "Activate interface at boot time" (Активировать интерфейс во время загрузки) и выберите "DHCP" в качестве "Interface configuration protocol" (Протокол конфигурации интерфейса).
Заметим, что в RedHat 6.x вместо dhcpcd по умолчанию устанавливается DHCP-клиент pump. CD-ROM включает RPM-пакет dhcpcd, так что если вам не удалось настроить pump, вы можете попробовать установить dhcpcd (напр. через rpm -i dhcpcd-1.3.17pl2-1.i386.rpm) и внести некоторые изменения.
Alexander Stevenson alexander.stevenson@home.com>
дополнительно отметил:
У меня не получилось с DHCPcd. То, что в конце концов заработало, был "pump", который поставляется вместе с Linux Mandrake 6.0 (я думаю, что с RedHat тоже). Я использовал команду:
pump -i eth0 -h hostname
Где "hostname" не имеет значения, однако без него сервер не отвечает.
Затем я соответственно изменил строчку в скрипте /sbin/ifup, т.к. она не содержала опцию -h и тоже не работала.
Обычно, если вы используете linuxconf, и настраиваете адаптер на "DHCP", это тоже не работает. Попробуйте добавить -h hostname к строке с pump в скрипте /sbin/ifup. Теперь мой скрипт содержит:
Slackware
Вы можете скачать последнюю версию DHCPcd с любого сервера Metalab:
ftp://metalab.unc.edu/pub/Linux/system/network/daemons
ftp://ftp.phystech.com/pub/ (Основной сайт)
Скачайте последнюю версию dhcpcd.tar.gz.
Разархивируйте ее
tar -zxvf dhcpcd-1.3.18pl1.tar.gz
войдите в каталог и соберите dhcpcd
cd dhcpcd-1.3.18pl1
make
Инсталлируйте (вы должны выполнить следующую команду, будучи root-ом)
make install
Она создаст каталог /etc/dhcpc, в котором DHCPcd хранит информацию, а файл dhcpcd будет скопирован в /usr/sbin.
Если вы хотите инициализировать систему, используя DHCP во время загрузки, наберите:
cd /etc/rc.d
mv rc.inet1 rc.inet1.OLD
Это переименует старый файл инициализации сети в rc.inet1.OLD. Вам нужно создать новый скрипт rc.inet1. Следующий код - то, что вам нужно:
Установка клиента
В настоящий момент существует три различных DHCP-клиента под Linux: dhcpcd, pump и dhclient. Этот мини-HOWTO описывает работу с dhcpcd.
Заключительный шаг
После того как вы перезапустили машину, вам нужно настроить сетевой интерфейс. Наберите: ifconfig.
Вы получите приблизительно следующее:
можно пропустить, но он может
Следующий шаг(и) можно пропустить, но он может понадобиться только некоторым:
Если вы хотите иметь временный доступ к сети, запустите dhcpcd из командной строки (для этого нужно быть root): /usr/sbin/dhcpcd.
Для отключения от сети, наберите /usr/sbin/dhcpcd -k.
Запуск сервера
Перед запуском сервера вам нужно сделать только одну вещь. В большинстве случаев при инсталляции не создается файл dhcpd.leases. Он нужен DHCPd для хранения информации о текущих выделенных адресах и представляет из себя обычный текстовый файл, который можно посмотреть во время работы DHCPd. Чтобы создать его наберите:
Divert-сокеты и другие подобные системы
Существуют другие пакеты, позволяющие производит перехват IP-пакетов. Ниже описано, чем они отличаются от divert-сокетов:
Сокеты Netlink могут перехватывать IP-пакеты так же, как и divert sockets - используя firewall. Для них существует специальный тип (AF_NETLINK) и с первого взгляда они ничем не отличаются от divert. Но, на самом деле, существуют два серьезных отличия:
В системе Netlink-сокетов нет портов, поэтому очень сложно иметь несколько процессов, перехватывающих разные потоки данных (в divert-сокетах встроено стандартное 16-битное пространство портов - соответственно, у вас может работать параллельно до 65535 процессов, перехватывающих разные потоки данных)
В системе Netlink-сокетов не существует простого способа посылать пакеты дальше (обратно в сеть), потому что в нее не встроена защита от повторного перехвата этих же пакетов. В divert-сокетах эта проверка производится автоматически
Если честно, netlink-сокеты существуют не только для перехвата. В общих словах, механизм netlink предназначен для осуществления связи между ядром и пользователем. Существуют, например, netlink-сокеты маршрутизатора, позволяющие вам работать с подсистемой маршрутизации пакетов. Однако, с точки зрения перехвата пакетов, netlink-сокеты не настолько гибки, как divert.
Raw-сокеты
Использование RAW-сокетов - неплохой способ прослушивания сетевого потока (особенно в Linux, в котором RAW-сокеты могут прослушивать и TCP, и UDP-трафик - многие другие UNI*-ы этого не позволяют), но RAW-сокет не может помешать пакету продолжить свой путь до получателя - он просто предоставляет вам копию пакета. Нет никакого способа послать модифицированный пакет дальше, потому что исходный пакет не останавливается. Более того, вы можете фильтровать пакеты только по номеру протокола, который задается при открытии RAW-сокета. RAW-сокеты никоим образом не взаимодействуют с firewall.
Библиотека libpcap, и в частности ее наиболее известная утилита tcpdump, позволяет прослушивать трафик, идущий через сетевой интерфейс (это может быть ppp, eth, и т.п.). В ethernet вы можете включить на своей сетевой карте режим " promisc", и она станет обрабатывать весь IP-трафик, идущий по сети, а не только адресованные ей пакеты. Конечно, в libpcap не встроено способов перехвата пакетов, и нет способа их послать. На самом деле, libpcap и divert-сокеты служат для разных целей - их нельзя сравнивать.
Фрагментация
Как уже было упомянуто выше, divert-сокеты не поддерживают (де)фрагментацию перехваченных пакетов - вы всегда получаете фрагменты пакетов в том виде, в котором они были в сети, и вы не можете переслать пакет, имеющий размер больше PMTU. Предполагается, что поддержка фрагментации и дефрагментации пакетов будет реализована в ближайшем будущем.
Где взять исходные тексты?
Оба патча можно взять с веб-сайта divert-сокетов http://www.anr.mcnc.org/~divert
Для ядра существуют два варианта - патч к неизмененным исходным текстам ядра версии 2.2.12, или готовые модифицированные исходные тексты ядра 2.2.12 (значительно большие по размеру, чем патч). ipchains находится там же, в виде уже модифицированного пакета с исходными текстами.
Использование ipchains
Модифицированная версия ipchains, которую вы возьмете на указанном выше веб-сайте - это утилита, позволяющая изменять правила firewall из командной строки. Существует также способ задать эти правила из программы. В примере программы перехвата будет использоваться именно этот способ - настройка правила DIVERT аналогична настройке правила REDIRECT - указываете DIVERT в роли получателя, номер divert-порта, и у вас все готово.
Синтаксис команды ipchains для настройки правил firewall не изменился. Для использования правила DIVERT, вы должны использовать опцию -j DIVERT в роли получателя, а все остальное остается без изменений. Например команда
Использование перехвата соединений
В этой главе обсуждаются возможности применения divert-cокетов, и чем они отличаются от других существующих механизмов перехвата соединений.
Мини-HOWTO: Перехват соединений
Ilia Baldine
ibaldin@anr.mcnc.org
Перевод: Станислав Рогин, ASPLinux
В этом документе содежится информация по установке и настройке в Linux 2.2.12 перехвата IP-соединений, при помощи системы divert-сокетов, входящей в комплект FreeBSD.
Модификация пакетов
После перехвата пакета, вы можете изменить его содержимое перед тем, как переслать его дальше. Вам надо просто помнить о следующих правилах:
Перед пересылкой должна пересчитываться контрольная сумма в заголовке IP-пакета
Поле IP ID будет заполняться за вас, если вы оставите его равным 0.
Обновление длины пакета зависит от вас.
Вы можете изменять любые другие поля заголовка, и правильность этого заполнения зависит от вас.
Ответственность
Этот документ был разработан в рамках проекта по обеспечению безопасности компьютерных сетей, финансируемого агентством DARPA. Ни я (Ilia Baldine), ни мой работодатель (MCNC), ни DARPA не несут ответственности за нанесенный или потенциальный ущерб, который может вызвать применение программы и/или использование процедур, описанных в документе. Как и множество других сетевых приложений, divert-сокеты могут использоваться как в законной плоскости, так и незаконной, а выбор этой плоскости остается за вами!
Планы на будущее
Как уже было упомянуто в разделе "Ответственность", работа над divert-сокетами производится в рамках проекта разработки систем безопасности сетей, финансируемого DARPA. Мы продолжим работу по адаптации будущих версий ядра к divert-сокетам по мере возможности. По той причине, что ядра версии 2.4 уже недалеко, мы полностью пропустим серию ядер 2.3.x.
Получение и сборка исходных текстов
Для использования divert-сокетов в Linux, вам понадобятся две вещи - модифицированные патчем исходные тексты ядра и исходные тексты пакета ipchains версии 1.3.9, также модифицированные соответствующим патчем.
Посылка пакетов без перехвата
Абсолютно необязательно перехватывать пакет для того, чтобы послать его дальше. Вы можете сформировать свои собственные пакеты и послать их через открытый подключенный divert-сокет. Правила заполнения заголовка аналогичны тем, что описаны в предыдущем разделе.
В дополнение к этому, вы должны будете передать divert-сокету структуру sockaddr_in (см. программу), в которой будет описываться, куда передать пакет. Если вы заполните эту структуру нулями или передадите вместо нее NULL, то divert-сокет будет пытаться передать пакет наружу. Если же вы укажете в структуре sockaddr_in адрес одного из сетевых интерфейсов, то divert-сокет попытается послать пакет "внутрь" машины, как будто он пришел извне. Все адреса, конечно, должны быть заданы в соответствии с порядком байт в сетевом адресе.
Пересылка пакетов, которые выглядят так, как будто переадресованы вашей машиной, должны включать в себя адрес входящего интерфейса (на самом деле, подойдет любой правильный адрес интерфейса).
Потоки firewall
В Linux существует три потока пакетов: входящий (input), исходящий (output) и проходящий (forward). Существуют также учетные потоки, но они нас не интересуют. В зависимости от происхождения пакета, он проходит через один или несколько из следующих потоков:
Входящий поток (Input)
через него проходят все пакеты, попадающие в машину извне - пакеты, предназначенные для этой машины, и пакеты, которые будут переданы дальше.
Исходящий поток (Output)
через него проходят все пакеты, отправленные этой машиной, а также пересылаемые пакеты
Проходящий поток (Forward)
через него проходят все пакеты, пересылаемые этой машиной.
Переадресованный пакет проходит через все три потока в следующем порядке:
Входящий
Проходящий
Исходящий
Иногда из-за этого возникают проблемы - вас могут интересовать только пакеты, предназначенные для этой машины, или наоборот - те, которые должны быть переадресованы. Часто бывает не совсем ясно, какой поток использовать.
Для полной ясности надо придерживаться следующего правила - проходящий поток должен использоваться только для отбрасывания пакетов, не предназначенных для этой машины, и не посланных ей. Если вам интересны и пересылаемые пакеты и пакеты, относящиеся к этой машине, - используйте входящий или исходящий потоки. Перехват однотипных пакетов на входящем и исходящем потоках не только создаст проблемы с пересылкой, но и, что более важно, в этом просто нет необходимости.
Пределы
По моему мнению, область применения divert-сокетов может быть ограничена лишь пределами вашего воображения. Мне будет очень интересно услышать о программах, использующих divert-сокеты.
Удачи!
Пример программы
Здесь приведен пример программы, которая читает пакеты с divert-сокета, выводит их содержимое на экран и затем пересылает дальше. В командной строке ей надо указать номер divert-порта для перехвата.
Сборка
Собрать ipchains достаточно просто - дайте команду
make |
в подкаталоге ipchains-1.3.9.
Для включения поддержки divert-сокетов, вам надо пересобрать ядро, предварительно настроив его командой:
make config или make menuconfig или make xconfig |
Не забудьте включить опцию "Поддержку неполных и/или разрабатываемых кодов/драйверов" ("Prompt for development and/or incomplete code/drivers"). Существуют всего три опции, влияющих на работу divert-сокетов, и все они описаны в следующей главе.
Опции, необходимые при сборке ядра
Чтобы использовать divert-сокеты, вам надо включить в ядро поддержку firewall и IP-firewall. На работу divert-сокетов влияют три опции сборки ядра:
IP: divert sockets
Включает поддержку divert-сокетов в ядре.
IP: divert pass-through
Определяет поведение правил DIVERT: по умолчанию правило DIVERT, описанное в firewall, отбрасывает пакеты, при отсутствии программы на порте, определенном этим правилом, то есть действует аналогично правилу DENY.
При включении данной опции, эти пакеты будут проходить дальше через firewall. Опцию можно использовать, если вам нужно статическое правило в firewall, но вы не хотите, чтобы с портом divert-сокетов постоянно работала ваша программа.
IP: always defragment
Определяет, выполнять ли дефрагментирование при передаче данных в сокет. По умолчанию код divert-сокет получает отдельные фрагменты пакетов, имеющих больший, чем MTU, размер и посылает их в таком же виде программе. Задача дефрагментации в этом случае лежит на приложении, использующем divert-сокеты. Более того, приложение не может послать фрагмент пакета, больший, чем MTU - он сразу будет отброшен (это ограничение ядра, а не divert-сокетов - ядра Linux версии до 2.2.x НЕ фрагментируют пакеты с установленной опцией IP_HDRINCL). Обычно в таком поведении нет ничего страшного - в основном, вы просто пересылаете те же фрагменты пакетов, которые получили, и все прекрасно работает - в этом случае, размер фрагментов не будет больше MTU.
Если вы включите опцию always defragment, то все дефрагментирование будет производиться в ядре. Это сильно уменьшает производительность механизма перехвата - каждый большой пакет, который вы хотите перехватить, должен быть сначала собран из фрагментов, и только после этого будет передан вашей программе. Затем, когда вы захотите послать его дальше, он будет снова разбит на части (если в ядре включить эту опцию, то оно будет фрагментировать пакеты, имеющие флаг IP_HDRINCL)
В ядрах Linux версии 2.0.36 подобный выбор не предоставлялся из-за неправильной структуры кода firewall - он обрабатывал только первый фрагмент пакета, а с остальными фрагментами поступал так же, как и с первым, не обрабатывая их. В результате этого, если первый фрагмент был отброшен firewall, то и все остальные отбрасывались дефрагментатором. Поэтому для нормальной работы с divert-сокетами в этой версии ядра вы ДОЛЖНЫ были использовать опцию always defragment для того, чтобы получать весь пакет, а не только его первый фрагмент.
В версии 2.2.12 структура кода firewall была исправлена, и вы можете сами решать, будет ли ядро заниматься (де)фрагментацией, или вы будете делать этой в своей программе.
ВНИМАНИЕ: в версии 1.0.4 divert-сокетов функция дефрагментирования не реализована. Работа над этим продолжается.
Список рассылки
Существует список рассылки, который можно найти на веб-сайте. Чтобы подписаться на этот список, отправьте письмо с пустой темой, написав в нем:
subscribe divert |
по адресу anr-majordomo@list.anr.mcnc.org. Адрес списка рассылки divert@list.anr.mcnc.org.
Чтобы отказаться от подписки, пошлите по адресу anr-majordomo@list.anr.mcnc.org письмо с пустой темой, написав в нем:
unsubscribe divert |
Веб-сайт
Как уже было упомянуто выше, более подробная информация о divert-сокетах находится на веб-сайте Divert-сокетов для Linux http://www.anr.mcnc.org/~divert.
Вступительное слово
Here's an easy game to play, Here's an easy thing to say:
If a packet hits a pocket on a socket on a port And the bus is interrupted as a very last resort, And the address of the memory makes your floppy disk abort, Then the socket packet pocket has an error to report!! If your cursor finds a menu item followed by a dash, And the double clicking icon puts your window in the trash, And your data is corrupted 'cause the index doesn't hash, Then the situation's hopeless, and your system's gonna crash! YOU CAN'T SAY THIS? WHAT A SHAME SIR! WE'LL FIND ANOTHER GAME SIR If the label on the cable on the table at your house, Says the network is connected to the button on your mouse, But your packets want to tunnel on another protocol, That's repeatedly rejected by the printer down the hall, And your screen is all distorted by the side effects of gauss So your icons in the window are as wavy as a souse, Then you may as well reboot and go out with a bang, 'Cause as sure as I'm a poet, the sucker's gonna hang! When the copy of your floppy's getting sloppy on the disk And the microcode instructions cause unnecessary risc, Then you have to flash your memory and you'll want to RAM your ROM Quickly turn off your computer and be sure to tell your mom! -- Anonymous |
не раз хотелось перехватить пакеты,
Вам, наверное. не раз хотелось перехватить пакеты, проходящие туда-сюда через вашу машину? Нет, я не говорю о простом просмотре пакетов в натуральном виде (как в raw-сокетах или libpcap (tcpdump)). Я говорю именно о том, чтобы перехватить пакет и, затем, возможно, после некоторой модификации, переслать его дальше. Ну что ж, время, когда это было простой мечтой, закончилось - теперь у нас есть divert-сокеты для Linux!
Divert-сокеты именно это и делают - они отфильтровывают пакеты, в соответствии с настройками firewall, и передают их вашей программе. Затем вы можете: просто отправить пакет дальше, модифицировать и отправить, или не пересылать его вообще.
Как вы наверно уже догадались по названию пакета, этот механизм включает в себя использование специальных RAW-сокетов, называемых divert (IPPROTO_DIVERT), позволяющих вам производить передачу и прием данных на них таким же образом, как и на обычных сокетах. Единственное различие состоит в том, что этот сокет привязан к порту - на него можно пересылать конкретные пакеты, попадающие в firewall. Любые данные, проходящие через firewall, могут быть посланы в этот сокет.
Эта система изначально входила в состав FreeBSD. Divert-сокеты для Linux - это адаптированная версия исходного пакета, претендующая на совместимость с ним (по крайней мере на уровне исходных текстов программ, использующих этот механизм).
Безопасность Вашего домена
Этот раздел описывает установку защиты для Вашего нового домена. Акцент делается на скрытых от пользователя особенностях. Если защита будет слишком навязчива или будет мешать пользователям работать, то они обязательно найдут способ, чтобы сломать защиту или вообще поставить под угрозу работу всего домена. Лучший способ избежать этого - сделать защиту настолько прозрачной, насколько это возможно, и, кроме того, поощрять пользователей, которые будут указывать на слабые места Вашего домена. Я знаю из персонального опыта, что если строить слишком жесткую политику защиты, то пользователи найдут способ обойти ее. Лучше всего, чтобы все удаленные соединения были обоснованы и одобрялись лично Вами.
Эта секция описывает как защититься от атак извне, и как оградить себя от случайных ошибок внутри Вашей сети. Обеспечение защиты от нападений изнутри - это более сложная задача, и она не описывается в данном документе.
Одно из рассмотренных направлений защиты в данном разделе - так называемая защита против ``вражеского маршрутизатора''. Маршрутизатор, предоставленный Вашим ISP, может быть удаленно настраиваемым, или, например, при тестировании специалисты технической службы могли забыть убрать какой-либо тестовый пароль. И то, и другое ставит под угрозу систему защиты ISP, а при взломе ISP, хакеры могут нанести удар и по подсети, поэтому по возможности следует рассматривать маршрутизатор ISP как потенциально враждебный. Т.к. иначе хакеры смогут использовать любой IP адрес Вашей внешней или внутренней подсети, а это позволит им перенаправлять весь проходящий трафик и исходящие пакеты.
Фильтрование пакетов
Некоторые провайдеры устанавливают фильтрацию пакетов в своих сетях для защиты пользователей друг от друга и от внешних хакеров. В сетях на кабельных модемах и других подобных широковещательных сетях возникала следующая проблема: пользователи Windows 95 или 98 неумышленно предоставляли полный доступ к своим дискам любому желающему, поэтому была возможность просмотреть список активных серверов в сегменте сети. Иногда решением этой проблемы являлась просьба не делать этого, иногда же провайдеры устанавливали фильтры пакетов, что позволяло избежать последствий неумышленного предоставления доступа к своим данным.
Фильтрование пакетов - это то, что вам придется сделать самим. Оно легко встраивается в ядро шлюза внутренней сети и помогает вам лучше понять, что, собственно говоря, происходит в сети. Скорее всего, вы обнаружите, что нужно немного поднастроить firewall для оптимизации его работы, и что это проще сделать самому, нежели обращаться к службе технической поддержки.
Если вы решили установить фильтры пакетов в вашей сети, читайте Разд. Настройка фильтрования пакетов.
Использование динамических IP адресов
Выгода от подключения нескольких человек через статические IP-адреса и различные сетевые сервисы сильно повышает стоимость. Это может быть в десять раз дороже, чем высокоскоростное соединение через DSL или кабельные модемы. Если из финансовых соображений Ваша организация не может купить каждому сотруднику статический IP-адрес и сетевое подключение или в вашей области это технически невозможно, попробуйте установить домен на динамическом IP-адресе. Вместо диапазона IP-адресов вы получите один, на нем будет находиться шлюз Вашей сети и все входящие сервисы, которые доступны с внешней стороны.
Сначала Вы, вероятно, захотите узнать законность этого. Многие компании запрещают устанавливать внешне-доступные серверы на персональных учетных записях. Они могут делать это фильтрованием пакетов, блокируя входящие соединения на порты HTTP и FTP. Также помните, что скорости соединения на персональных устройствах, типа домашнего DSL или кабельного модема могут довольно сильно отличаться. Скорость закачки обычно бывает много больше скорости отправки пакетов. Скорость отправки - это то, что наиболее важно для сервера FTP или WWW.
Если у Вас есть динамический IP-адрес, и Вы хотите иметь входящие соединения, Вы должны подписаться на услуги службы динамического хостинга, такие как DynIP, DynHOST, TZO, или fdns.net. Все они работают, используя программное обеспечение на Вашей машине, который отправляет текущий IP-адрес на сервер компании. Когда текущий IP-номер доходит до сервера компании, их DNS-таблица редактируется для сопоставления адреса с IP-адресом. Вы можете получить доменное имя под их доменным именем, например, "example.dynip.com" или ``example.dynhost.com'', или зарегистрировать Ваш собственный домен и установить первичный DNS для указания на компанию, предоставляющую данный сервис (обычно за более высокую цену).
Есть также бесплатные службы хостинга. Они еще только появляются, и я не могу дать конкретных адресов, но Вы можете найти их через поисковый сервер.
Если Вы установили динамический IP-адрес и подписались на один из этих сервисов Вы должны будете несколько отступить от действий, описанных в главе Разд. Выбор услуг, которые будут поддерживаться вашим доменом. Если не планируется установка сервисов WWW или FTP, то, скорее всего, Вам не понадобятся услуги вышеперечисленных компаний. Если же необходимы их услуги, то нужно будет установить первичный DNS так, чтобы он указывал на сервер компании, услуги которой Вы выбрали. Не надо устанавливать демон named, отвечающий запросам из внешнего мира. Другие детали, такие как обработка электронной почты, будут зависеть от конкретной компании, о них Вам лучше всего ответят в ее службе технической поддержки.
Последнее примечание: если Вы хотите иметь удаленный доступ к машине с динамическим IP-адресом, но не нуждаетесь в других сервисах на ней, недорогое решение состоит в том, чтобы сделать "место" на публично досупной машине со статическим IP-адресом, а Ваша машина с динамическим IP-адресом, будет посылать свой адрес туда, записывая его в доступный для редактирования файл. Когда Вы захотите удаленно зайти на Вашу машину, сперва зайдите на сервер, куда Ваша машина посылает свой IP-адрес, затем, используя slogin, подсоединитесь по этому адресу. Это практически то же самое, что делают платные службы, просто автоматизируют и упрощают некоторые шаги.
Электронная почта
Обычно провайдеры предоставляют клиентам почтовые ящики. Вы можете либо воспользоваться этой услугой (при этом пользователи будут просто забирать свою почту с сервера провайдера с помощью POP3 клиентов), либо обрабатывать почту на своей машине. Опять таки, вам придется выбирать из двух зол меньшее.
Плюсы и минусы использования сервера провайдера для работы со всей почтой:
Доступ к почте из дома или из других мест (во время деловой поездки, к примеру) может быть проще, впрочем, это зависит от системы безопасности, выбранной вами для защиты своего домена.
Почта хранится на сервере провайдера, что может превратиться в проблему, в случае посылки данных, предназначенных для внутреннего использования в незашифрованном виде.
Количество почтовых ящиков ограничено, за открытие дополнительных, как правило, приходится платить.
Для открытия нового почтового ящика приходится обращаться к провайдеру.
Плюсы и минусы своей собственной почтовой системы:
Почта хранится на вашем собственном сервере. В случаях, когда ваш сервер не работает, или переполняется диск, почта остается на сервере провайдера.
Количество почтовых ящиков неограничено. Вы можете сами создавать и удалять их.
Вам придется поддерживать работу с почтовыми клиентами в вашей частной сети и, возможно, работу с людьми, посылающими почту из дома.
Одно из возможных решений - поддерживать почту своими силами и, одновременно, иметь несколько ящиков на сервере провайдера для тех, кому нужен доступ к своей почте извне вашей частной сети. Это немного усложняет настройку и координирование почтовой системы, но зато дает гибкость, недоступную ни одному из вышеприведенных вариантов.
Если вы решили обрабатывать почту на своем сервере, читайте раздел Разд. Настройка электронной почты.
Если вы решили не обрабатывать почту своими силами, читайте Разд. Конфигурация DNS, если Вы не используете транспорт электронной почты.
Конфигурация DNS, если Вы не используете транспорт электронной почты
Конфигурация, описанная в разделе Разд. Настройка разрешения имен, имеет МХ записи, указывающие на машину ``mail.example.com''. МХ запись, с наиболее низким приоритетом, указывает удаленным серверам, куда посылать электронные письма. Другие записи МХ, с более высоким приоритетом используются как резервные приемники электронных писем. Они будут держать электронные письма в течении некоторого времени, пока основной приемник писем не может их обработать по какой-либо причине. Для примера считаем, что под псевдонимом fred.example.com mail.example.com обрабатывает электронные письма домена. Если Вы хотите разрешить доступ ISP ко всем работающим у Вас адресам электронной почты, Вы должны изменить записи МХ таким образом, чтобы указать на соответствующие ISP-машины. Спросите в службе технической поддержки Вашего ISP о том, какие имена хостов можно использовать в МХ записях.
Во время написания этого раздела
Во время написания этого раздела OpenSSH, подобно SSH1, дает возможность вставлять scp, ssh, и slogin как бинарные файлы, названные rcp, rsh, и rlogin, с переносом в ssh клиентских программах к исходным rsh, rcp, или rlogin, когда удаленная машина не выполняет sshd. Можно создать обращение rsh, вместо этого, по моему, важно сохранить безопасность при простоте использования для пользователей. Общие скрипты, rdist конфигурации, и т.п. могут работать без внесения каких-либо изменений в них если удаленная машина выполняет sshd, данные будут посылаться зашифрованными с довольно надежной аутентификацией. Если же удаленная сторона не поддерживает sshd, программа rsh
выведет на экран предупреждение о том, что соединение незашифровано. Это сообщение останавливает работу rdist и, возможно, некоторых других программ. Его нельзя подавить параметрами при компиляции, или чем-то подобным. Единственное решение этой проблемы для rdist - это запускать программу с -p /usr/lib/rsh/rsh.
Возьмите пакет ssh1 с ssh web site, или OpenSSH c OpenSSH web site, и скомпилируйте его, чтобы заменить незашифрованные r-программы (rsh, rlogin, и rcp). Во-первых, скопируйте эти три файла в /usr/lib/rsh/, затем сконфигурируйте пакет ssh:
Конфигурирование Вашего брендмауэра
В этом разделе рассказывается о настройке маскарадинга, пересылки и фильтрации маршрутизации. Желательно, чтобы сперва Вы прочитали IPCHAINS-HOWTO, прежде чем читать советы, приведенные ниже. В этом HOWTO подробно описываются шаги компилирования ядра с поддержкой маскарадинга и использование бинарных файлов ipchains. Вы должны разрешить работу брендмауэра на всех машинах, имеющих IP адрес.
Проверьте Ваши сценарии загрузки, чтобы удостовериться что загрузка на шлюзе происходит в следующей последовательности:
Инициализация карты Ethernet.
Брендмауэр выполняется через ipchains.
Пересылка включена.
Запускаются сетевые демоны.
Так, в качестве примера, возьмем систему Slackware, конфигурирование брендмауэра в ней происходит между rc.inet1 и rc.inet2. Далее, если возникнут любые проблемы во время конфигурации, предупреждение будет выведено на экран и Ethernet-карта отключится до загрузки сетевых демонов.
Одна стандартная проблема с брендмауэерами, это убеждение в том, что Ваши права правильно установлены для пакетов, приходящих от внутренних или внешних машин на брендмауэер. Локальные пакеты могут быть блокированы брендмауэром. Все это можно проверить только в процессе отладки, доведя настройку брендмауэра до такого уровня, чтобы все компоненты системы работали. К сожалению, это иногда приводит к появлению дырок в защите. Ниже приведен типовой скрипт, который позволит Вам избежать многих проблем при настройке брендмауэра. Это пример скрипта, /sbin/firewall.sh:
Конфигурирование X
В продолжении настройки для удобства защиты стало обычным помещение команд
Кто помогал мне при составлении данного документа
Этот докумен был написан в пределах проекта DYNACAN, как часть его развития под контролем Ministry of Human Resources Development Canada.
При написании этого документа очень помогли следующие люди:
Rod Smith (rodsmith@rodsbooks.com), кто предложил мне подробно описать процесс регистрации домена и его настройки с использованием динамических IP адресов, и указавшим мне варианты выделения динамических IP адресов.
Greg Leblanc (gleblanc@my-deja.com) сделал немало полезных предложений, облегчивших это документ для понимания.
Sami Yousif (syousif@iname.com), сказал мне о www.dhs.org.
Marc-AndrИ Dumas (m_a_dumas@hotmail.com), это тот, кто предложил мне добавить раздел о перемещении старого домена на новый IP адрес.
Osamu Aoki (aoki@pacbell.net), который рассказал мне о www.fdns.net.
Mini-HOWTO настройка вашего нового домена.
Christopher Neufeld
neufeld@physics.utoronto.ca
neufeld@caliban.physics.utoronto.ca
Перевод: Денис Дементьев, ASPLinux
В этом документе содержится информация о том, что вам, вероятно, придется сделать, чтобы настроить сеть из компьютеров со своим собственным доменом. Описывается настройка сетевых параметров, служб и системы безопасности.
Настройка фильтрования пакетов
Это обсуждается в разделе Разд. Конфигурирование Вашего брендмауэра.
Настройка электронной почты
Если Вы решили поднимать электронную почту для Вашего домена, нужно будет проделать несколько шагов для ее настройки. Если настройка произведена невнимательно, то вероятно, письма будут ходить очень медленно, т.к. будут находиться на одном хосте, в то время, как получатель зарегистрирован на другом. Из соображений безопасности, я рекомендую, чтобы почта, приходящая с машин, которые доступны из внешней сети, фильтровались (это поможет при борьбе с теми, кто хочет, чтобы у его настольной машины был реальный IP, а потом удивляется, почему его машина зависает дважды в день). Задача использования системы пересылки электронной почты целиком решается при помощи sendmail. Если кто-нибудь захочет рассказать о работающем решении на другом транспорте электронной почты, я только приветствую добавления.
Решение, основанное на использовании "sendmail"
Чтобы электронный адрес, зарегистрированный на одном хосте был виден на всех машинах, самое простое решение - экспортировать почтовую директорию, с правами на запись и чтение, по всей частной сети. Шлюз Вашей частной сети будет как собиратель и отправитель электронных писем для всей частной сети, у которой должны быть права на запись в директорию mail у root'а. Другие клиенты могут иметь или могут не иметь таких прав, по Вашему усморению. Моя личная философия безопасности - не должны предоставляться привилегии, если нет явной причины для этого. Из-за этого в моей сети root может читать почту только с определенной машины, но это не такое уж большое препятствие. Обратите внимание, что каталог почты может быть каталогом в сети, экспортируемым через NFS, или это может быть каталог на одном из внутренних серверов, экспортируемый в частную сеть. Если почтовый каталог резидентен на шлюзе частной сети, то не будет никаких проблем с правами для этой машины. Если же он находится на другом сервере, то обратите внимание, что электронные письма будут возвращаться, если с этим сервером, шлюзом или сетевым соединением возникнут проблемы.
Для Windows-машин в Вашей частной сети можно также установить РОР сервер на хосте, обслуживающем почту, или использовать samba для экспорта почты на эти машины. Windows-машины могут быть настроены для отправки и получения почты под именем пользователя Linux, типа joeuser@example.com так, чтобы адрес содержал имя хоста и доменное имя, но не имя машины такое, как barney.example.com. SMTP сервер должен быть установлен на gateway-машине частной сети, которая будет отвечать за отправку и любую пересылку почты.
Затем Вы должны настроить sendmail, чтобы отправлять письма от машин частной сети, переписывая адреса, если это необходимо. Получите исходники последней версии sendmail на sendmail.org. Соберите его, затем зайдите в подкаталог cf/domain, в каталоге с sendmail и создайте новый файл: example.com.m4
Настройка разрешения имен
Вам необходимо будет выбрать способ обращения компьютеров в сети друг к другу по имени, а также способ обращения людей со всего мира к вашим незащищенным хостам по имени. Для этого существует несколько путей.
DNS во внутренней сети, домен поддерживается провайдером
римечание: если вы решили не создавать внутреннюю (частную) сеть, то переходите к разделу Разд. Полностью незащищенная сеть, поддерживаемая провайдером. >
В этом случае, первичный DNS сервер для вашего домена поддерживается провайдером. Тем не менее, вы используете DNS в вашей внутренней сети при общении компьютеров в ней между собой. Имена незащищенных хостов и их IP адреса передаются провайдеру. Если вы хотите, к примеру, чтобы хост betty.example.com был WWW и FTP сервером, то вам нужно попросить провайдера проставить записи CNAME для www.example.com и ftp.example.com, указывающие на betty.example.com.
Настройте DNS на шлюзе в вашу внутренню сеть. Это нормально, с точки зрения безопасности, кроме того, упрощает перенастройку, если вы решите в дальнейшем перенести первичный DNS сервер на одну из своих машин.
Я предполагаю, что машина, на которой установлен сервер имен, имеет имя dns.example.com, является шлюзом во внутреннюю сеть, псевдонимом для fred.example.com и ее IP адрес 192.168.1.1. Если в вашем случае это не так, то нужно просто внести небольшие изменения в конфигурацию. Я не буду рассматривать их в этом HOWTO, за исключением особо интересных случаев.
Вам нужно будет скачать и скомпилировать последнюю версию BIND, the Berkeley Internet Name Domain. Ее можно найти на сайте BIND. Далее нужно настроить демон. Создайте файл /etc/named.conf со следующим содержимым:
Настройка сервера FTP
Еще раз, FTP-хост должен быть виден из внешней сети, не устанавливайте FTP-сервер на шлюз частной сети. Прочитайте руководство по установке, которое идет с FTP-сервером. Убедитесь, что используете самую последнюю версию сервера, т.к. в ранних версиях многих FTP серверов есть уязвимые места, с точки зрения безопасности. Если Вам не требуется анонимный вход на FTP-сервер, убедитесь что отключили эту функцию в Вашей конфигурации. Я рекомендую, обязывать ваших пользователей использовать scp, это позволит им делать резервные копии всех изменяемых файлов. Более подробную информацию можно найти в разделе Разд. Безопасность Вашего домена.
Настройка сервера www
Вы должны установить сервер, видимый из внешней сети на машине, вне частной сети, а не на машине - шлюзе частной сети, по соображениям безопасности. Если серверу необходимо обращаться к некоторым ресурсам, находящимся внутри частной сети, ситуация становится более сложной. Вы не найдете описания таких случаев в данном документе.
Подробности об установке самого сервера могут быть найдены в документации к apache и в документе Linux WWW HOWTO.
Настройка совместного использования дисков
Работать с почтой, приходящей на центральную машину, и читать/посылать ее с любой машины несомненно удобно, но некоторое внимание необходимо уделить и безопасности. NFS без AUTH_DES несомненно опасен. NFS полагается на клиентскую машину, для авторизации доступа не требуется проверка пароля, пользователю необходимо разрешить доступ к его специфическим файлам. Windows-машины могут быть сконфигурированы читать экспортированные NFS разделы с любым uid, полностью обходя права на файл, установленные UNIX. Следовательно, доступ к NFS можно давать только тем машинам, котороые всегда работают только под Linux (или Unix) и никогда не могут быть загружены под Windows. Чтобы экспортировать домашний каталог в Windows, используйте samba, установив режим аудентификации ``security=USER''. Соединение машин в вашей сети с использованием хаба тоже поможет, т.к. при этом теряется всякий смысл использования снифферов на Windows-машинах. В конечном счете, невозможно гарантировать совместное использование диска в сети.
Зачем беспокоиться, если все равно не получится поностью защитить ваши диски, которые совместно используются? Эту ситуацию можно проиллюстрировать следующим примером. Если Вы оставите лист бумаги с конфиденциальной информацией на столе и кто-то в офисе ее прочитает, он может сказать, что не знал, что это за бумага и посмотрел ее просто из любопытства. Но возникает совсем другая ситуация, если этот лист лежал в картотечном блоке или в столе. Цель установления, хотя бы элементарной сетевой защиты, это гарантия того, что никто ``случайно'' не поставит под угрозу Ваши данные.
Первичный сервер DNS
Когда пользователь в сети предпринимает попытку подсоединиться к машине из нового домена example.com, то между различными серверами в сети Интернет происходит обмен запросами, результатом которого является IP адрес требуемой машины, возвращаемый программе пользователя, предпринявшего эту попытку. Подробности этого обмена запросами выходят за рамки этого документа. Упрощенно это выглядит так: при обращении, к примеру, к машине fred.example.com, посылается запрос к централизованной базе данных для определения IP адреса машины, отвечающей за поддержку DNS для домена example.com (первичный DNS сервер). Затем машине по этому адресу посылается запрос на IP адрес машины fred.example.com.
Для каждого домена должны существовать первичный и вторичный сервера DNS. Имена и IP адреса обоих серверов хранятся централизованной базе данных, записи которой контролируются службами регистрации доменов, такими как Network Solutions.
Если вы решили, что первичный сервер DNS будет обслуживаться вашим провайдером, то, скорее всего, вторичный сервер будет обслуживаться им же. Всякий раз, когда вам нужно будет добавить видимую извне машину, вам придется связываться с вашим провайдером и просить внести ее IP адрес в базу данных.
Если вы решили, что будете сами поддерживать первичный сервер DNS, то вам понадобится вторая машина под вторичный DNS сервер. С технической точки зрения, лучший вариант - использовать машину, имеющую дополнительное (второе) соединие с Интернет, однако на практике чаще всего для вторичного сервера используется одна из машин провайдера. При этом, при добавлении в сеть видимой извне машины нужно подправить свою базу данных, а затем подождать, пока изменения будут переданы вторичному серверу (обычно пару - тройку часов). В этом случае вы можете добавить, к примеру, barney.example.com без обращения к вашему провайдеру.
Неплохая идея - установить вторичный DNS сервер на машину, удаленную географически. В случае обрыва кабеля вашего провайдера, один из серверов останется подсоединенным к сети и сможет обслуживать запросы. Некоторые службы регистрации доменов предоставляют подобные услуги. Кроме того, существует бесплатная служба - Granite Canyon, предоставляющая эту услугу всем желающим.
Независимо от того решите вы сами поддерживать первичный DNS сервер или нет, прочитайте раздел Разд. Настройка разрешения имен, так как вам, в любом случае, понадобится система разрешения имен для вашей частной сети, даже если вы поручаете сопровождение первичного DNS сервера вашему провайдеру.
Планирование топологии вашей сети
Для различных форматов сети могут быть приведены свои аргументы за и против. Однако запросы большинства организаций могут быть удовлетворены установкой рабочих станций и серверов для внутреннего пользования в частную замаскированную подсеть, а серверов общего пользования - на корректные внешние IP адреса. Машины на корректных внешних IP адресах в этом документе будут называться "незащищенными хостами". Все вышесказанное приводит к следующей топологии (пример):
+--------------+ | | +---------------+ | Шлюз |---------------| Сервер FTP | | ISP | | +---------------+ | | | +--------------+ | +---------------+ |------| Сервер WWW #1 | | +---------------+ | | +---------------+ |------| Сервер WWW #2 | | +---------------+ | ~ ~ | | +---------------+ |------| Шлюз в | | частную | | сеть | +---------------+ | | | | +--------------------+ | +----------------------+ | Рабочая станция #1 |-----------|-------------| Внутренний сервер #1 | +--------------------+ | +----------------------+ | . -----------|------------- . . | . . -----------|------------- . | +--------------------+ | +----------------------+ | Рабочая станция #N |-----------|-------------| Внутренний сервер #N | +--------------------+ +----------------------+ |
В этом примере шлюз ISP (Internet Service Provider (поставщик услуг Интернет)), сервер FTP, сервера WWW и "шлюз в частную сеть" имеют видимые снаружи IP адреса, а рабочие станции и внутренние сервера - IP адреса, выделенные в соответствие с RFC 1918
(зарезервированные для использования во внутренних сетях). IP адреса в вашей внутренней подсети (все, что ниже шлюза в частную сеть) должны быть уникальными не только для вашей подсети, но и для подобных подсетей ваших партнеров, с которыми вы, возможно, планируете в будущем организовать виртуальную частную сеть (virtual private network). Этому правилу стоит следовать во избежание путаницы и необходимости перенастройки сети в будущем. В соответствие с RFC, вы можете выбрать любую подсеть класса C из диапазона 192.168.0.* - 192.168.255.*, или любую подсеть класса B из 172.16.*.* - 172.31.*.*, или подсеть класса A 10.*.*.*. В этом документе я буду считать, что ваша частная сеть (если вы решили создать таковую) основана на подсети класса C 192.168.1.*, шлюз в частную сеть имеет IP адрес 10.1.1.9 - один из адресов, выделенных вам вашим провайдером (примечание: этот адрес не является корректным внешним IP адресом и используется мной лишь в качестве примера). Кроме того, я буду считать, что имеется машина betty.example.com с адресом 10.1.1.10, обслуживающая WWW и FTP запросы.
Подсчитайте количество внешних IP адресов, необходимых для ваших машин. Оно должно быть равно количеству машин вне частной сети плюс один IP адрес для шлюза в частную сеть. В это число не входят IP адреса, используемые маршрутизаторами, широковещательные IP адреса и т. п. Попросите своего провайдера выделить вам диапазон IP адресов, достаточно большой для включения в него этого числа машин. Например, в сети моего офиса из 8 IP адресов, выделенных провайдером, три не могли быть использованы моими компьютерами, что оставляло четыре IP адреса для работы вне частной сети плюс один IP адрес для шлюза.
Хотя эта топология сети подходит не для всех, она является разумной отправной точкой для многих конфигураций, не требующих решения специфических задач. Преимущества этой конфигурации:
Масштабируемость. Если вам внезапно понадобится увеличить вдвое количество рабочих станций, то не придется беспокоиться о получении нового диапазона IP адресов от провайдера и о перенастройке сетевых интерфейсов ваших машин.
Управление локальной сетью. Добавление рабочей станции в вашу частную сеть не требует общения с вашим провайдером, в отличие от незащищенных хостов, требующих, в случае предоставления ими специфических услуг, коррекции прямых и обратных записей DNS (domain name service (служба имен доменов)) - например ssh и ftpd могут "жаловаться" на отсутствие корректных DNS записей. Обратная DNS запись - это запись, описывающая имя хоста по его IP адресу.
Централизованная система безопасности. Шлюз частной сети может фильтровать пакеты и вести журнал внешних атак, принудительно обеспечивая общую систему безопасности для всей внутренней (частной) сети. В этом случае нет необходимости настраивать систему безопасности отдельно на каждой рабочей станции и сервере внутренней сети. Кроме того, фильтры могут выставляться не только на входящие, но и на исходящие пакеты, так что неправильно настроенная рабочая станция не сможет неумышленно передавать во внешний мир не предназначенные для этого данные.
Переносимость. Так как IP адреса, используемые во внутренней сети, останутся вашими до тех пор, пока вы этого хотите, то в случае перехода всей сети на новый диапазон IP адресов (например, при смене провайдера) вам не придется менять конфигурацию внутренней сети. Незащищенные хосты, в этом случае, естественно, нуждаются в перенастройке.
Прозрачный доступ в Интернет. Машины из внутренней сети по-прежнему могут использовать FTP, telnet, WWW и другие услуги, с небольшими ограничениями. Пользователи могут даже не задумываться о том, имеется ли у их машин видимый снаружи адрес IP.
Некоторые из потенциальных недостатков этой конфигурации:
Некоторые услуги не будут доступны напрямую для машин из внутренней сети. Например, синхронизация по NTP с внешним хостом; некоторые услуги, предоставляемые серверами, не имеющими поддержки маскирования в ядре; .shosts аутентификация внешними узлами для ведения журнала весьма затруднительны или невозможны. Однако почти всегда можно найти простые обходные пути.
Более высокая стоимость сетевого оборудавания. Для шлюза внутренней сети необходимы две сетевые карты. Также требуется, как минимум, два хаба/коммутатора, один для внутренней сети, другой - для видимой снаружи.
Машины, находящиеся вне внутренней сети, не могут напрямую подсоединяться к машинам, находящимся во внутренней сети. Это можно сделать, зайдя сперва на шлюз внутренней сети, а затем уже с него на машину внутренней сети. Хотя можно пропускать через firewall все пакеты в обе стороны, но не рекомендуется делать этого по соображениям безопасности (см. ниже).
Вы должны взвесить все "за" и "против" и решить, не является ли полностью видимая извне сеть более подходящим решением в вашем случае. Далее в документе я буду предполагать, что ваша сеть построена так, как указано выше. Если вы предпочли полностью видимую снаружи сеть, то некоторые детали будут отличаться. Я попытаюсь указать на эти отличия.
В особом случае, если вам не требуются внешние сервера, то шлюз провайдера может быть подключен непосредственно к внешнему интерфейсу шлюза внутренней сети, а не к хабу.
Подготовка к установке оборудования
После того, как вы выбрали провайдера, а также услуги для вашего нового домена, уточните детали, касающиеся установки оборудования. Возможно, вам понадобится связаться с телефонной компанией и с техническим отделом провайдера. Техникам, как правило, требуется доступ к различным участкам вашего здания, поэтому проинформируйте об этом ответственного за техническое состояние здания.
До приезда технического персонала провайдера уточните параметры сети, в частности IP адрес, маску подсети, широковещательный адрес, адрес шлюза, адрес сервера DNS, а также тип кабеля, требуемый для подключения оборудования провайдера (т.е. прямой или кросс RJ45 кабель и т.п.).
Выделите одну машину для тестирования, расположив ее как можно ближе к планируемому месту подключения. Если есть такая возможность, то установите до приезда технического персонала IP адрес, маску подсети, подготовьте кабель. Все это поможет быстро установить и проверить соединение.
Проверка соединения
С помощью тестовой машины убедитесь в наличии нормального отправления пакетов (ping) до сайтов вне сети вашего провайдера. При отсутствии оного, попробуйте воспользоваться traceroute для выяснения места проблемы. Если при этом не выводится ни одного перехода (hop), то проблема в настройке тестовой машины (маршрут по умолчанию, адрес интерфейса, сетевые драйвера, DNS и т.п.). Если показывается один переход, то это может означать, что неправильно настроен ваш шлюз. Если перед сбоем выводятся несколько переходов, то проблема или у провайдера, или где-то еще - вряд ли вы сможете что-то сделать прямо сейчас.
Регистрация имени домена
Для того, чтобы люди со всего мира могли найти сервера (www, ftp или почтовые) вашего домена, вам необходимо зарегистрировать его для внесения в соответствующую базу данных доменов верхнего уровня.
Будьте благоразумны при выборе имени домена. Некоторые слова и выражения могут быть запрещены но основании стандартов сообщества, некоторые - неприятны посетителям, чей язык или слэнг отличается от вашего. Имена доменов могут содержать только 26 букв латинского алфавита (без ударений), дефис (только не в начале и не в конце имени) и 10 цифр. Регистр не имеет значения, длина не должна превышать 26 символов (рассматривается вопрос о снятии этого ограничения). Постарайтесь не зарегистрировать имя, хоть как-то пересекающееся с торговыми марками, существующих компаний - суды не очень-то жалуют киберскваттеров. Кое-какую информацию об обстоятельствах, при которых ваш неосторожно выбранный домен может быть отобран у вас, можно найти по адресу: Uniform Domain Name Dispute Resolution Policy.
Многие компании регистрируют свои имена под доменами верхнего уровня ".com", ".net", and ".org". Текущий список - list of accredited registrars.
Чтобы зарегистрировать имя под доменом верхнего уровня страны, например ".ca, ".de", ".uk", ".ru" и т.д. обратитесь в соответствующую организацию, занимающуюся этим. Список можно найти по адресу: Country Code Top-Level Domains database.
Обычно вам необходимо предоставить регистрирующей организации информацию о том, как с вами связаться, IP адреса первичного и вторичного серверов DNS, согласовать схему подтверждения запроса на изменение информации о домене (вы же не хотите, чтобы любой желающий мог поменять ее), а также внести ежегодную плату. Если вас не устраивает схема подтверждения, используемая регистрирующей организацией, дайте ей об этом знать.
Сервер FTP
В общем случае, все что относится к серверу WWW, можно отнести и к серверу FTP, учитывая то, что содержимое FTP сервера неактивно и нет CGI скриптов. Большинство последних взломов ftpd базировались на переполнении буфера, в результате создания длинных имен каталогов на серверах с разрешенной для анонимных пользователей закачкой. Так что, если ваш провайдер позволяет производить закачку файлов на свой сервер и небрежно относится к обновлениям системы безопасности FTP демона, лучше установить свой FTP сервер.
Если вы решили установить FTP сервер на свою машину, то обязательно скачайте последнюю версию FTP демона и прочитайте документацию, поставляемую с ней. Еще раз настоятельно рекомендую установить, из соображений безопасности, FTP сервер на отдельную машину, по крайней мере, не на шлюз внутренней сети.
Для wu-ftpd я рекомендовал бы следующие настройки:
--disable-upload - если только вам не требуется закачка файлов анонимными пользователями.
--enable-anononly - способствует использованию вашими локальными пользователями scp для передачи файлов между машинами.
--enable-paranoid - выключить экспериментальные возможности текущей версии.
Сервер WWW
Ваш провайдер может предоставить вам дисковое пространство на одном из своих WWW серверов. Вы можете выбрать этот вариант, или установить WWW сервер на одну из видимых извне машин, имеющую IP адрес из диапазона, выделенного вам провайдером.
Плюсы и минусы использования WWW сервера провайдера:
Дисковое пространство, выделяемое вам провайдером под файлы WWW сервера, ограничено. В него входит не только содержимое страничек, но и данные, собираемые от посетителей сайта.
Скорость между сервером и остальным миром, почти наверняка, будет выше, чем она была бы, если бы сервер стоял на одной из ваших машин. По крайне мере, она не будет ниже.
Могут возникать трудности с установкой своих CGI скриптов и коммерческих пакетов на сервер.
Скорость между сервером и вашей сетью, скорее всего, будет ниже, чем она была бы, если бы сервер стоял в вашей сети.
Плюсы и минусы установки сервера на одной из своих машин:
Вы лучше контролируете сервер. Вы можете более тщательно настроить систему безопасности для ваших приложений.
Закрытые данные, такие как номера кредитных карт, адреса, остаются на контролируемой вами машине.
Ваша стратегия резервного копирования, по сравнению с со стратегией вашего провайдера, вероятно, не столь тщательно продумана.
Заметьте, что я не отношу к плюсам то, что провайдер имеет более мощное оборудование, у него выше пиковая скорость передачи данных и т.д. К тому времени, когда эти параметры начнут иметь значение, будут иметься в виду очень высокие скорости, и, откровенно говоря, лучше будет обратиться за консультацией к квалифицированному специалисту, а не к Linux HOWTO.
Если вы решили установить WWW сервер на своей машине, то смотрите другие документы, такие как WWW-HOWTO. Я настоятельно рекомендую, из соображений безопасности, устанавливать WWW сервер на отдельной машине, а ни в коем случае не на шлюзе сети.
Словарь терминов
Это список некоторых используемых слов и сокращений, имеющих место в данном документе.
CGI скрипт
Это программа, которая выполняется по требованию удаленной стороны, а также она генерирует содержание web-страницы. Если web-страница должна выводить не просто текст и графику, вероятно Вам надо будет написать довольно сложный cgi-скрипт. Примеры его использования можно увидеть на досках объявлений, в реализации обратной связи, электронных магазинах и т.п.
DHCP
Dynamic Host Configuration Protocol. Стандарт, описанный в RFC 1531, для компьютеров сети TCP/IP, позволяет при необходимости получить от центрального сервера информацию: IP-адрес, который они используют, сетевую маску, адрес шлюза и т.п. Чтобы администратору не вводить постоянно эту информацию машина просто запрашивает ее с сервера, прежде чем подсоединиться к серверу.
DNS
Domain Name Service. Стандарт для перевода имен доменов в IP-адрес, или наоборот, система ищет данные в централизованной базе данных.
DSL
Digital Subscriber Line. Высокоскоростное сетевое подключение, использующее существующие телефонные провода.
Dynamic IP Number
IP-адрес, который был назначен автоматически. Нет никакой гарантии, что этот номер останется постоянным. Динамический IP-адрес может изменяться только при отключении от сети и повторном подсоединении, или он может изменяться с определенной периодичностью под DHCP. Некоторые сервисы, такие как telnet и ssh прекращают работу, если IP-адрес изменится во время сеанса связи.
Прямой DNS запрос
DNS запрос, которой конвертирует доменное имя в IP-адрес.
FTP
File Transfer Protocol. Протокол передачи файлов. Стандартный протокол для пересылки файлов между машинами в сети Интернет.
ftpd
Демон, отвечающий за предоставление сервиса FTP на хосте. Он отвечает на запросы, посланные удаленным клиентом.
Провайдер Интернет
См. ISP.
IP
См. IP-адрес.
IP-адрес
``Адрес'' конкретного сетевого устройства. Стандартный протокол адресации, называемый ipv4, состоит из четырех 8-битных значений, которые пишутся как числа в десятичной системы счисления, разделенные точками. Связь между компьютерами в Интернет основывается на передаче пакетов информации на IP-адреса.
ISP
Internet Service Provider. Провайдер Интернет. Компания, которая предоставляет вам выход в Интернет.
Mаскарадинг
Форма фильтрации, при которой в пакетах, передаваемых от машины во внешний мир, перезаписываются заголовки таким образом, чтобы казалось, что эти пакеты пришли с машины, на которой стоит маскарадинг. Затем эта машина передает ответы назад, на первую машину, с которой пакет был реально послан. Результатом использования маскарадинга может быть то, что целая сеть может выходить в Интернет через одну машину, имеющую подключение и всего один IP-адрес.
named
Name server daemon. Демон сервера имен. Этот демон отвечает на запросы DNS, он поставляется как часть пакета BIND.
Протокол сетевого времени
См. NTP.
NTP
Network Time Protocol. Протокол сетевого времени. Стандарт для синхронизации Ваших системных часов с ``реальным временем'', определяемого, как среднее между многими высокоточными часами по всему миру.
OS
Operating system. Операционная система. Linux, Windows, FreeBSD, BeOS, HP-UX, и т.п.
PHB
Pointy-Haired Boss. Детище Scott Adams, известное как Dilbert.
Provider
См. ISP.
Обратный DNS запрос
DNS запрос, который конвертирует IP-адрес в доменное имя.
Маршрутизатор
Специальное аппаратное устройство, которое определяет правила пересылки пакетов, определяемые по их IP-адресам, также оно служит как мост для соединения вашей сети Ethernet с ISP.
ssh
Secure shell. Безопасная оболочка. Замена программ rlogin, telnet, ftp, и т.п. на их криптографические варианты. Защищает от spoofing-атак и sniffing-пакетов.
Статический IP-адрес
IP-адрес, который прикреплен к Вам постоянно. Гарантируется, что этот номер будет доступен только вам, и никакая другая машина в Интернет не сможет его использовать. В этом его отличие от динамического адреса.
Это руководство по настройке вашего
Это руководство по настройке вашего собственного домена, состоящего из машин под управлением Linux или Windows, при наличии постоянного соединения, статического IP адреса и поименованного домена. Оно не предназначено для динамически выделяемых IP адресов или сетей, регулярно отсоединяющихся от своего провайдера на долгое время, хотя в разделе Разд. Использование динамических IP адресов есть несколько подсказок и на эту тему.
С увеличением доступности постоянных подключений и статических IP адресов людям и организациям, становится проще настраивать реальные домены сети Интернет изначально. Правильное планирование может избавить от многих проблем в дальнейшем.
Значительная часть этого документа посвещена технике создания системы безопасности в новой сети. Она включает в себя защиту от атак извне и от случайных атак изнутри. Документ не претендует на описание полностью защищенной системы, однако того, что есть, как правило, достаточно для защиты от менее решительных хакеров.
Это документ предназначен в основном для небольших организаций, имеющих сеть компьютеров и, возможно, dialup соединение с Интернет, и планирующих перейти на относительно высокоскоростное постоянное соединение, для повышения скорости передачи данных по сети или создания собственного WWW или FTP сайта. Также этот документ может быть полезен молодым организациям, планирующим сразу начать с высокоскоростной сети под своим собственным доменом.
Я описываю настройку свежезарегистрированного домена example.com. Этот домен зарегестрирован Internet Assigned Numbers Authority для использования в этом документе, и поэтому никогда не будет совпадать с реально используемым доменом.
Большую часть информации, представленной здесь, можно найти и в других местах. Я попытался отфильтровать материал, относящийся к созданию нового домена. Если материала на какую-либо узкоспециализированную тему недостаточно, обратитесь к другим, более исчерпывающим источникам.
Предполагается использование различных OS. В частности, я буду считать, что рабочие станции работают под управлением одной из версий Microsoft Windows, а сервера и шлюз частной сети работают под Linux.
Выбор провайдера
Выясните, какие услуги и в какую цену предоставляются в вашем регионе. Не везде можно подключить DSL, не везде можно установить беспроводную связь из-за особенностей строений, земной поверхности или окружающей среды. Будьте готовы предоставить свой адрес, так как скорость DSL сильно зависит от расстояния, оговорите скорость соединения со своим провайдером, узнайте какое для этого требуется оборудование. Неплохо бы определить количество необходимых вам IP адресов (помните о том, что, как правило, не все IP адреса из выделенного вам диапазона можно будет назначить вашим компьютерам). Спросите провайдера о скорости соединения между ним и остальным миром, так как оговориваемая скорость - это скорость между ним и вами. Если скорость соединения провайдера с остальным миром недостаточна, то вы будете страдать из-за появления "узкого места" в сети провайдера.
После того, как вы определились со списком кандидатов, поспрашивайте знакомых, кого они порекомендуют. Спросите, какую скорость они получают при работе с некэшированными сайтами. Если вам требуется быстрое соединение между вашим домом и новым доменом для работы или удаленного администрирования, то обязательно запустите traceroute из вашего дома до хоста провайдера. Это позволит вам узнать, сколько хостов между вами и новым доменом, а также ожидаемое время задержки. Если задержка превышает 100 - 200 миллисекунд, то вам довольно сложно будет работать из дома длительное время. traceroute должен быть запущен во время, планируемое для работы.
Выбор услуг, которые будут поддерживаться вашим доменом
Большинство провайдеров предоставляют ряд услуг по поддержке доменов своих клиентов. В основном это связано с тем, что поддерживать домен под рядом популярных операционных систем для персональных компьютеров весьма проблематично. Реализовать поддержку этих услуг под Linux намного проще, причем на довольно дешевом оборудовании, поэтому решите, что вы будете поддерживать, сами. Вот список некоторых из этих услуг:
Первичный DNS сервер для вашего домена. См. раздел Разд. Первичный сервер DNS.
Электронная почта. См раздел Разд. Электронная почта.
WWW сервер. См. раздел Разд. Сервер WWW.
FTP сервер. См. раздел Разд. Сервер FTP.
Фильтрование пакетов. См. раздел Разд. Фильтрование пакетов.
Для каждой из перечиселенных услуг вам придется выбирать между удобством и возможностью управления. Если поддержкой одной или нескольких услуг занимается провайдер, то, как правило, вы можете быть уверены, что этим занимаются специалисты в этой области, а значит незачем беспокоиться и забивать себе голову лишними знаниями. С другой стороны, вы теряете контроль за этими услугами - для внесения любых изменений придется связываться с технической службой провайдера, что не всегда удобно, кроме того, задержка по времени может быть больше, чем вам хотелось бы. Нельзя также отбрасывать фактор безопасности - провайдеры, как правило, более заманчивая цель для хакеров, нежели ваш собственный сайт, так как сервера провайдеров содержат почту и/или странички десятков компаний-клиентов. Соответственно, хакер, взломавший такой сервер, получает в результате гораздо больше, чем при взломе одного из ваших собственных серверов, на котором лежат данные всего лишь одной компании.