Chapter 9. Работа в сети

Где можно найти информацию о ``бездисковой загрузке''?
Может ли машина с FreeBSD использоваться как маршрутизатор?
Можно ли подключить машину с Win95 к Internet с помощью FreeBSD?
Почему не проходит компиляция последней версии BIND от ISC?
Поддерживает ли FreeBSD протоколы SLIP и PPP?
Поддерживает ли FreeBSD NAT или Masquerading?
Не могу создать устройство /dev/ed0!
Как настроить алиас на Ethernet?
Как заставить адаптер 3C503 использовать другой тип сетевого разъёма?
У меня проблемы при работе NFS во FreeBSD.
Почему я не могу смонтировать диск Linux по NFS?
Почему я не могу смонтировать диск Sun по NFS?
Проблемы при связи по PPP с машинами NeXTStep.
Как включить поддержку multicast IP?
Какие сетевые адаптеры сделаны на наборе микросхем DEC PCI?
Почему я должен использовать FQDN для хостов не в моей сети?
``Permission denied'' для любых действий в сети.
Какую нагрузку вызывает использование IPFW?
Как можно перенаправить запросы с одной машины на другую?
Где можно найти средства управления сетевым трафиком?
Почему появляются сообщения ``/dev/bpf0: device not configured"?

Q: Где можно найти информацию о ``бездисковой загрузке''?

A: ``Бездисковая загрузка'' означает, что машина с FreeBSD загружается по сети и читает необходимые файлы с сервера, а не со своего диска. Подробное описание есть в соответствующей главе Руководства.

Q: Может ли машина с FreeBSD использоваться как маршрутизатор?

A: Стандарты Internet и опыт практической работы не позволяют нам в FreeBSD держать маршрутизацию пакетов включенной по умолчанию. Вы, можете сделать это, изменив значение следующей переменной в файле rc.conf на YES:

════════gateway_enable=YES══════════#═Set═to═YES═if═this═host═will═be═a═gateway
══════

Этот параметр изменит значение системной переменной net.inet.ip.forwarding на 1.

Кроме того, в большинстве случаев вам будет необходимо запустить программу маршрутизации, для того, чтобы объявить о появлении нового маршрутизатора другим системам в вашей сети; FreeBSD поставляется со стандартной для BSD-систем программой маршрутизации routed, в более сложных ситуациях вы можете попробовать GaTeD (доступный по адресу http://www.gated.org с ftp.gated.Merit.EDU), который поддерживает FreeBSD начиная с версии 3_5Alpha7.

Мы обязаны предупредить вас, что даже когда FreeBSD настроена таким образом, она не полностью соответствует стандартам Internet для маршрутизаторов, однако для обычной работы этого хватает.

Q: Можно ли подключить машину с Win95 к Internet с помощью FreeBSD?

A: Как правило, те, кто задает такие вопросы, имеют дома два компьютера, один с FreeBSD, а другой с Win95; идея состоит в использовании FreeBSD для подключения к Internet, а затем осуществлять выход в Internet из Windows95 через FreeBSD. На самом деле это просто особый случай предыдущего вопроса.

Существует полезный документ, описывающий, как настроить FreeBSD в качестве маршрутизатора с выходом по протоколу PPP.

ЗАМЕЧАНИЕ: При этом требуется иметь по крайней мере два фиксированных IP адреса, а может быть, три или больше, в зависимости от того, сколько машин с Windows вы хотите подключить. Как вариант, если у вас нет фиксированных IP адресов, вы можете использовать одну из частных IP подсетей и установить прокси типа SQUID или TIS на машине с FreeBSD.

Посмотрите также раздел о natd.

Q: Почему не проходит компиляция последней версии BIND от ISC?

A: Это - результат конфликта между файлом ``cdefs.h'' в дистрибутиве и тем, что поставляется с FreeBSD. Достаточно удалить файл compat/include/sys/cdefs.h.

Q: Поддерживает ли FreeBSD протоколы SLIP и PPP?

A: Да. Посмотрите страницы справочника по командам slattach, sliplogin, pppd и ppp. Pppd и ppp могут обслуживать как входящие, так и исходящие соединения. Sliplogin имеет дело исключительно со входящими соединениям, а slattach - только с исходящими.

Эти программы описаны в следующих разделах руководства:

Если вы имеете доступ в Internet через командную строку оболочки, вам может подойти slirp. С его помощью можно получить (ограниченный) доступ к таким службам, как ftp и http прямо с вашей машины.

Q: Поддерживает ли FreeBSD NAT или Masquerading?

A: Если у вас есть локальная сеть (одна или больше машин), но только один IP адрес, предоставленный провайдером, вас может привлечь natd. Natd позволяет подключить всю сеть к Internet, используя единственный IP адрес.

Программа ppp имеет похожую встроенную возможность через параметр -alias. В обоих случаях используется библиотека libalias.

Q: Не могу создать устройство /dev/ed0!

A: В стандарте сетевого взаимодействия Беркли сетевые интерфейсы напрямую доступны только ядру. За дополнительной информацией обратитесь к файлу /etc/rc.network и страницам справочника, описывающим различные сетевые программы, упоминаемые здесь. Если всё это оставит вас в недоумении, почитайте книгу, описывающую администрирование сети в другой BSD-подобной операционной системе; с некоторыми незначитальными исключениями, администрирование сети во FreeBSD в основном совпадает с SunOS 4.0 и Ultrix.

Q: Как настроить алиас на Ethernet?

A: Добавьте ``netmask 0xffffffff'' в командной строке ifconfig так, как это сделано здесь:

════════ifconfig═ed0═alias═204.141.95.2═netmask═0xffffffff
══════

Q: Как заставить адаптер 3C503 использовать другой тип сетевого разъёма?

A: Если вы хотите задействовать другой разъём, то должны указать дополнительный параметр в командной строке ifconfig. Разъёмом по умолчанию является ``link0''. Чтобы задействовать разъём AUI, а не BNC, используйте ``link2''. Эти флаги должны быть указаны с помощью переменных ifconfig_* в /etc/rc.conf.

Q: У меня проблемы при работе NFS во FreeBSD.

A: Некоторые сетевые адаптеры работают (мягко говоря) хуже, чем другие что может иногда вызывать проблемы при работе приложений типа NFS, интенсивно использующих сеть.

Подробности описаны в соответствующей главе Руководства, посвящённой NFS.

Q: Почему я не могу смонтировать диск Linux по NFS?

A: Некоторые версии NFS для Linux поддерживают запросы на монтирование только с привилегированного порта; попробуйте

════════mount═-o═-P═linuxbox:/blah═/mnt
══════

Q: Почему я не могу смонтировать диск Sun по NFS?

A: Рабочие станции Sun под управлением SunOS 4.X поддерживают запросы на монтирование только с привилегированного порта; попробуйте

════════mount═-o═-P═sunbox:/blah═/mnt
══════

Q: Проблемы при связи по PPP с машинами NeXTStep.

A: Попробуйте отменить все расширения TCP в /etc/rc.conf, изменив значение следующей переменной в NO:

════════tcp_extensions=NO
══════

Маршрутизаторы Annex фирмы Xylogic не работают по этой же причине, поэтому при подключении к ним вам нужно проделать то же самое.

Q: Как включить поддержку multicast IP?

A: Работа с многоадресной рассылкой по умолчанию полностью поддерживается версиями FreeBSD 2.0 и выше. Если вы хотите использовать ваш компьютер как маршрутизатор многоадресного трафика, вам нужно перекомпилировать ядро с включенной опцией MROUTING и запустить mrouted. Версии FreeBSD 2.2 и выше будут запускать mrouted во время загрузки, если переменная mrouted_enable в файле /etc/rc.conf установлена в значение "YES".

Приложения MBONE находятся в своей категории портов, mbone. Если вы ищете приложения для организации конференций vic и vat, посмотрите там!

Более подробная информация располагается на сервере Mbone Information Web.

Q: Какие сетевые адаптеры сделаны на наборе микросхем DEC PCI?

A: Вот список, составленный Гленом Фостером (Glen Foster), с некоторыми незначительными добавлениями:

════════Производитель═══Модель
════════----------------------------------------------
════════ASUS════════════PCI-L101-TB
════════Accton══════════ENI1203
════════Cogent══════════EM960PCI
════════Compex══════════ENET32-PCI
════════D-Link══════════DE-530
════════Dayna═══════════DP1203,═DP2100
════════DEC═════════════DE435,═DE450
════════Danpex══════════EN-9400P3
════════JCIS════════════Condor═JC1260
════════Linksys═════════EtherPCI
════════Mylex═══════════LNP101
════════SMC═════════════EtherPower═10/100═(Model═9332)
════════SMC═════════════EtherPower═(Model═8432)
════════TopWare═════════TE-3500P
════════Znyx════════════(2.2.x)═ZX312,═ZX314,═ZX342,═ZX345,═ZX346,═ZX348
════════════════════════(3.x)═ZX345Q,═ZX346Q,═ZX348Q,═ZX412Q,═ZX414,═ZX442,
══════════════════════════════ZX444,═ZX474,═ZX478,═ZX212,═ZX214═(10mbps/hd)
══════

Q: Почему я должен использовать FQDN для хостов не в моей сети?

A: Вы, наверное, обнаружили, что хост, к которому вы обратились, оказался на самом деле в другом домене; например, если вы находитесь в домене foo.bar.edu и хотите обраттиться к хосту ``mumble'' в домене bar.edu, то должны указать его полное доменное имя, ``mumble.bar.edu'', а не просто ``mumble''.

Традиционно, это позволял делать ресолвер BSD BIND. Однако текущая версия bind, поставляемая с FreeBSD, больше не добавляет имена доменов, отличающихся от того, в котором вы находитесь, для не полностью указанных имён хостов. Так что неполно указанный хост mumble будет найден либо как mumble.foo.bar.edu, либо будет искаться в корневом домене.

Это отличается от предыдущего поведения, при котором поиск продолжался в mumble.bar.edu, и mumble.edu. Посмотрите RFC 1535 о причинах объявления такого поведения плохой практикой и даже ошибкой в безопасности.

Как хорошее решение, вы можете поместить строку

════════search═foo.bar.edu═bar.edu
══════

вместо ранее используемой

════════domain═foo.bar.edu
══════

в файл /etc/resolv.conf. Однако удостоверьтесь, что порядок поиска не нарушает ``границ полномочий между местным и внешним администрированием'', как это названо в RFC 1535.

Q: ``Permission denied'' для любых действий в сети.

A: Если вы компилировали ядро с опцией IPFIREWALL, имейте в виду, что политика по умолчанию настроена как в 2.1.7R (она на самом деле изменилась во время разработки 2.1-STABLE), то есть указан запрет на прохождение всех пакетов, которые явно не разрешены.

Если вы случайно неверно отконфигурировали брандмауэр, то для восстановления работоспособность сети дайте такую команду, войдя суперпользователем:

════════ipfw═add═65534═allow═all═from═any═to═any
══════

Также вы можете установить "firewall_type='open'" в файле /etc/rc.conf.

Более подробная информация о конфигурировании брандмауэра в FreeBSD находится в соответствующем разделе Руководства.

Q: Какую нагрузку вызывает использование IPFW?

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

Следующие измерения были сделаны с использованием 2.2.5-STABLE на машине 486-66. IPFW был модифицирован для измерения времени, затрачиваемого внутри процедуры ip_fw_chk и вывода результатов на консоль каждую тысячу пакетов.

Тестировались два набора по 1000 правил в каждом. Первый набор был предназначен для демонстрации наихудшего случая, повторяя условие

════════ipfw═add═deny═tcp═from═any═to═any═55555
══════

Это наихудший случай, так как все условия IPFW будут проверены перед тем, как будет принято окончательное решение о том, что пакет не соответствует условию (мы меняли номер порта). После 999 повторений этого условия находилось правило allow ip from any to any.

Второй набор был предназначен для быстрого прерывания процесса проверки условий:

════════ipfw═add═deny═ip═from═1.2.3.4═to═1.2.3.4
══════

Неподходяший IP-адрес источника для указанного условия быстро вызывает пропуск этого правила. Как и ранее, последним правилом было allow ip from any to any.

Затраты на обработку пакета в первом случае было примерно 2.703 мс/пакет, или примерно 2.7 микросекунд на правило. Таким образом, теоретический предел скорости обработки пакетов с этими правилами равен примерно 370 пакетам в секунду. Предполагая использование ethernet 10Мб/с с размером пакета примерно 1500, мы можем достигнуть только 55.5% использования пропускной способности.

В последнем случае на обработку каждого пакета было затрачено примерно 1.172мс, или около 1.2 микросекунд на правило. Теоретический предел обработки будет равен около 853 пакетам в секунду, что почти соответствует скорости 10Мб/с ethernet.

Большое количество протестированных правил и природа этих правил не даёт представление о реальной жизни - они были использованы только для генерации информации о времени обработки. Вот несколько наблюдений, которые нужно иметь в виду для построении эффективного набора правил:

  • Поместите правило `established' в самое начало списка для обработки основного трафика TCP. Не помещайте перед ним никаких правил allow tcp.

  • Старайтесь помещать часто вызываемые правила как можно раньше, а редко используемые - позже (без изменения политики, конечно). Вы можете выяснить частоту использования правил с помощью вывода статистики командой ipfw -a l.

Q: Как можно перенаправить запросы с одной машины на другую?

A: Вы можете перенаправить запрос на FTP (или другой сервис) с помощью пакаджа 'socket', доступного в дереве портов в категории 'sysutils'. Просто замените командную строку запуска сервиса на вызов socket, типа:

ftp═stream═tcp═nowait═nobody═/usr/local/bin/socket═socket═ftp.foo.com═ftp

где 'ftp.foo.com' и 'ftp' являются соответственно хостом и портом для перенаправления.

Q: Где можно найти средства управления сетевым трафиком?

A: Для FreeBSD существуют два средства управления трафиком: свободно распространяемый ALTQ и коммерческий продукт Bandwidth Manager от Emerging Technologies.

Q: Почему появляются сообщения ``/dev/bpf0: device not configured"?

A: Для работы программ, использующих Berkeley Packet Filter (bpf) необходимо включение в ядро соответствующего драйвера. Перекомпилируйте ядро, добавив в его конфигурационный файл следующую строку:

════════pseudo-device═bpfilter #═Berkeley═Packet═Filter
══════

Затем, после перезапуска системы, вам нужно создать соответствующий файл устройства. Это можно сделать, сменив текущий каталог на /dev и выполнив команду


          # sh MAKEDEV bpf0

          

Обратитесь к разделу руководства, посвящённому созданию файлов устройств за подробной информацией по этому вопросу.



Banner.Novgorod.Ru