![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Мы пока еще не поиграли с сетевыми возможностями Linux. Linux одна из
самых лучших операционных систем в мире по поддерживаемым сетевым функциям.
Большое количество серверов знают об этом и активно используют его. Понимание
вашего сетевого оборудования и всех файлов связанных с сетью очень важно для
полного контроля над тем, с чем сталкивается сервер. Хорошее знание всех
основных сетевых команд жизненно важно. Управление сетью охватывает обширный
ряд тем. В общем, они включают сбор статистических данных о состоянии частей
сети и принятие мер в случае необходимости при возникновении сбоев или других
причин. Наиболее примитивная техника сетевого мониторинга это периодическое
пингование проблемных хостов. Более сложная система контроля за сетью требует
наличия возможности сбора состояний и статистической информации о работе
различных устройств сети. В этой главе мы будем давать ответы на
фундаментальные вопросы относительно сетевых устройств, файлов связанных с
функционированием сети и важнейших сетевых команд. Вы можете использовать Linux как шлюз между двумя сетями. Для этого Вы
должны иметь на сервере две сетевые карты. Ядро Linux не определяет несколько
сетевых карт автоматически при загрузке. Если Вы хотите иметь больше одной
сетевой карты, то надо определить параметры карт в lilo.conf для монолитного
ядра или в conf.modules для модульного ядра. При работе с сетевыми картами Вы
можете столкнуться со следующими проблемами. Проблема 1.
Если драйвер карты был создан как загружаемый модуль (модульное ядро), в
случае PCI-карт, модули определяют карты автоматически. Для ISA-карт надо
определить I/O адрес карты, чтобы модуль знал, где ее смотреть. Эта
информация хранится в /etc/conf.modules. Например, мы рассмотрим две ISA-карты 3c509, у первой I/O=0x300, а у
второй I/O=320. Для ISA-карт редактируем файл conf.modules (vi
/etc/conf.modules) и добавляем в него: Это говорит, что драйвер 3c509 должен быть загружен для eth0 и eth1, и что
при этом I/O=0x300 и 0x320 соответственно. Обратите внимание на запись.
Прерывания записываются как 0x, а не как в DOS 300h. Для PCI-карт обычно достаточно alias-строк, определяющих связь между
устройством (ethN) и драйвером (3c509), потому что обычно I/O
спокойно определяется автоматически. Для PCI-карт редактируйте файл conf.modules (vi
/etc/conf.modules) и добавьте в него: Проблема 2.
Если драйверы вкомпилированы в ядро (монолитное ядро), проверка PCI будет
находить все карты автоматически. ISA-карты также будут определяться
автоматически, но в некоторых случаях нужно сделать следующее. Эта информация
сохраняется в файле /etc/lilo.conf. Метод заключается в передаче аргументов
для загрузки ядру, которую обычно делает LILO. Для ISA-карт, редактируйте файл lilo.conf (vi
/etc/lilo.conf) и добавьте в него: Замечание. В первый раз попробуйте загрузиться без аргументов
загрузки, и только если ничего не получится воспользуйтесь вышеприведенной
строкой. В этом случае eth0 и eth1 будут назначаться в порядке, в котором
карты будут определены. Так как мы перекомпилировали ядро, мы должны
использовать второй метод (если драйверы встроены в ядро) для инсталляции
второй Ethernet-карты в нашей системе. Помните, что он нужен только в ряде
случаев для ISA-карт, PCI-карты будут определяться автоматически. В Linux TCP/IP-сеть настраивается через несколько текстовых файлов,
которые Вы можете редактировать, чтобы заставить сеть работать. Очень важно
знать все конфигурационные файлы, связанные с TCP/IP, так чтобы Вы могли
редактировать их в случае необходимости. Помните, что сервер не имеет
Xwindow-интерфейса для настройки этих файлов. Даже если Вы используете
графический пользовательский интерфейс в своей повседневной работе, важно
знать как конфигурировать сеть в текстовом режиме. Следующие секции описывают
базовые конфигурационные файлы TCP/IP. Файл /etc/HOSTNAME
В этом файле хранится полное доменное имя Вашего компьютера, например,
deep.openna.com. Ниже приведен пример содержимого этого файла: Файл /etc/sysconfig/network-scripts/ifcfg-ethN Конфигурационный файл для каждого сетевого устройства, которое существует
или Вы планируете добавить (в Red Hat 6.1 и 6.2), находится в каталоге
/etc/sysconfig/network-scripts и называется ifcfg-eth0 для первого
интерфейса, ifcfg-eth1 для второго и т. д. Ниже приведен пример
конфигурационного файла /etc/sysconfig/network-scripts/ifcfg-eth0: Если Вы хотите модифицировать сетевые адреса вручную или добавить новое
устройство на новом интерфейсе, редактируйте этот файл (ifcfg-ethN), или
создайте новый и внесите в него соответствующие изменения. DEVICE=devicename, где devicename имя физического сетевого устройства.
IPADDR=ipaddr, где ipaddr IP-адрес. Файл /etc/resolv.conf
Это еще одни текстовый файл, используемый определителем (resolver),
библиотекой, которая определяет IP-адрес по имени. Пример этого файла: Замечание. Запросы посылаются на серверы имен в порядке
перечисления в файле /etc/resolv.conf (primary, secondary и т. д). Файл /etc/host.conf Этот файл устанавливает, как определяются имена. Linux использует
библиотеку определителей для получения IP-адреса по имени. Пример этого файла: Опция order используется для определения порядка использования сервисов. В
примере установлено, что вначале библиотека определителя обращается к
DNS-серверу, а затем к файлу /etc/hosts. Опция multi говорит, что компьютеры,
описанные в файле /etc/hosts, могут иметь несколько IP-адресов (несколько
интерфейсов ethN). Например, шлюз всегда имеет несколько адресов, и у них эта
опция должна быть всегда определена в ON. Опция nospoof предписывает не
разрешать подмену адресов. IP-Spoofing это способ атаки при котором удаленный
компьютер представляется кем-то, кем он не является на самом деле. Файл /etc/sysconfig/network Файл /etc/sysconfig/network описывает желательную
сетевую конфигурацию сервера. Пример этого файла: NETWORKING=answer, где answer это yes или no (Настраивать сеть или нет).
Замечание. Для совместимости со старым программным обеспечением
файл /etc/HOSTNAME должен содержать тоже имя, что и HOSTNAME=hostname. В
новой версии Red Hat Linux 6.2 параметр "FORWARD_IPV4=" определяется в файле
/etc/sysctl.conf вместо /etc/sysconfig/network. Файл /etc/sysctl.conf В Red Hat Linux 6.2 многие опции ядра, связанные с сетевой безопасностью,
такие как сбрасывать ли пакеты, которые приходят для другого интерфейса, или
игнорировать ping/широковещательные запросы и т. д., могут быть определены в
новом файле /etc/sysctl.conf вместо /etc/rc.d/rc.local. Одним из самых важных
параметров, задаваемых в этом файле, является IPv4 forwarding, который сейчас
включается программой sysctl. sysctl-настройки хранятся в файле
/etc/sysctl.conf, который обрабатывается при каждой загрузке системы перед
скриптом /etc/rc.d/rc.local. Мы уже говорили обо всех сетевых настройках,
связанных с безопасностью в главе 3 "Общая системная
безопасность", поэтому сейчас сконцентрируемся только на опции ядра IPv4
forwarding. Для включения маршрутизации в Red Hat 6.2
используйте следующую команду. Редактируйте файл /etc/sysctl.conf и добавьте следующие строки: Вы должны перезагрузить сетевые настройки, чтобы
изменения вступили в силу: ЗАМЕЧАНИЕ. Включение маршрутизации через файл sysctl.conf работает
только для Red Hat 6.2. Пользователям Red Hat 6.1 нужно устанавливать этот
параметр через файл /etc/sysconfig/network, как это было описано выше. Файл /etc/hosts Когда Вы включаете компьютер, необходимо знать карту соответствия
IP-адресов и имен некоторых машин, пока DNS-сервер не отвечает. Эта карта
хранится в файле /etc/hosts. При отсутствии сервера имен все программы будут
узнавать у этого файла, какой IP-адрес отвечает на определенное имя. Ниже приводится пример /etc/hosts: В левой колонке записываются IP-адреса, в средней соответствующий им имена
машин, а в последней псевдонимы этих компьютеров. Например, адресу
208.164.186.1 соответствует машина deep.openna.com, называемая также deep.
После окончания настройки этих файлов не забудьте перезагрузить сетевые
настройки Вашего сервера, чтобы изменения вступили в силу: ВАЖНОЕ ЗАМЕЧАНИЕ. Проблемы таймаута, возникающие при telnet и
ftp-соединениях, часто связаны с тем, что сервер не может определить IP-адрес
по DNS-имени. Это бывает в двух случаях: или неправильно сконфигурирован
DNS-сервер, или клиентская машина не знает о DNS. Если Вы планируете
запускать telnet или ftp-сервисы на машине, не имеющей DNS-сервера, не
забудьте добавить имя клиентской машины и ее IP-адрес в Ваш файл /etc/hosts,
иначе, Вы можете ждать несколько минут, пока lookup-запрос не завершится по
таймауту, до появления запроса "login:". Утилита ifconfig используется для включения и настройки сетевых карт. Вы
должны разобраться в этой команде, если хотите настраивать сеть вручную.
Следует отметить, что когда Вы используете ifconfig, не нужно перезагружать
компьютер, изменения вступают в силу сразу. Для назначения интерфейсу eth0 IP-адреса 208.164.186.2 используйте команду:
ЗАМЕЧАНИЕ. Обычно, люди настраивают сеть вручную, чтобы проверить
как скажутся новые параметры на работе сервера. Если хотите сохранить новые
настройки, то используйте для этого конфигурационные файлы,
связанные с работой сети. Для отображения всех интерфейсов, существующих на сервере, введите команду:
В ответ Вы получите следующую информацию. ЗАМЕЧАНИЕ. Если Вы вызвали ifconfig без параметров, то она выдаст
информацию обо всех интерфейсах. Опция "-a" покажет
также неактивные интерфейсы. В ответ Вы получите следующую информацию. Для назначения маршрутизатора по умолчанию используйте команду: ЗАМЕЧАНИЕ. В этом примере маршрутизатор по умолчанию имеет адрес
208.164.186.1. Если хотите зафиксировать этот адрес, то внесите его в файл
/etc/sysconfig/network. Чтобы проверить, что компьютер присутствует в сети, введите
следующую команду (проверяется адрес 208.164.186.1). В ответ Вы получите следующую информацию. Вы должны просмотреть таблицу маршрутизации командой route, чтобы
убедиться, что оба хоста имеют корректные вхождения в нее. В ответ Вы получите следующую информацию. Для быстрой проверки статуса интерфейсов используйте команду netstat -i:
В ответ Вы получите следующую информацию. Другая чрезвычайно полезная опция программы netstat "-t", которая
показывает все активные TCP-соединения. В ответ Вы получите следующую информацию. Для просмотра всех активных и прослушиваемых TCP соединений
используйте опции "-vat" В ответ Вы получите следующую информацию. Для остановки всех сетевых устройств вручную используйте команду: Для запуска всех сетевых устройств вручную используйте команду:
Часть III. Рекомендации, связанные с сетью
Глава 6. Управление сетями TCP/IP
Краткий обзор
Инсталляция более одной Ethernet-карты на одной машине
alias eth0 3c509
alias eth1 3c509
options 3c509 io=0x300,0x320
alias eth0 3c509
alias eth1 3c509
append="ether=0,0,eth1"
Файлы, связанные с функционированием сети
deep.openna.com
DEVICE=eth0
IPADDR=208.164.186.1
NETMASK=255.255.255.0
NETWORK=208.164.186.0
BROADCAST=208.164.186.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
NETMASK=netmask, где netmask сетевая IP-маска.
NETWORK=network, где network IP-адрес подсети.
BROADCAST=broadcast, где broadcast широковещательный IP-адрес.
ONBOOT=answer, где answer yes или no (Будет ли интерфейс активным во время
загрузки или нет).
BOOTPROTO=proto, где proto одно из:
USERCTL=answer, где answer одно из:
search openna.com
nameserver 208.164.186.1
nameserver 208.164.186.2
# Поиск имени сперва через DNS а затем, в случае ошибки,
# в файле /etc/hosts.
order bind,hosts
# У нас есть машины с несколькими адресами.
multi on
# Проверять подмену IP-адресов (IP spoofing).
nospoof on
NETWORKING=yes
FORWARD_IPV4=yes
HOSTNAME=deep. openna.com
GATEWAY=0.0.0.0
GATEWAYDEV=
FORWARD_IPV4=answer, где answer это yes или no
(Выполнять IP-маршрутизацию или нет).
HOSTNAME=hostname, где hostname это имя Вашего сервера.
GATEWAY=gwip, где gwip это IP-адрес удаленного
маршрутизатора (если доступен).
GATEWAYDEV=gwdev, где gwdev имя устройства (eth#), через которое Вы имеете
доступ к удаленному маршрутизатору.
# Enable packet forwarding
net.ipv4.ip_forward = 1
[root@deep /]# /etc/rc.d/init.d/network restart
Setting network parameters [ OK ]
Bringing up interface lo [ OK ]
Bringing up interface eth0 [ OK ]
Bringing up interface eth1 [ OK ]
IP Address Hostname Alias
127.0.0.1 localhost deep.openna.com
208.164.186.1 deep.openna.com deep
208.164.186.2 mail.openna.com mail
208.164.186.3 web.openna.com web
[root@deep /]# /etc/rc.d/init.d/network restart
Setting network parameters [ OK ]
Bringing up interface lo [ OK ]
Bringing up interface eth0 [ OK ]
Bringing up interface eth1 [ OK ]
Настройка TCP/IP-сети вручную из командной строки
[root@deep /]# ifconfig eth0 208.164.186.2 netmask 255.255.255.0
[root@deep /]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:E0:18:90:1B:56
inet addr:208.164.186.2 Bcast:208.164.186.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1295 errors:0 dropped:0 overruns:0 frame:0
TX packets:1163 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0xa800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:139 errors:0 dropped:0 overruns:0 frame:0
TX packets:139 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
[root@deep /]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:E0:18:90:1B:56
inet addr:208.164.186.2 Bcast:208.164.186.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1295 errors:0 dropped:0 overruns:0 frame:0
TX packets:1163 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0xa800
eth1 Link encap:Ethernet HWaddr 00:E0:18:90:1B:56
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1295 errors:0 dropped:0 overruns:0 frame:0
TX packets:1163 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:5 Base address:0xa320
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:139 errors:0 dropped:0 overruns:0 frame:0
TX packets:139 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
[root@deep /]# route add default gw 208.164.186.1
[root@deep /]# ping 208.164.186.1
[root@deep networking]# ping 208.164.186.1
PING 208.164.186.1 (208.164.186.1) from 208.164.186.2 : 56 data bytes
64 bytes from 208.164.186.2: icmp_seq=0 ttl=128 time=1.0 ms
64 bytes from 208.164.186.2: icmp_seq=1 ttl=128 time=1.0 ms
64 bytes from 208.164.186.2: icmp_seq=2 ttl=128 time=1.0 ms
64 bytes from 208.164.186.2: icmp_seq=3 ttl=128 time=1.0 ms
--- 208.164.186.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 1.0/1.0/1.0 ms
[root@deep /]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
208.164.186.2 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
208.164.186.0 208.164.186.2 255.255.255.0 UG 0 0 0 eth0
208.164.186.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
[root@deep /]# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 4236 0 0 0 3700 0 0 0 BRU
lo 3924 0 13300 0 0 0 13300 0 0 0 LRU
ppp0 1500 0 14 1 0 0 16 0 0 0 PRU
[root@deep /]# netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
Tcp 0 0 deep.openar:netbios-ssn gate.openna.com:1045 ESTABLISHED
Tcp 0 0 localhost:1032 localhost:1033 ESTABLISHED
Tcp 0 0 localhost:1033 localhost:1032 ESTABLISHED
Tcp 0 0 localhost:1030 localhost:1034 ESTABLISHED
Tcp 0 0 localhost:1031 localhost:1030 ESTABLISHED
Tcp 0 0 localhost:1028 localhost:1029 ESTABLISHED
Tcp 0 0 localhost:1029 localhost:1028 ESTABLISHED
Tcp 0 0 localhost:1026 localhost:1027 ESTABLISHED
Tcp 0 0 localhost:1027 localhost:1026 ESTABLISHED
Tcp 0 0 localhost:1024 localhost:1025 ESTABLISHED
Tcp 0 0 localhost:1025 localhost:1024 ESTABLISHED
[root@deep /]# netstat -vat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 deep.openna.co:domain *:* LISTEN
tcp 0 0 localhost:domain *:* LISTEN
tcp 0 0 deep.openna.com:ssh gate.openna.com:1682 ESTABLISHED
tcp 0 0 *:webcache *:* LISTEN
tcp 0 0 deep.openar:netbios-ssn *:* LISTEN
tcp 0 0 localhost:netbios-ssn *:* LISTEN
Tcp 0 0 localhost:1032 localhost:1033 ESTABLISHED
Tcp 0 0 localhost:1033 localhost:1032 ESTABLISHED
Tcp 0 0 localhost:1030 localhost:1034 ESTABLISHED
Tcp 0 0 localhost:1031 localhost:1030 ESTABLISHED
Tcp 0 0 localhost:1028 localhost:1029 ESTABLISHED
Tcp 0 0 localhost:1029 localhost:1028 ESTABLISHED
Tcp 0 0 localhost:1026 localhost:1027 ESTABLISHED
Tcp 0 0 localhost:1027 localhost:1026 ESTABLISHED
Tcp 0 0 localhost:1024 localhost:1025 ESTABLISHED
Tcp 0 0 localhost:1025 localhost:1024 ESTABLISHED
tcp 0 0 deep.openna.com:www *:* LISTEN
tcp 0 0 deep.openna.com:https *:* LISTEN
tcp 0 0 *:389 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
[root@deep /]# /etc/rc.d/init.d/network stop
Shutting down interface eth0 [ OK ]
Disabling IPv4 packet forwarding [ OK ]
[root@deep /]# /etc/rc.d/init.d/network start
Enabling IPv4 packet forwarding [ OK ]
Bringing up interface lo [ OK ]
Bringing up interface eth0 [ OK ]
Найди своих коллег! |