Как подключиться по tcp linux
[в закладки] Шпаргалка системного администратора по сетевым инструментам Linux
В повседневные задачи системных администраторов входит работа с сетями и с подключённым к ним оборудованием. Нередко роль рабочего места администратора играет компьютер, на котором установлен какой-нибудь дистрибутив Linux. Утилиты и команды Linux, о которых пойдёт речь в материале, перевод которого мы публикуем сегодня, включают в себя список инструментов различной сложности — от простых, до продвинутых, которые предназначены для решения широкого спектра задач по управлению сетями и по диагностике сетевых неполадок.
▍Примеры
Ping, кроме того, можно использовать для выяснения IP-адресов сайтов на основе их имён. Вот как это выглядит.
Использование ping для выяснения IP-адреса сайта по его имени
Traceroute
▍Пример
Telnet
Утилита telnet позволяет связаться с удалённым компьютером по протоколу Telnet и взаимодействовать с ним, используя соответствующие команды.
▍Пример
Для организации сеанса Telnet-связи с другим компьютером используется следующая команда:
Netstat
Эта команда позволяет собирать сведения о сети и используется в ходе поиска и исправления сетевых неполадок, применяется для проверки данных о работе интерфейсов и портов, для исследования таблиц маршрутизации, для изучения информации о работе протоколов. Эта команда непременно должна присутствовать в арсенале системного администратора.
▍Примеры
Для того чтобы получить список всех портов, находящихся в режиме прослушивания, воспользуйтесь такой командой:
Для просмотра таблиц маршрутизации воспользуйтесь такой командой:
Вот как выглядит результат выполнения этой команды.
Сведения о таблице маршрутизации
Вот вариант этой команды, выводящий статистику по протоколам:
Статистика по протоколам
Следующий вариант вызова netstat позволяет узнать сведения об отправленных и полученных пакетах (transmission/receive, TX/RX) по каждому интерфейсу:
Данные об отправленных и полученных пакетах
Nmcli
Утилита nmcli отлично подходит для управления сетевыми соединениями, для выполнения настроек и для решения других подобных задач. С её помощью можно управлять программой NetworkManager и модифицировать сетевые параметры различных устройств.
▍Примеры
Вот как с помощью nmcli вывести список сетевых интерфейсов:
Так можно вывести информацию по конкретному интерфейсу:
Следующий вариант вызова команды позволяет проверить подключение устройства к сети:
Примеры использования nmcli
Эта команда позволяет отключить заданный интерфейс:
А эта позволяет включить интерфейс:
Вот пример команды, которая добавляет VLAN-интерфейс с заданным VLAN-номером, IP-адресом и шлюзом к указанному интерфейсу:
Маршрутизация
Существует множество команд, которые можно использовать для проверки правил маршрутизации и их настройки. Рассмотрим самые полезные из них.
▍Примеры
Следующая команда показывает все текущие маршруты, настроенные для соответствующих интерфейсов:
Маршруты, настроенные для интерфейсов
Эта команда позволяет добавить в таблицу маршрутизации шлюз, используемый по умолчанию:
Следующая команда добавляет в таблицу маршрутизации новый сетевой маршрут. Существует и множество других её параметров, позволяющих выполнять такие операции, как добавление маршрута и шлюза, используемых по умолчанию, и так далее.
С помощью такой команды можно удалить запись о заданном маршруте из таблицы маршрутизации:
Использование команды route
Вот команда, которая применяется для вывода текущей таблицы соседей. Кроме того, её можно использовать для добавления, изменения или удаления сведений о соседях:
Взглянем на примеры её использования.
Данные, полученные с помощью команды ip neighbor
Вот сведения о команде ip neigh
Сведения о команде ip neigh
Вот пример её вызова.
Вызов команды arp
Tcpdump и Wireshark
▍Примеры
Такая команда показывает, в режиме реального времени, пакеты с заданного интерфейса:
Использование tcpdump
Следующий вариант команды используется для захвата пакетов, приходящих с заданного IP системы-источника:
Так можно захватить пакеты, идущие на заданный адрес системы-приёмника:
Вот пример использования tcpdump для захвата пакетов для заданного номера порта, например, это может быть порт 53, 80, 8080, и так далее:
Здесь показано, как с помощью tcpdump захватывать пакеты заданного протокола, вроде TCP, UDP или других:
Iptables
Утилита iptables похожа на файрвол, она поддерживает фильтрацию пакетов, что позволяет управлять трафиком, пропуская или блокируя его. Диапазон возможностей этой утилиты огромен. Рассмотрим несколько наиболее распространённых вариантов её использования.
▍Примеры
Следующая команда позволяет вывести все существующие правила iptables :
Эта команда удаляет все существующие правила:
Следующие команды разрешают прохождение трафика с заданного номера порта к заданному интерфейсу:
Следующие команды разрешают loopback-доступ к системе:
Nslookup
Инструмент nslookup используется для получения сведений о назначении IP-адресов сетевым ресурсам. Его можно использовать и для получения сведений с DNS-серверов, например таких, как все DNS-записи для некоего веб-сайта (ниже мы рассмотрим соответствующий пример). На nslookup похожа утилита dig (Domain Information Groper).
▍Примеры
Следующая команда выводит IP-адреса вашего DNS-сервера в поле Server, и, ниже, выдаёт IP-адрес искомого сайта:
Такая команда показывает все доступные записи для заданного веб-сайта или домена:
Поиск неполадок
Вот набор команд и список важных файлов, используемых для идентификации сетевых неполадок.
▍Примеры
Итоги
В этой небольшой шпаргалке мы рассказали о сетевых инструментах Linux, предназначенных для системных администраторов. Надеемся, вам эти инструменты пригодятся.
Уважаемые читатели! Чем вы пользуетесь для администрирования сетей и для выяснения причин сетевых неполадок?
Как подключиться к открытому порту
Процесс(chrome) открыл UDP порт 54281. Комп за НАТом. Хочу проверить имеет ли сервер доступ к этому порту.
telnet udp не умеет, проверяй nmap и прочими, в гугле поищи
Telnet же по TCP. man nmap.
дома журнал как раз со статьёй на эту тему. Сейчас не помню, но есть свой инструмент для UDP. Вечером гляну.
netcat
точно, про netcat там было
Запустил, уже больше минуты висит, ничего не пишет в ответ.
Мне не локальный нужно проверить, а удаленный, который за НАТом
К UDP вообще, внезапно, нельзя *подключиться* т.к. это connectionless протокол. Можно на том конце открыть порт в nc и слушать, а снаружи тем же nc в него плевать.
Надеюсь, ты проверяешь с внешнего хоста, а не изнутри сети?
Роутинг внешинх занатеных портов во внутреннюю сеть — дело не тривиальное и скорее всего у тебя не настроено (там нужен double-nat).
Если комп не за натом, что отлично проверяется nmap
На винде браузер хром открыл UDP на порту 62567
Хочу проверить имеет ли сервер доступ к этому порту.
Основы почитайте, для начала. Других вариантов не вижу.
Часть III. Рекомендации, связанные с сетью
Глава 6. Управление сетями TCP/IP
Краткий обзор
Мы пока еще не поиграли с сетевыми возможностями Linux. Linux одна из самых лучших операционных систем в мире по поддерживаемым сетевым функциям. Большое количество серверов знают об этом и активно используют его. Понимание вашего сетевого оборудования и всех файлов связанных с сетью очень важно для полного контроля над тем, с чем сталкивается сервер. Хорошее знание всех основных сетевых команд жизненно важно. Управление сетью охватывает обширный ряд тем. В общем, они включают сбор статистических данных о состоянии частей сети и принятие мер в случае необходимости при возникновении сбоев или других причин. Наиболее примитивная техника сетевого мониторинга это периодическое пингование проблемных хостов. Более сложная система контроля за сетью требует наличия возможности сбора состояний и статистической информации о работе различных устройств сети. В этой главе мы будем давать ответы на фундаментальные вопросы относительно сетевых устройств, файлов связанных с функционированием сети и важнейших сетевых команд.
Инсталляция более одной Ethernet-карты на одной машине
Вы можете использовать Linux как шлюз между двумя сетями. Для этого Вы должны иметь на сервере две сетевые карты. Ядро Linux не определяет несколько сетевых карт автоматически при загрузке. Если Вы хотите иметь больше одной сетевой карты, то надо определить параметры карт в lilo.conf для монолитного ядра или в conf.modules для модульного ядра. При работе с сетевыми картами Вы можете столкнуться со следующими проблемами.
Если драйвер карты был создан как загружаемый модуль (модульное ядро), в случае 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) и добавьте в него:
Если драйверы вкомпилированы в ядро (монолитное ядро), проверка 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.
В этом файле хранится полное доменное имя Вашего компьютера, например, deep.openna.com. Ниже приведен пример содержимого этого файла:
Конфигурационный файл для каждого сетевого устройства, которое существует или Вы планируете добавить (в Red Hat 6.1 и 6.2), находится в каталоге /etc/sysconfig/network-scripts и называется ifcfg-eth0 для первого интерфейса, ifcfg-eth1 для второго и т. д. Ниже приведен пример конфигурационного файла /etc/sysconfig/network-scripts/ifcfg-eth0:
Если Вы хотите модифицировать сетевые адреса вручную или добавить новое устройство на новом интерфейсе, редактируйте этот файл (ifcfg-ethN), или создайте новый и внесите в него соответствующие изменения.
Это еще одни текстовый файл, используемый определителем (resolver), библиотекой, которая определяет IP-адрес по имени.
Пример этого файла:
Замечание. Запросы посылаются на серверы имен в порядке перечисления в файле /etc/resolv.conf (primary, secondary и т. д).
Этот файл устанавливает, как определяются имена. Linux использует библиотеку определителей для получения IP-адреса по имени.
Пример этого файла:
Опция order используется для определения порядка использования сервисов. В примере установлено, что вначале библиотека определителя обращается к DNS-серверу, а затем к файлу /etc/hosts. Опция multi говорит, что компьютеры, описанные в файле /etc/hosts, могут иметь несколько IP-адресов (несколько интерфейсов ethN). Например, шлюз всегда имеет несколько адресов, и у них эта опция должна быть всегда определена в ON. Опция nospoof предписывает не разрешать подмену адресов. IP-Spoofing это способ атаки при котором удаленный компьютер представляется кем-то, кем он не является на самом деле.
Файл /etc/sysconfig/network описывает желательную сетевую конфигурацию сервера.
Пример этого файла:
NETWORKING=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.
В 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, как это было описано выше.
Когда Вы включаете компьютер, необходимо знать карту соответствия 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:».
Настройка TCP/IP-сети вручную из командной строки
Утилита ifconfig используется для включения и настройки сетевых карт. Вы должны разобраться в этой команде, если хотите настраивать сеть вручную. Следует отметить, что когда Вы используете ifconfig, не нужно перезагружать компьютер, изменения вступают в силу сразу.
Для назначения интерфейсу eth0 IP-адреса 208.164.186.2 используйте команду:
ЗАМЕЧАНИЕ. Обычно, люди настраивают сеть вручную, чтобы проверить как скажутся новые параметры на работе сервера. Если хотите сохранить новые настройки, то используйте для этого конфигурационные файлы, связанные с работой сети.
Для отображения всех интерфейсов, существующих на сервере, введите команду:
В ответ Вы получите следующую информацию.
ЗАМЕЧАНИЕ. Если Вы вызвали ifconfig без параметров, то она выдаст информацию обо всех интерфейсах. Опция «-a» покажет также неактивные интерфейсы.
В ответ Вы получите следующую информацию.
Для назначения маршрутизатора по умолчанию используйте команду:
ЗАМЕЧАНИЕ. В этом примере маршрутизатор по умолчанию имеет адрес 208.164.186.1. Если хотите зафиксировать этот адрес, то внесите его в файл /etc/sysconfig/network.
Чтобы проверить, что компьютер присутствует в сети, введите следующую команду (проверяется адрес 208.164.186.1).
В ответ Вы получите следующую информацию.
Вы должны просмотреть таблицу маршрутизации командой route, чтобы убедиться, что оба хоста имеют корректные вхождения в нее.
В ответ Вы получите следующую информацию.
В ответ Вы получите следующую информацию.
Другая чрезвычайно полезная опция программы netstat «-t», которая показывает все активные TCP-соединения.
В ответ Вы получите следующую информацию.
Для просмотра всех активных и прослушиваемых TCP соединений используйте опции «-vat»
В ответ Вы получите следующую информацию.
Для остановки всех сетевых устройств вручную используйте команду:
Для запуска всех сетевых устройств вручную используйте команду:
Блог о системном администрировании. Статьи о Linux, Windows, СХД NetApp и виртуализации.
Доброго времени, уважаемые читатели. Публикую вторую часть статьи о сетевой подсистеме Linux. В текущей части основной упор сделан на реализацию сети в Linux (как настроить сеть в Linux, как продиагностировать сеть в Linux и поддерживать в рабочем состоянии сетевую подсистему в Linux).
Настройка TCP/IP в Linux для работы в сети Ethernet
Для работы с сетевыми протоколами TCP/IP в Linux достаточно наличие только петлевого интерфейса, но если необходимо объединить хосты между собой, естественно, необходимо наличие сетевого интерфейса, каналов передачи данных (например витая пара), возможно, какого-либо сетевого оборудования. Так же, необходимо наличие установленных утилит для настройки сети (/sbin/ifconfig, /sbin/route и др.), обычно поставляемые в пакете net-tools. Так же необходимо наличие конфигурационных файлов для сети (например /etc/hosts) и поддержку сети ядром Linux.
Параметры сети
Файлы настроек сети в Linux (конфигурационные файлы)
Для понимания работы сети в Linux, я бы обязательно посоветовал ознакомиться со статьей «Этапы загрузки Linux». В целом, вся работа Linux основана на процессе init, который рождается при загрузке ОС и плодит своих потомков, которые в свою очередь и выполняют всю необходимую работу, будь то запуск bash или демона. Да, и вся загрузка Linux основана на скриптах bash, в которых прописана вся последовательность запуска мелких утилит с различными параметрами, которые последовательно запускаются/останавливаются при запуске/остановке системы. Аналогично запускается и сетевая подсистема Linux.
Каждый дистрибутив Linux имеет слегка отличающийся от других механизм инициализации сети, но общая картина, думаю, после прочтения будет ясна. Если просмотреть стартовые скрипты сетевой подсистемы какого-либо дистрибутива Linux, то, как настроить конфигурацию сети с помощью конфигурационных файлов, станет более-менее понятно, например у Debian (за основу возьмем этот дистрибутив) за инициализацию сети отвечает скрипт /etc/init.d/networking, просмотрев который:
The ifup and ifdown commands may be used to configure (or, respectively, deconfigure) network interfaces based on interface definitions in the file /etc/network/interfaces.
/etc/hosts
Данный файл хранит перечень IP адресов и соответствующих им (адресам) имен хостов.Формат файла ничем не отличается от мастдайного:
Исторически, данный файл использовался вместо службы DNS. В настоящее время, файл так же может использоваться вместо службы DNS, но только при условии, что в вашей сети количество машин измеряется в единицах, а не в десятках или сотнях, потому что в таком случае, придется контролировать корректность данного файла на каждой машине.
/etc/hostname
Данный файл содержит NetBIOS-имя хоста:
/etc/networks
Данный файл хранит имена и адреса локальной и других сетей. Пример:
При использовании данного файла, сетями можно управлять по имени. Например добавить маршрут не route add 192.168.1.12, а route add home-network.
/etc/nsswitch.conf
Файл определяет порядок поиска имени хоста/сети, за данную настройку отвечают строки:
Параметр files указывает использовать указанные файлы (/etc/hosts и /etc/networks соответственно), параметр dns указывает использовать службу dns.
/etc/host.conf
Файл задает параметры разрешения имен для резолвера
/etc/resolv.conf
Данный фал определяет параметры механизма преобразования сетевых имен в IP адреса. Простым языком, определяет настройки DNS. Пример:
Настройка сети
Так же, если выполняется команда ifconfig с недостающими параметрами (например только IP адрес), то остальные дополняются автоматически (например бродкаст адрес добавляется по умолчанию с хостовым адресом, оканчивающимся на 255 и маска подсети по умолчанию берется 255.255.255.0).
По каким правилам формируются маршруты к сетям, я в первой части, на примерах нескольких маршрутизируемых сетей.
Диагностика сети Linux
Существует большое количество инструментов диагностики сети в Linux, зачастую, они очень похожи на утилиты от Microsoft. Я рассмотрю 3 основные утилиты диагностики сети, без которых выявить неполадки будет проблематично.
Думаю, что данная утилита знакома чуть ли не каждому. Работа этой утилиты заключается в отправке т.н. пакетов ICMP удаленному серверу, который будет указан в параметрах команды, сервер возвращает отправленные команды, а ping подсчитывает время требуемое отправленному пакету, чтобы дойти до сервера и вернуться. Например:
Как видно, из приведенного примера, ping выводит нам кучу полезной информации. Прежде всего, мы выяснили, что можем установить соединение с хостом ya.ru (иногда говорят, что «хост ya.ru нам доступен»). Во-вторых, мы видим, что DNS работает корректно, потому что «пингуемое» имя было корректно преобразовано в IP адрес (PING ya.ru (87.250.251.3)). Далее, в поле icmp_seq= указана нумерация отправляемых пакетов. Каждому отправляемому пакету последовательно присваивается номер и если в данной нумерации будут «провалы», то это нам расскажет о том, что соединение с «пингуемым» неустойчиво, а так же может означать, что сервер, которому шлют пакеты перегружен. По значению time= мы видим, сколько времени пакет путешествовал до 87.250.251.3 и обратно. Остановить работу утилиты ping можно клавишами Ctrl+C.
Следует отметить, что данная утилита не всегда надежный инструмент для диагностики. Удаленный сервер может блокировать ответы на ICMP запросы.
traceroute
Как видно, можно проследить маршрут от маршрутизатора провайдера 243-083-free.kubtelecom.ru (213.132.83.243) (Юг россии) до конечного хоста в www.yandex.ru (213.180.204.3) в москве.
Данная утилита посылает запросы серверам DNS и возвращает информацию о заданном домене. Пример:
Другие утилиты диагностики
ping, dig и другие утилиты диагностики с параметрами, можно найти в посте Основные команды Linux: сеть.
Подключение новой сетевой карты
Подключение и запуск новой сетевой карты сводится к выполнению нескольких шагов:
1. Физическое подключение карты
3. Просмотр вывода dmesg на обнаружение системой новой сетевой карты:
Посмотрим вывод ДО подключения новой карты:
в выводе видно, что в системе есть 2 сетевые карты eth1 и eth2. Подключаем третью и смотрим вывод:
Резюме
Думаю, на сегодня это все. Когда начал писать данную статью, думал что впишусь в один пост, но он получился громаден. Посему было решено разбить статью на две. Итого, я постарался изложить, не пошаговое хауту по настройке сети, а изложить принцип и объяснить понимание того, как же запускается и работает сеть в Linux. Очень надеюсь, что мне это удалось. Буду рад вашим комментариями и дополнениям. Со временем, буду статью дополнять.





Настройка TCP/IP в Linux для работы в сети Ethernet