Глава 10. Сеть
Когда речь идет о сети, то часто выбор падает на операционные системы на базе Linux. Это связано не только с тем, что сеть тесно интегрирована в самой ОС и существует большой набор бесплатных инструментов и приложений. Также это связано с надежностью системы при высоких нагрузках, что было достигнуто после многих лет ее отладки и тестирования в проекте Open Source.
Книжные полки полны информацией, написанной о Linux и сетях, мы же постараемся в этой главе дать краткий обзор. После ее завершения, вы будете знать больше о
- Поддерживаемых сетевых протоколах
- Конфигурационных файлах сети
- Командах настройки и исследования сети
- Демонах и клиентских программах, запускающих различные сетевые приложения
- Разделении доступа к файлам и печати
- Удаленном выполнении команд и приложений
- Основах сетевого взаимодействия
- Безопасном выполнении удаленных приложений
- Брандмауэрах и обнаружении вторжений
Модель OSI
Протокол - это, проще говоря, набор правил для общения.Для того, чтобы передать данные по сети, например, электронную почту с вашего компьютера на какой-нибудь компьютер в другом конце мира, должны вместе работать множество различных аппаратных и программных средств.
Все эти элементы железа и различного ПО "говорят на разных языках". Представьте, вашу программу для E-mail: она в состоянии обмениваться информацией с операционной системой компьютера через специальный протокол, но не в состоянии "говорить" с компьютерной техникой. Нам нужны специальные программы в операционной системе, которые выполняли бы эту функцию. В свою очередь, компьютер должен быть в состоянии соединяться с телефонной линией или другой аппаратурой для подключения к Интернет. А за кулисами сетевое оборудование должно быть в состоянии соединяться, чтобы передать вашу почту от одного устройства к другому, вплоть до конечного компьютера.
Все эти разные виды протоколов связи подразделяются на 7 уровней, которые известны как модель Open Systems Interconnection Reference (модель взаимодействия открытых систем), или, сокращенно, модель OSI. Для облегчения понимания, эта модель сводится к четырёхуровневому описанию протоколов, как показано в таблице ниже:
Таблица. Упрощенная модель OSI
Название уровня | Протоколы уровня |
Уровень приложений | HTTP, DNS, SMTP, POP, ... |
Транспортный | TCP, UDP |
Сетевой | IP, IPv6 |
Уровень доступа к сети | PPP, PPPoE, Ethernet |
В действительности все гораздо сложнее.
Вам рано или поздно придется столкнуться с некоторыми сетевыми терминами; эти разделы дадут вам ряд отправных точек, когда вам захочется узнать о деталях.
Вам рано или поздно придется столкнуться с некоторыми сетевыми терминами; эти разделы дадут вам ряд отправных точек, когда вам захочется узнать о деталях.
Некоторые популярные сетевые протоколы
Linux поддерживает много разных сетевых протоколов. Перечислим только наиболее важные:TCP/IP
Transport Control Protocol и Internet Protocol являются наиболее популярными способами соединения в Интернете. Множество приложений, таких как браузер и программа для электронной почты, построены в первую очередь на этом наборе протоколов.Если уж совсем просто говорить, то IP обеспечивает отправку пакетов информации от одной машины к другой, в то время как TCP гарантирует правильную последовательность пакетов, так что пакеты различных приложений не путаются, и будут доставлены получателю в правильном порядке.
Хорошей отправной точкой для получения дополнительной информации о TCP и IP являются следующие документы:
- man 7 ip: описание реализации протокола IPv4 на Linux (версия 4 в настоящее время наиболее широко распространенный вариант протокола IP).
- man 7 tcp: реализация протокола TCP.
- RFC793, RFC1122, RFC2001 для TCP, и RFC791, RFC1122 и RFC1112 для IP.
TCP/IPv6
Никто не ожидал, что Интернет разрастется так быстро. В IP нашлись некоторые недостатки, связанные с большим количеством компьютеров в сети, наиболее серьезный из которых - наличие уникальных адресов, назначаемых каждому компьютеру в сети. Таким образом, IP версии 6 был способен удовлетворить потребности современного Интернет.К сожалению, не все приложения и службы пока поддерживают IPv6. В настоящее время миграция осуществляется во многих средах, которые могут получить выгоду от обновления до IPv6. Для некоторых приложений, старый протокол все еще используется, для приложений, которые были переработаны, новая версия уже действует. Так проверка конфигурации сети иногда может быть немного запутанной, так как могут быть приняты всевозможные меры, чтобы скрыть один протокол от другого, чтобы не перепутать два соединения.
Более подробную информацию можно найти в следующих документах:
- man 7 ipv6: реализация протокола Linux IPv6.
- RFC1883 описании протокола Ipv6.
PPP, SLIP, PLIP, PPPOE
Ядро Linux имеет встроенную поддержку PPP (Point-to-Point-Protocol), SLIP (Serial Line IP), PLIP (Parallel Line IP) и PPPP Over EThernet. PPP - наиболее популярный способ для индивидуальных пользователей получать доступ к их ISP (Internet Service Provider), хотя в густонаселенных районах часто используется PPPOE, протокол, используемый для ADSL (Asymmetric Digital Subscriber Line) соединений.Большинство дистрибутивов Linux предоставляют легкий в использовании инструмент для настройки Интернет-соединения. Единственное, что вам понадобится - это имя пользователя и пароль для подключения к вашему провайдеру (ISP), и номер телефона в случае PPP. Эти данные вводятся в окно для настройки, которое, вероятно, также позволит запускать и разрывать соединение с вашим провайдером.
ISDN
Ядро Linux имеет встроенные возможности ISDN. Isdn4linux управляет картами ISDN PC и может эмулировать модем с набором команд Hayes ("AT" команды). Возможности от просто использования терминальной программы до полного подключения к Интернет.Посмотрите системную документацию.
AppleTalk
Appletalk - это название межсетевого стека Apple. Он делает возможным сетевую модель peer-to-peer, которая обеспечивает основные функциональные возможности, такие как к разделение файлов и принтеров. Каждая машина может одновременно выступать в качестве клиента и сервера, а необходимые программы и аппаратное обеспечение включены в каждый компьютер Apple.Linux полностью поддерживает сети AppleTalk. Netatalk является реализация на уровне ядра набора протоколов AppleTalk, первоначально это было только для BSD-подобных систем. Включает поддержку маршрутизации AppleTalk, обслуживание файловых систем UNIX и AFS, использующих AppleShare, а также обслуживание принтеров UNIX и доступ к принтерам AppleTalk.
SMB/NMB
Для совместимости с MS Windows пакет Samba, включающий поддержку протоколов NMB и SMB, может быть установлен на любой UNIX-подобной системе. Протокол Server Message Block (также называемый Session Message Block, NetBIOS или протокол LanManager) используется на MS Windows 3.11, NT, 95/98, 2K и XP для доступа к дискам и принтерам.Основными функциями пакета Samba являются: разделение дисков Linux с машинами Windows, доступ к SMB частям из машин Linux, совместное использование принтеров Linux с машин Windows и совместное использование принтеров Windows с машин Linux.
Большинство дистрибутивов Linux поставляются с пакетом samba, который делает большую часть работы при установке сервера и запускает smbd, сервер Samba, и nmbd, netbios имени сервера, загрузочное время по умолчанию. Samba можно настроить графически, с помощью веб-интерфейса или через командную строку, а также текстовые конфигурационные файлы. Демоны заставляют машину Linux представляться как хост Windows в сетевом окружении Windows; разделяемые ресурсы компьютера с Linux будут неотличимы от любого другого компьютера в среде MS Windows.
Более подробную информацию можно найти в следующих местах:
- man smb.conf: описывает формат основного конфигурационного файла Samba.
- Samba Project Documentation (или проверьте локальные зеркала samba.org) содержит подробное руководство об установке и тестировании, в котором также объясняется, как настроить сервер Samba в качестве основного контроллера домена. Все man-страницы также доступны здесь.
Смешанные протоколы
Linux также имеет поддержку для Amateur Radio, сетей WAN (X25, Frame Relay, ATM), InfraRed и других беспроводных соединений, но, поскольку эти протоколы обычно требуют специального оборудования, мы не будем обсуждать их в данном документе.Конфигурация сетевых интерфейсов
Все большие дружелюбные дистрибутивы Linux поставляются с различными графическими инструментами, которые позволяют легко подключить компьютер к локальной сети, поставщику услуг Интернета или настроить беспроводное соединение. Эти инструменты могут быть запущены из командной строки или из меню:- Настроить Ubuntu можно так: Система → Администрирование → Сеть.
- RedHat Linux поставляется с redhat-config-network, который имеет как графический интерфейс, так и работает в текстовом режиме.
- YAST Suse или YaST2 представляет собой инструмент настройки "все-в-одном".
- Mandrake/Mandriva поставляется с мастером настройки сети и Интернет, который обычно запускается из Центра управления Mandriva.
- В системах Gnome - gnome-network-preferences.
- В системах KDE - knetworkconf.
Информация, которую вам необходимо предоставить:
- Для подключения к локальной сети, например, с домашних компьютеров или на работе: имена хоста, домена и IP-адрес. Если вы хотите установить собственную сеть, лучше всего сначала почитать что-нибудь еще. На работе эту информацию компьютер может получать автоматически при загрузке. Если вы сомневаетесь, то лучше ничего не указывать, чем прописывать неизвестно что.
- Для подключения к Интернет: имя пользователя и пароль для вашего провайдера, номер телефона при использовании модема. Ваш провайдер обычно автоматически назначает вам IP-адрес и все остальное, что необходимо для работы ваших интернет-приложений.
Сетевые конфигурационные файлы
Графические программы-помощники редактируют определенный набор конфигурационных файлов сети, используя несколько основных команд. Точные имена конфигурационных файлов и их расположение в файловой системе в значительной степени зависит от вашего дистрибутива и его версии. Тем не менее, несколько сетевых конфигурационных файлов можно найти на всех UNIX-системах:/etc/hosts
Файл /etc/hosts всегда содержит локальный IP-адрес 127.0.0.1, который используется для связи между процессами. Никогда не удаляйте эту строку! Иногда содержит адреса дополнительных хостов, с которыми можно соединиться без использования внешней службы имен, такой как DNS (Domain Name Server).Пример файла хостов для небольшой домашней сети:
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.52.10 tux.mylan.com tux 192.168.52.11 winxp.mylan.com winxpДополнительная информация содержится в man hosts.
/etc/resolv.conf
В файле /etc/resolv.conf настраивается доступ к DNS-серверу. Этот файл содержит ваши доменные имена и имена сервера(ов) для соединения:search mylan.com nameserver 193.134.20.4Дополнительную информацию можно почерпнуть на man-страницах resolv.conf.
/etc/nsswitch.conf
Файл /etc/nsswitch.conf определяет порядок, в котором происходит связь с различными службами имен. Для использования Интернет, важно, чтобы dns появилась в строке "hosts":[bob@tux ~] grep hosts /etc/nsswitch.conf hosts: files dnsЭто указывает компьютеру на поиск имен хостов и IP-адресов сначала в файле /etc/hosts, и связь с сервером DNS, если данный хоста нет в локальном файле hosts. Другими возможными именами сервисов для соединения являются LDAP, NIS и NIS +.
Подробнее в man nsswitch.conf.
Сетевые конфигурационные команды
Команда ip
Специфичные для дистрибутива скрипты и графические инструменты — это надстройки к ip (или ifconfig и route на старых системах) для просмотра и настройки сетевой конфигурации ядра.Команда ip используется для присвоения IP-адресов интерфейсам, установки маршрутов к Интернет и другим сетям, отображения конфигураций TCP/IP и так далее.
Следующие команды показывают IP-адрес и информацию о маршрутизации:
benny@home benny> ip addr show 1: lo: mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 brd 127.255.255.255 scope host lo inet6 ::1/128 scope host 2: eth0: mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:50:bf:7e:54:9a brd ff:ff:ff:ff:ff:ff inet 192.168.42.15/24 brd 192.168.42.255 scope global eth0 inet6 fe80::250:bfff:fe7e:549a/10 scope link benny@home benny> ip route show 192.168.42.0/24 dev eth0 scope link 127.0.0.0/8 dev lo scope link default via 192.168.42.1 dev eth0На что стоит обратить внимание:
- Два сетевых интерфейса даже на системе, которая имеет только одну карту с сетевым интерфейсом: "lo" является локальным узлом, используемым для внутренней сетевой коммуникации; "eth0" является общим названием для реального интерфейса. Никогда не изменяйте конфигурацию локального узла, иначе ваша машина перестанет нормально работать! Беспроводные интерфейсы, как правило, определяется как "wlan0"; модемные интерфейсы как "ppp0", хотя могут быть и другие имена.
- IP-адреса, отмеченные как "inet": у локального узла всегда 127.0.0.1, физический интерфейс может иметь любую другую комбинацию.
- Аппаратный адрес вашего интерфейса, который может потребоваться как часть процедуры проверки подлинности для подключения к сети, отмечен как "ether". У локального узла имеется 6 пар из нулей, физический узел состоит из 6 пар шестнадцатеричных символов, из которых первые 3 пары зависят от конкретного производителя.
Команда ifconfig
Хотя ip является самым новым способом настроить систему Linux, по-прежнему популярным является ifconfig. Используйте его без опции для вывода информации о сетевом интерфейсе:els@asus:~$ /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:50:70:31:2C:14 inet addr:60.138.67.31 Bcast:66.255.255.255 Mask:255.255.255.192 inet6 addr: fe80::250:70ff:fe31:2c14/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31977764 errors:0 dropped:0 overruns:0 frame:0 TX packets:51896866 errors:0 dropped:0 overruns:0 carrier:0 collisions:802207 txqueuelen:1000 RX bytes:2806974916 (2.6 GiB) TX bytes:2874632613 (2.6 GiB) Interrupt:11 Base address:0xec00 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:765762 errors:0 dropped:0 overruns:0 frame:0 TX packets:765762 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:624214573 (595.2 MiB) TX bytes:624214573 (595.2 MiB)Также отметим наиболее важные аспекты конфигурации интерфейса:
- IP-адрес отмечен как "inet addr".
- Аппаратный адрес тегом "HWaddr".
Команды PCMCIA
На вашем ноутбуке, который вы обычно подключаете к корпоративной сети с помощью Ethernet-соединения, но которое вы сейчас настраиваете для dial-in дома или в отеле, возможно необходимо активировать карту PCMCIA. Это делается с помощью утилита управления cardctl, или pccardctl на новых дистрибутивах.Пример использования:
cardctl insert
Теперь карта может быть настроена с помощью графического или интерфейса командной строки. До извлечения карты используйте следующую команду:
cardctl eject
Тем не менее, хороший дистрибутив должн обеспечить поддержку PCMCIA в инструментах конфигурации сети, предотвращая пользователей от необходимости выполнять команды PCMCIA вручную.
Дополнительная информация
Дальнейшее обсуждение настройки сети выходит за рамки этого документа. Вашим основным источником дополнительной информации будут man-страницы для служб, которые вы хотите установить. Дополнительное чтение:- Модем-HOWTO (tldp.org/HOWTO/Modem-HOWTO.html). Поможет с выбором, соединением, настройкой, поиском неисправностей и пониманием аналоговых модемов для ПК.
- LDP HOWTO Index, раздел 4.4 (tldp.org/HOWTO/HOWTO-INDEX/networking.html). Список HOWTO по категориям об обычных сетях, протоколах, dial-up, DNS, VPNs, мостах, маршрутизации, безопасности и многом другом.
- На большинстве систем есть версия файла ip-cref (найти его можно с помощью команды locate); формат PS этого файла можно просматривается, например, с помощью gv.
Названия сетевых интерфейсов
На Linux-машине, название устройства lo или локальный узел связано с внутренним адресом 127.0.0.1. Компьютер будет иметь сложности, заставляя ваши приложения работать, если это устройство не будет существовать; так всегда даже на тех компьютерах, которые не объединены в сеть.Первое ethernet-устройство, eth0, в случае стандартной сетевой картой, указывает на ваш локальный адрес IP-сети. Обычные клиентские машины имеют только одну сетевую карту. Маршрутизаторы (роуторы), связующие сети между собой, имеют по одному сетевому устройству на каждую сеть, которую они обслуживают.
Если вы используете модем для подключения к Интернет, ваше сетевое устройство, скорее всего, будет называться ppp0.
Существует намного больше имен, например, для интерфейса Virtual Private Network (VPN), и множество интерфейсов могут быть активны одновременно, так что вывод команд ifconfig или ip может быть довольно длинным, если не использовать опции. Даже могут быть активны несколько интерфейсов одного и того же типа. В этом случае, они нумеруются последовательно: первый получит номер 0, второй получит суффикс 1, третий 2, и так далее. Так обстоит дело на многих серверных приложениях, на машинах с отказоустойчивой конфигурацией, роутерах, брандмауэрах и многом другом.
Проверка конфигурации хоста с помощью netstat
Кроме команды ip для отображения конфигурации сети, есть команд netstat, которая имеет много опций и, как правило, полезна в любой системе UNIX.Маршрутизация информация может быть отображена с помощью опции -nr команды netstat:
bob:~> netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.42.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 40 0 0 lo 0.0.0.0 192.168.42.1 0.0.0.0 UG 40 0 0 eth0Это обычный клиентский компьютер в сети IP. У него только одно сетевое устройство, eth0. Интерфейс lo является локальным узлом.
Современный способ
Новый способ получить эту же информацию от вашей системы – использовать команду ip:
ip route show
Когда эта машина пытается соединиться с хостом, находящимся в другой
сети, а не ее собственной, обозначаемый линией, начиная с 0.0.0.0, она
будет посылать запросы на подключение к маршрутизатору с IP-адресом
192.168.42.1, и будет использовать основной интерфейс, eth0, чтобы сделать это.Новый способ получить эту же информацию от вашей системы – использовать команду ip:
ip route show
Хосты, которые находятся в той же сети, имеют линию, начиная с 192.168.42.0, также будут соединяться через основной сетевой интерфейс, но нет необходимости в маршрутизаторе, данные просто выкладываются в сеть.
Компьютеры могут иметь гораздо более сложные таблицы маршрутизации, с большим количеством различных пар "адресат-шлюз" для подключения к различным сетям. Если у вас есть возможность подключиться к серверу приложений, например, на работе, то ради интереса проверьте информацию о маршрутизации.
Другие хосты
Внушительное количество инструментов ориентировано на управление сетью и удаленное администрирование машин Linux. Ваше местное зеркало программного обеспечения для Linux предложит множество из них. Это увело бы нас слишком далеко, если обсуждать их в этом документе, поэтому, пожалуйста, обратитесь к документации конкретных программ.В этом разделе мы обсудим только некоторые общие UNIX/Linux текстовые инструменты.
Команда host
Для отображения информации о хостах или доменах используется команда host:[emmy@pc10 emmy]$ host www.eunet.be www.eunet.be. has address 193.74.208.177 [emmy@pc10 emmy]$ host -t any eunet.be eunet.be. SOA dns.eunet.be. hostmaster.Belgium.EU.net. 2002021300 28800 7200 604800 86400 eunet.be. mail is handled by 50 pophost.eunet.be. eunet.be. name server ns.EU.net. eunet.be. name server dns.eunet.be.Аналогичная информация может быть отображена с помощью команды dig, которая предоставляет дополнительную информацию о том, каким образом записи хранятся на сервере имен.
Команда ping
Чтобы проверить, доступен ли хост, используйте ping. Если ваша система настроена отправлять более одного пакета, ping можно прервать комбинацией клавиш Ctrl + C:[emmy@pc10 emmy]$ ping a.host.be PING a.host.be (1.2.8.3) from 80.20.84.26: 56(84) bytes of data. 64 bytes from a.host.be(1.2.8.3):icmp_seq=0 ttl=244 time=99.977msec --- a.host.be ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/mdev = 99.977/99.977/99.977/0.000 ms
Команда traceroute
Чтобы проверить маршрут, по которому пакеты следуют к сетевому узлу, используйте команду traceroute:[emmy@pc10 emmy]$ /usr/sbin/traceroute www.eunet.be traceroute to www.eunet.be(193.74.208.177),30 hops max,38b packets 1 blob (10.0.0.1) 0.297ms 0.257ms 0.174ms 2 adsl-65.myprovider.be (217.136.111.1) 12.120ms 13.058ms 13.009ms 3 194.78.255.177 (194.78.255.177) 13.845ms 14.308ms 12.756ms 4 gigabitethernet2-2.intl2.gam.brussels.skynet.be (195.238.2.226) 13.123ms 13.164ms 12.527ms 5 pecbru2.car.belbone.be (194.78.255.118) 16.336ms 13.889ms 13.028ms 6 ser-2-1-110-ias-be-vil-ar01.kpnbelgium.be (194.119.224.9) 14.602ms 15.546ms 15.959ms 7 unknown-195-207-939.eunet.be (195.207.93.49) 16.514ms 17.661ms 18.889ms 8 S0-1-0.Leuven.Belgium.EU.net (195.207.129.1) 22.714ms 19.193ms 18.432ms 9 dukat.Belgium.EU.net (193.74.208.178) 22.758ms * 25.263msНа некоторых системах traceroute может быть переименована в tracepath.
Команда whois
Специфичная информация о доменных именах может быть получена с помощью команды whois, которая разъясняется множеством whois серверов, как показано ниже:[emmy@pc10 emmy]$ whois cnn.com [whois.crsnic.net] Whois Server Version 1.3 $<--snap server message--> Domain Name: CNN.COM Registrar: NETWORK SOLUTIONS, INC. Whois Server: whois.networksolutions.com Referral URL: networksolutions.com Name Server: TWDNS-01.NS.AOL.COM Name Server: TWDNS-02.NS.AOL.COM Name Server: TWDNS-03.NS.AOL.COM Name Server: TWDNS-04.NS.AOL.COM Updated Date: 12-mar-2002 >>> Last update of whois database: Fri, 5 Apr 2002 05:04:55 EST <<< The Registry database contains ONLY .COM, .NET, .ORG, .EDU domains and Registrars. [whois.networksolutions.com] $<--snap server message--> Registrant: Turner Broadcasting (CNN-DOM) 1 CNN Center Atlanta, GA 30303 Domain Name: CNN.COM Administrative Contact: $<--snap contactinfo--> Technical Contact: $<--snap contactinfo--> Billing Contact: $<--snap contactinfo--> Record last updated on 12-Mar-2002. Record expires on 23-Sep-2009. Record created on 22-Sep-1993. Database last updated on 4-Apr-2002 20:10:00 EST. Domain servers in listed order: TWDNS-01.NS.AOL.COM 149.174.213.151 TWDNS-02.NS.AOL.COM 152.163.239.216 TWDNS-03.NS.AOL.COM 205.188.146.88 TWDNS-04.NS.AOL.COM 64.12.147.120Для других доменных имен, отличных от .com, .net, .org и .edu, возможно, потребуется указать сервер whois, например, как для этого домена .be:
whois domain.be@whois.dns.be