Назад | Оглавление | Вперед |
Глава 6 Управление TCP/IP сетямиВ этой главеИнсталляция более одной Ethernet карты на одной машине Файлы связанные с функционированием сети Настройка TCP/IP сети вручную из командной строки |
Мы пока еще не поиграли с сетевыми возможностями 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) и добавляем в него:
alias eth0 3c509Это говорит, что драйвер 3c509 должен быть загружен для eth0 и eth1 и что при этом I/O=0x300 и 0x320 соответственно. Обратите внимание на запись. Прерывания записываются как 0x, а не как в DOS 300h.
Для PCI карт обычно достаточно alias строк, определяющих связь между устройством (ethN) и драйвером (3c509), потому что, обычно, I/O спокойно определяется автоматически.
Для PCI карт, редактируйте файл conf.modules (vi /etc/conf.modules) и добавьте в него:
alias eth0 3c509Если драйвера вкомпилированы в ядро (монолитное ядро), проверка PCI будет находить все карты автоматически. ISA карты также будут определяться автоматически, но в некоторых случаях нужно сделать следующее. Эта информация сохраняется в файле "/etc/lilo.conf". Метод заключается в передачи аргументов времени загрузки ядру, которое обычно делает LILO.
Для ISA карт, редактируйте файл lilo.conf (vi /etc/lilo.conf) и добавьте в него:
append="ether=0,0,eth1"Замечание. В первый раз попробуйте загрузиться без аргументов времени загрузки, и только если ничего не получится воспользуйтесь вышеприведенной строкой. В этом случае eth0 и eth1 будут назначаться в порядке котором карты будут определены. Так как мы перекомпилировали ядро, мы должны использовать второй метод (если драйвера встроены в ядро) для инсталляции второй Ethernet карты в нашей системе. Помните, что он нужен только в ряде случаев для ISA карт, PCI карты будут определяться автоматически.
В Linux, TCP/IP сеть настраивается через несколько текстовых файлов, которые вы можете редактировать, чтобы заставить вашу сеть работать. Очень важно знать все конфигурационные файлы, связанные с TCP/IP, так чтобы вы могли редактировать их в случае необходимости. Помните, что ваш сервер не имеет Xwindow интерфейса для настройки этих файлов. Даже если вы используете графический пользовательский интерфейс в своей повседневной работе, важно знать как конфигурировать сеть в текстовом режиме. Следующие секции описывают базовые конфигурационные файлы TCP/IP.
Файл "/etc/HOSTNAME".В этом файле хранится полное доменное имя вашего компьютера, например, deep.openna.com. Ниже приведен пример содержимого этого файла:
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":
DEVICE=eth0Если вы хотите модифицировать ваши сетевые адреса вручную или добавить новое устройство на новом интерфейсе, редактируйте этот файл (ifcfg-ethN), или создайте новый, и внесите в него соответствующие изменения.
DEVICE=devicename, где devicename имя физического сетевого
устройства. IPADDR=ipaddr, где ipaddr IP адрес.
NETMASK=netmask, где netmask
сетевая IP маска.
NETWORK=network, где network IP адрес
сети.
BROADCAST=broadcast, где broadcast широковещательный IP
адрес.
ONBOOT=answer, где answer это yes или no (Будет ли интерфейс активным
во время загрузки или нет).
BOOTPROTO=proto, где proto одно из:
Этот еще одни текстовый файл, используемый определителем (resolver) - библиотекой, которая определяет IP адрес по имени.
Пример этого файла:
search openna.comЗамечание. Запросы посылаются на сервера имен в порядке перечисления в файле "/etc/resolv.conf" (primary, secondary и т.д).
Файл "/etc/host.conf".
Этот файл устанавливает как определяются имена. Linux использует библиотеку определителей для получения IP адреса по имени.
Пример этого файла:
# Поиск имени сперва через DNS а затем, в случае ошибки, в файле /etc/hosts.Опция order используется для определения порядка использования
сервисов. В примере установлено, что вначале библиотека определителя обращается
к DNS серверу, а затем к файлу "/etc/hosts".
Опция multi говорит, что
компьютеры, описанные в файле /etc/hosts, могут иметь несколько IP адресов
(несколько интерфейсов ethN). Например, шлюз всегда имеет несколько адресов и у
них эта опция должна быть всегда определена в ON.
Опция nospoof не разрешать
подмену адресов. IP-Spoofing - это способ атаки при котором удаленный компьютер
представляется кем-то, кем он не является на самом деле.
Файл "/etc/sysconfig/network".
Файл "/etc/sysconfig/network" описывает желательную сетевую конфигурацию сервера.
Пример этого файла:
NETWORKING=yesNETWORKING=answer, где answer это yes или no (Настраивать сеть
или нет).
FORWARD_IPV4=answer, где answer это yes или no (Выполнять IP
маршрутизацию или нет).
HOSTNAME=hostname, где hostname это имя вашего
сервера.
GATEWAY=gwip, где gwip это IP адрес удаленного маршрутизатора (если
доступен).
GATEWAYDEV=gwdev, где gwdev имя устройства (eth#) через которое вы
имеете доступ к удаленному маршрутизатору.
Замечание. Для совместимости со старым программным файл /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" и добавьте следующие строки:
# Enable packet forwardingВы должны перезагрузить ваши сетевые настройки, чтобы изменения вступили в силу:
[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 ]
ЗАМЕЧАНИЕ. Включение маршрутизации через файл "sysctl.conf" работает только для Red Hat 6.2. Пользователям Red Hat 6.1 нужно устанавливать этот параметр через "/etc/sysconfig/network", как это было описано выше.
Файл "/etc/hosts".
Когда вы включаете компьютер, необходимо знать карту соответствия IP адресов и имен некоторых машин, пока DNS сервер не отвечает. Эта карта хранится в файле "/etc/hosts". При отсутствии сервера имен все программы будут узнавать у этого файла какой IP адрес отвечает на определенное имя.
Ниже приводится пример файла "/etc/hosts":
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
В левой колонке записываются IP адреса, в средней соответствующий им имена машин, а в последней псевдонимы этих компьютеров. Например, адресу 208.164.186.1 соответствует машина deep.openna.com, называемая также deep.
После окончания настройки этих файлов не забудьте перезагрузить сетевые настройки вашего сервера, чтобы изменения вступили в силу:
[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 ]
ВАЖНОЕ ЗАМЕЧАНИЕ. Проблемы таймаута, возникающие при telnet и ftp соединениях, часто связаны с тем, что сервер не может определить IP адрес по DNS имени. Это бывает в двух случаях или не правильно сконфигурирован DNS сервер, или клиентская машина не знает о DNS. Если вы планируете запускать telnet или ftp сервисы на машине, не имеющей DNS сервера, не забудьте добавить имя клиентской машины и ее IP адрес в ваш файл "/etc/hosts", иначе, вы можете ждать несколько минут, пока lookup запрос не завершится по таймауту, до появления запроса "login:"
Утилита ifconfig используется для включения и настройки сетевых карт. Вы должны разобраться в этой команду, если хотите настраивать сеть в ручную. Следует отметить, что когда вы используете ifconfig, вам не нужно перезагружать компьютер, изменения вступят в силу сразу.
Для назначения интерфейсу eth0 IP адреса 208.164.186.2 используйте команду:
[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
ЗАМЕЧАНИЕ. Если вы вызвали ifconfig без параметров, то она выдаст вам информацию обо всех интерфейсах. Опция "-a" покажет также неактивные интерфейсы.
[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ЗАМЕЧАНИЕ. В этом примере маршрутизатор по умолчанию имеет адрес 208.164.186.1. Если вы хотите зафиксировать этот адрес, то внесите его в файл /etc/sysconfig/network.
Чтобы проверить, что компьютер присутствует в сети введите следующую команду (проверяется адрес 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
Вы должны просмотреть таблицу маршрутизации командой route, чтобы убедиться, что оба хоста имеют корректные вхождения в нее.
[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
Для быстрой проверки статуса интерфейсов используйте команду netstat -i:
[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
Другая чрезвычайно полезная опция программы netstat "-t", которая показывает все активные TCP соединения.
[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
Для просмотра всех активных и прослушиваемых TCP соединений используйте опции "-vat"
[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 ]
Назад | Оглавление | Вперед |