Небольшой конспект по ip. Хватит использовать ifconfig. #### Основы **1. Конфигурирование ограничения полосы канала (Traffic Shaping).** Ограничение полосы канала позволяет управлять скоростью посылки пакетов в интерфейс, дабы избежать перегрузки линка. Ограничение полосы может быть целесообразным в сети с каналами с различной пропускной способностью или, если необходимо выделить полосу внутри канала. Ограничение полосы возможно на всех типах каналов и всех типах инкапсуляций. Ограничение полосы можно сконфигурировать с помощью списка доступа. **2. Network Tunnel.** Это процесс, в ходе которого создается защищенное логическое соединение между двумя конечными точками посредством инкапсуляции различных протоколов. Туннелирование представляет собой метод построения сетей, при котором один сетевой протокол инкапсулируется в другой. От обычных многоуровневых сетевых моделей (таких как OSI или TCP/IP) туннелирование отличается тем, что инкапсулируемый протокол относится к тому же или более низкому уровню, чем используемый в качестве тоннеля. Суть туннелирования состоит в том, чтобы «упаковать» передаваемую порцию данных, вместе со служебными полями, в новый «конверт» для обеспечения конфиденциальности и целостности всей передаваемой порции, включая служебные поля. Туннелирование может применяться на сетевом и на прикладном уровнях. Комбинация туннелирования и шифрования позволяет реализовать закрытые виртуальные частные сети (VPN). Туннелирование обычно применяется для согласования транспортных протоколов либо для создания защищённого соединения между узлами сети. **3. Маршрутизация (англ. Routing) — процесс определения маршрута следования информации в сетях связи.** Правила маршрутизации могут быть добавлены с помощью команды `ip route` **4. IPsec** IPsec – это набор протоколов, использующихся для обеспечения сервисов приватности и аутентификации на сетевом уровне модели OSI. Эти протоколы можно разделить на два класса – протоколы защиты передаваемых данных (AH, ESP) и протоколы обмена ключами (IKE). IPsec является набором стандартов Интернет и своего рода «надстройкой» над IP-протоколом. Его ядро составляют три протокола: - Authentication Header (АН) обеспечивает целостность виртуального соединения (передаваемых данных), аутентификацию источника информации и функцию по предотвращению повторной передачи пакетов - Encapsulating Security Payload (ESP) обеспечивает конфиденциальность (шифрование) передаваемой информации, ограничение потока конфиденциального трафика. Кроме этого, он может исполнять функции AH: обеспечить целостность виртуального соединения (передаваемых данных), аутентификацию источника информации и функцию по предотвращению повторной передачи пакетов. При применении ESP в обязательном порядке должен указываться набор услуг по обеспечению безопасности: каждая из его функций может включаться опционально. - Internet Security Association and Key Management Protocol (ISAKMP) — протокол, используемый для первичной настройки соединения, взаимной аутентификации конечными узлами друг друга и обмена секретными ключами. Протокол предусматривает использование различных механизмов обмена ключами, включая задание фиксированных ключей, использование таких протоколов, как Internet Key Exchange, Kerberized Internet Negotiation of Keys (RFC 4430) или записей DNS типа IPSECKEY (RFC 4025). Также одним из ключевых понятий является Security Association (SA). По сути, SA является набором параметров, характеризующим соединение. Например, используемые алгоритм шифрования и хэш-функция, секретные ключи, номер пакета и др. Security Association (Безопасная Ассоциация) - это по сути и есть безопасное соединение, обеспечивающее защиту передаваемых данных. На каждом из хостов, между которыми необходимо обеспечить безопасную передачу данных, должны быть созданы безопасные ассоциации для каждого направления. SA содержит такие параметры как адреса узлов/сетей источника и направления, индекс политик безопасности, алгоритмы шифрования/аутентификации и ключи. Безопасными Ассоциациями можно управлять через утилиту ip, входящую в пакет iproute2. Во многом её возможности шире, чем у setkey. Благодаря сокращениям и единообразному интерфейсу, работать с Безопасными Ассоциациями немного удобнее. Для управления SAD используется конструкция ip xfrm state. Допустимы сокращения наподобие ip x s. В отличии от setkey, который умеет только добавлять и удалять записи SA, ip позволяет их редактировать. Добавление и изменение записей в SAD осуществляется командой: ```shell ip xfrm state { add | update } ID [ XFRM_OPT ] [ mode MODE ] [ reqid REQID ] [ seq SEQ ] [ replay-window SIZE ] [ flag FLAG-LIST ] [ encap ENCAP ] [ sel SELECTOR ] [ replay-seq SEQ ] [ replay-oseq SEQ ] [ LIMIT-LIST ] ``` ### Управление сетью **1. Команда `ip address` показывает адреса, их свойства, а так же добавляет новые или удаляет старые.** Вы можете выбрать между IPv4 и IPv6 используя следующий синтаксис: ```shell # Показывать только TCP/IP IPv4 ip -4 a # Показывать только TCP/IP IPv6 ip -6 a ``` Также существует возможность вывести детали только об определенном сетевом интерфейсе: ```shell # Показать только интерфейс eth0 ip a show eth0 ip a list eth0 ip a show dev eth0 # Показать только поднятые интерфейсы ip link ls up ``` **2. Назначить интерфейсу IP адрес. Для того чтобы добавить IP адрес используется синтаксис следующего вида:** ``` ip a add {ip_addr/mask} dev {interface} ``` Чтобы назначить адрес 192.168.1.200/255.255.255.0 на интерфейс eth0, введите: ```shell ip a add 192.168.1.200/255.255.255.0 dev eth0 ``` **3. Добавить широковещательный адрес на интерфейс** По умолчанию, команда ip не задает какой-либо широковещательный адрес до тех пор, пока это будет недвусмысленно указано. Таким образом следующий синтаксис задает широковещательный адрес ADDRESS: ```shell ip addr add brd {ADDDRESS-HERE} dev {interface} ip addr add broadcast {ADDDRESS-HERE} dev {interface} ip addr add broadcast 172.20.10.255 dev dummy0 ``` Существует возможность использовать специальные символы + и - вместо широковещательного адреса указывая хостовую часть адреса. В этом примере добавим адрес 192.168.1.50 с маской 255.255.255.0 (/24) со стандартным широковещательным адресом и зададим название eth0Work на интерфейс eth0: ```shell ip a add 192.168.1.50/24 brd + dev eth0 label eth0Work ``` **4. Удалить IP адрес с интерфейса** ``` ip a del {ipv6_addr_OR_ipv4_addr} dev {interface} ``` Чтобы удалить 192.168.1.200/24 с интерфейса eth0, введите: ```shell ip a del 192.168.1.200/24 dev eth0 ``` **5. Конфигурирование меток** `ip addrlabel` используется для просмотра и изменения IPv6 политики таблицы. Метки могут быть использованы для указания адреса источника исходящего пакета. Метки с меньшими номерами имеют приоритет над высокими номерами меток. Вывод меток IPv6 ```shell ip addrl ``` **6. Команда `ip link`. Предназначена для конфигурация сетевого устройства. Доступные команды: `set` и `show` (или `list`)** ```shell ip l sh up ip link show up ip link show dev eth1 ip l sh eth1 ip -s link ``` Самое интересное тут: ```shell ip -s -s link show dev eth1 ``` ```shell [root@localhost ~]# ip -s -s link show dev eth1 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:8b:f1:09 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 2963871862 36345496 0 0 0 0 RX errors: length crc frame fifo missed 0 0 0 0 0 TX: bytes packets errors dropped carrier collsns 2462766687 27089186 0 0 0 0 TX errors: aborted fifo window heartbeat 0 0 0 0 ``` Это расширенный вывод информации о количестве Tx и Rx ошибок, которые появились. - length - неправильная длина пакета. Полученная длина кадра меньше или больше, чем предусмотрено стандартом Ethernet; это наиболее частая ошибка из-за несовместимых натроек дуплекс - crc - кадры отправлены, но были повреждены во время передачи. - frame - это ошибки кадра Ethernet, когда сетевая карта обнаруживает пакет. - missed – количество потерянных пакетов. - aborted – число прерванных пакетов. - fifo – количество неудачных попыток переместить данные в память; как правило возникает при чрезмерно большом трафике. - window – количество ошибок размера окна. - heartbeat – число Signal Quality Errors (SQE). Для обнаружения сбоев и управления ресурсами кластера