По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Обычные задачи системного администратора включают настройку, обслуживание, устранение неполадок и управление серверами и сетями в центрах обработки данных. В Linux существует множество инструментов и утилит, предназначенных для административных целей. В этой статье мы рассмотрим некоторые из наиболее часто используемых инструментов и утилит командной строки для управления сетями в Linux в различных категориях. Мы объясним некоторые распространенные примеры использования, которые значительно упростят управление сетью в Linux. Инструменты настройки, поиска, устранения неполадок и отладки сети 1. Команда ifconfig ifconfig - это инструмент командной строки (CLI) для настройки сетевого интерфейса, который также используется для инициализации интерфейсов во время загрузки системы. Когда сервер запущен и работает, ifconfig можно использовать для назначения IP-адреса интерфейсу и включения или отключения интерфейса по требованию. Ifconfig также используется для просмотра статуса IP-адреса, MAC-адреса, а также размера MTU (максимальная единица передачи - Maximum Transmission Unit) текущих активных интерфейсов. Таким образом, ifconfig полезен для отладки или настройки системы. Вот пример для отображения статуса всех активных сетевых интерфейсов. $ ifconfig enp1s0 Link encap:Ethernet HWaddr 28:d2:44:eb:bd:98 inet addr:192.168.0.103 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::8f0c:7825:8057:5eec/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:169854 errors:0 dropped:0 overruns:0 frame:0 TX packets:125995 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:174146270 (174.1 MB) TX bytes:21062129 (21.0 MB) 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:65536 Metric:1 RX packets:15793 errors:0 dropped:0 overruns:0 frame:0 TX packets:15793 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:2898946 (2.8 MB) TX bytes:2898946 (2.8 MB) Чтобы вывести список всех доступных на данный момент интерфейсов, включенных или выключенных, используйте флаг -a. $ ifconfig -a Для того чтобы назначить IP-адрес интерфейсу, используйте следующую команду: $ sudo ifconfig eth0 192.168.56.5 netmask 255.255.255.0 Чтобы активировать сетевой интерфейс, введите: $ sudo ifconfig up eth0 Чтобы деактивировать или отключить сетевой интерфейс, введите: $ sudo ifconfig down eth0 Внимание: Хотя ifconfig - отличный инструмент, теперь он устарел (deprecated), и его заменой является команда ip, о которой мы расскажем ниже. 2. Команда IP Команда IP - еще одна полезная утилита командной строки для отображения и управления маршрутизацией, сетевыми устройствами, интерфейсами. Это замена для ifconfig и многих других сетевых команд. Следующая команда покажет IP-адрес и другую информацию о сетевом интерфейсе. $ ip addr show 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp1s0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 28:d2:44:eb:bd:98 brd ff:ff:ff:ff:ff:ff inet 192.168.0.103/24 brd 192.168.0.255 scope global dynamic enp1s0 valid_lft 5772sec preferred_lft 5772sec inet6 fe80::8f0c:7825:8057:5eec/64 scope link valid_lft forever preferred_lft forever 3: wlp2s0: mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 38:b1:db:7c:78:c7 brd ff:ff:ff:ff:ff:ff ... Чтобы временно назначить IP-адрес определенному сетевому интерфейсу (eth0), введите: $ sudo ip addr add 192.168.56.1 dev eth0 Чтобы удалить назначенный IP-адрес c сетевого интерфейса (eth0), введите: $ sudo ip addr del 192.168.56.15/24 dev eth0 Чтобы показать текущую таблицу соседей в ядре, введите: $ ip neigh 192.168.0.1 dev enp1s0 lladdr 10:fe:ed:3d:f3:82 REACHABLE 3. Команды ifup, ifdown, и ifquery Команда ifup активирует сетевой интерфейс, делая его доступным для передачи и получения данных. $ sudo ifup eth0 Команда ifdow отключает сетевой интерфейс, сохраняя его в состоянии, когда он не может передавать или получать данные. $ sudo ifdown eth0 Команда ifquery используется для анализа конфигурации сетевого интерфейса, что позволяет получать ответы на запросы о том, как он настроен в данный момент. $ sudo ifquery eth0 4. Команда Ethtool ethtool - это утилита запроса и изменения параметров контроллера сетевого интерфейса и драйверов устройств. В приведенном ниже примере показано использование ethtool и команды для просмотра параметров сетевого интерфейса. $ sudo ethtool enp0s3 Settings for enp0s3: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on MDI-X: off (auto) Supports Wake-on: umbg Wake-on: d Current message level: 0x00000007 (7) drv probe link Link detected: yes 5. Команда Ping ping (Packet INternet Groper) – это всеми известная утилита, обычно используемая для тестирования соединения между двумя системами в сети (LAN или WAN). Ping использует протокол ICMP (Internet Control Message Protocol) для связи с узлами в сети. Чтобы проверить подключение к другому узлу, просто укажите его IP или имя хоста, например: $ ping 192.168.0.103 PING 192.168.0.103 (192.168.0.103) 56(84) bytes of data. 64 bytes from 192.168.0.103: icmp_seq=1 ttl=64 time=0.191 ms 64 bytes from 192.168.0.103: icmp_seq=2 ttl=64 time=0.156 ms 64 bytes from 192.168.0.103: icmp_seq=3 ttl=64 time=0.179 ms 64 bytes from 192.168.0.103: icmp_seq=4 ttl=64 time=0.182 ms 64 bytes from 192.168.0.103: icmp_seq=5 ttl=64 time=0.207 ms 64 bytes from 192.168.0.103: icmp_seq=6 ttl=64 time=0.157 ms ^C --- 192.168.0.103 ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 5099ms rtt min/avg/max/mdev = 0.156/0.178/0.207/0.023 ms Вы также можете указать ping выходить после указанного количества пакетов ECHO_REQUEST, используя флаг -c, как показано ниже: $ ping -c 4 192.168.0.103 PING 192.168.0.103 (192.168.0.103) 56(84) bytes of data. 64 bytes from 192.168.0.103: icmp_seq=1 ttl=64 time=1.09 ms 64 bytes from 192.168.0.103: icmp_seq=2 ttl=64 time=0.157 ms 64 bytes from 192.168.0.103: icmp_seq=3 ttl=64 time=0.163 ms 64 bytes from 192.168.0.103: icmp_seq=4 ttl=64 time=0.190 ms --- 192.168.0.103 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3029ms rtt min/avg/max/mdev = 0.157/0.402/1.098/0.402 ms 6. Команда Traceroute Traceroute - это утилита командной строки для отслеживания полного пути от вашей локальной системы до другой сетевой системы. Traceroute отображает количество хопов (IP-адресов маршрутизатора) по тому пути, по которому вы идете, чтобы добраться до конечного сервера. Это простая в использовании утилита для устранения неполадок в сети после команды ping. В этом примере мы отслеживаем маршрут, по которому пакеты отправляются из локальной системы на один из серверов Google с IP-адресом 216.58.204.46: $ traceroute 216.58.204.46 traceroute to 216.58.204.46 (216.58.204.46), 30 hops max, 60 byte packets 1 gateway (192.168.0.1) 0.487 ms 0.277 ms 0.269 ms 2 5.5.5.215 (5.5.5.215) 1.846 ms 1.631 ms 1.553 ms 3 * * * 4 72.14.194.226 (72.14.194.226) 3.762 ms 3.683 ms 3.577 ms 5 108.170.248.179 (108.170.248.179) 4.666 ms 108.170.248.162 (108.170.248.162) 4.869 ms 108.170.248.194 (108.170.248.194) 4.245 ms 6 72.14.235.133 (72.14.235.133) 72.443 ms 209.85.241.175 (209.85.241.175) 62.738 ms 72.14.235.133 (72.14.235.133) 65.809 ms 7 66.249.94.140 (66.249.94.140) 128.726 ms 127.506 ms 209.85.248.5 (209.85.248.5) 127.330 ms 8 74.125.251.181 (74.125.251.181) 127.219 ms 108.170.236.124 (108.170.236.124) 212.544 ms 74.125.251.181 (74.125.251.181) 127.249 ms 9 216.239.49.134 (216.239.49.134) 236.906 ms 209.85.242.80 (209.85.242.80) 254.810 ms 254.735 ms 10 209.85.251.138 (209.85.251.138) 252.002 ms 216.239.43.227 (216.239.43.227) 251.975 ms 209.85.242.80 (209.85.242.80) 236.343 ms 11 216.239.43.227 (216.239.43.227) 251.452 ms 72.14.234.8 (72.14.234.8) 279.650 ms 277.492 ms 12 209.85.250.9 (209.85.250.9) 274.521 ms 274.450 ms 209.85.253.249 (209.85.253.249) 270.558 ms 13 209.85.250.9 (209.85.250.9) 269.147 ms 209.85.254.244 (209.85.254.244) 347.046 ms 209.85.250.9 (209.85.250.9) 285.265 ms 14 64.233.175.112 (64.233.175.112) 344.852 ms 216.239.57.236 (216.239.57.236) 343.786 ms 64.233.175.112 (64.233.175.112) 345.273 ms 15 108.170.246.129 (108.170.246.129) 345.054 ms 345.342 ms 64.233.175.112 (64.233.175.112) 343.706 ms 16 108.170.238.119 (108.170.238.119) 345.610 ms 108.170.246.161 (108.170.246.161) 344.726 ms 108.170.238.117 (108.170.238.117) 345.536 ms 17 lhr25s12-in-f46.1e100.net (216.58.204.46) 345.382 ms 345.031 ms 344.884 ms 7. MTR Network Diagnostic Tool MTR - это современный инструмент для диагностики сети из командной строки, который объединяет функции ping и traceroute в одном диагностическом инструменте. Его вывод обновляется в режиме реального времени, по умолчанию, пока вы не выйдете из программы, нажав q. Самый простой способ запустить mtr - указать в качестве аргумента имя хоста или IP-адрес следующим образом: $ mtr google.com ИЛИ $ mtr 216.58.223.78 Пример вывода: wiki.merionet.ru (0.0.0.0) Thu Jul 12 08:58:27 2018 First TTL: 1 Host Loss% Snt Last Avg Best Wrst StDev 1. 192.168.0.1 0.0% 41 0.5 0.6 0.4 1.7 0.2 2. 5.5.5.215 0.0% 40 1.9 1.5 0.8 7.3 1.0 3. 209.snat-111-91-120.hns.net.in 23.1% 40 1.9 2.7 1.7 10.5 1.6 4. 72.14.194.226 0.0% 40 89.1 5.2 2.2 89.1 13.7 5. 108.170.248.193 0.0% 40 3.0 4.1 2.4 52.4 7.8 6. 108.170.237.43 0.0% 40 2.9 5.3 2.5 94.1 14.4 7. bom07s10-in-f174.1e100.net 0.0% 40 2.6 6.7 2.3 79.7 16. Вы можете ограничить количество пингов определенным значением и выйти из mtr после этих пингов, используя флаг -c. $ mtr -c 4 google.com 8. Команда Route route - это утилита для отображения или манипулирования таблицей IP-маршрутизации системы Linux. Route в основном используется для настройки статических маршрутов к конкретным хостам или сетям через интерфейс. Вы можете просмотреть таблицу маршрутизации IP ядра, набрав: $ route Destination Gateway Genmask Flags Metric Ref Use Iface default gateway 0.0.0.0 UG 100 0 0 enp0s3 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 Существует множество команд, которые вы можете использовать для настройки маршрутизации. Вот несколько полезных. Добавить шлюз по умолчанию в таблицу маршрутизации: $ sudo route add default gw Добавить сетевой маршрут в таблицу маршрутизации: $ sudo route add -net gw Удалить конкретную запись маршрута из таблицы маршрутизации: $ sudo route del -net 9. Команда Nmcli Nmcli - это простой в использовании инструмент с поддержкой сценариев, позволяющий сообщать о состоянии сети, управлять сетевыми подключениями и управлять NetworkManager. Чтобы просмотреть все ваши сетевые устройства, введите: $ nmcli dev status DEVICE TYPE STATE CONNECTION virbr0 bridge connected virbr0 enp0s3 ethernet connected Wired connection 1 Чтобы проверить сетевые подключения в вашей системе, введите: $ nmcli con show Wired connection 1 bc3638ff-205a-3bbb-8845-5a4b0f7eef91 802-3-ethernet enp0s3 virbr0 00f5d53e-fd51-41d3-b069-bdfd2dde062b bridge virbr0 Чтобы увидеть только активные соединения, добавьте флаг -a. $ nmcli con show -a Инструменты сетевого сканирования и анализа производительности 10.Команда Netstat netstat - это инструмент командной строки, который отображает полезную информацию, такую как сетевые соединения, таблицы маршрутизации, статистику интерфейса и многое другое, касающееся сетевой подсистемы Linux. Это полезно для устранения неполадок в сети и анализа производительности. Кроме того, это также основной инструмент отладки сетевых служб, используемый для проверки того, какие программы прослушивают какие порты. Например, следующая команда покажет все порты TCP в режиме прослушивания и какие программы прослушивают их. $ sudo netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 1257/master tcp 0 0 127.0.0.1:5003 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 1015/dovecot tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 1015/dovecot tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 1257/master tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 1404/pdns_server tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1064/pure-ftpd (SER tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 972/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 975/cupsd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1257/master tcp 0 0 0.0.0.0:8090 0.0.0.0:* LISTEN 636/lscpd (lscpd - tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 1015/dovecot tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 1015/dovecot tcp6 0 0 :::3306 :::* LISTEN 1053/mysqld tcp6 0 0 :::3307 :::* LISTEN 1211/mysqld tcp6 0 0 :::587 :::* LISTEN 1257/master tcp6 0 0 :::110 :::* LISTEN 1015/dovecot tcp6 0 0 :::143 :::* LISTEN 1015/dovecot tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::80 :::* LISTEN 990/httpd tcp6 0 0 :::465 :::* LISTEN 1257/master tcp6 0 0 :::53 :::* LISTEN 1404/pdns_server tcp6 0 0 :::21 :::* LISTEN 1064/pure-ftpd (SER tcp6 0 0 :::22 :::* LISTEN 972/sshd tcp6 0 0 ::1:631 :::* LISTEN 975/cupsd tcp6 0 0 :::25 :::* LISTEN 1257/master tcp6 0 0 :::993 :::* LISTEN 1015/dovecot tcp6 0 0 :::995 :::* LISTEN 1015/dovecot Чтобы просмотреть таблицу маршрутизации ядра, используйте флаг -r (который эквивалентен приведенной выше команде route). $ netstat -r Destination Gateway Genmask Flags MSS Window irtt Iface default gateway 0.0.0.0 UG 0 0 0 enp0s3 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 Внимание: команда Netstat является устаревшей (deprecated) и была заменена командой ss, которую рассмотрим ниже. 11. Команда ss ss (socket statistics - статистика сокетов) - мощная утилита командной строки для изучения сокетов. Он выводит статистику сокетов и отображает информацию, аналогичную netstat. Кроме того, ss показывает больше информации о TCP и состоянии по сравнению с другими подобными утилитами. В следующем примере показано, как составить список всех TCP-портов (сокетов), открытых на сервере. $ ss -ta State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 100 *:submission *:* LISTEN 0 128 127.0.0.1:fmpro-internal *:* LISTEN 0 100 *:pop3 *:* LISTEN 0 100 *:imap *:* LISTEN 0 128 *:sunrpc *:* LISTEN 0 100 *:urd *:* LISTEN 0 128 *:domain *:* LISTEN 0 9 *:ftp *:* LISTEN 0 128 *:ssh *:* LISTEN 0 128 127.0.0.1:ipp *:* LISTEN 0 100 *:smtp *:* LISTEN 0 128 *:8090 *:* LISTEN 0 100 *:imaps *:* LISTEN 0 100 *:pop3s *:* ESTAB 0 0 192.168.0.104:ssh 192.168.0.103:36398 ESTAB 0 0 127.0.0.1:34642 127.0.0.1:opsession-prxy ESTAB 0 0 127.0.0.1:34638 127.0.0.1:opsession-prxy ESTAB 0 0 127.0.0.1:34644 127.0.0.1:opsession-prxy ESTAB 0 0 127.0.0.1:34640 127.0.0.1:opsession-prxy LISTEN 0 80 :::mysql :::* ... Чтобы отобразить все активные TCP-соединения вместе с их таймерами, выполните следующую команду. $ ss -to 12. Команда NC NC (NetCat), также называемая «Сетевым швейцарским армейским ножом», является мощной утилитой, используемой почти для любой задачи, связанной с сокетами домена TCP, UDP или UNIX. NC используется для открытия TCP-соединений, прослушивания произвольных портов TCP и UDP, выполнения сканирования портов и многого другого. Вы также можете использовать его в качестве простых прокси-серверов TCP для тестирования сетевых демонов, проверки доступности удаленных портов и многого другого. Кроме того, вы можете использовать nc вместе с командой pv для передачи файлов между двумя компьютерами. В следующем примере будет показано, как сканировать список портов. $ nc -zv server2.merionet.lan 21 22 80 443 3000 Вы также можете указать диапазон портов. $ nc -zv server2.merionet.lan 20-90 В следующем примере показано, как использовать nc для открытия TCP-соединения с портом 5000 на server2.merionet.lan, используя порт 3000 в качестве порта источника с тайм-аутом 10 секунд. $ nc -p 3000 -w 10 server2.merionet.lan 5000 13.Команда Nmap Nmap (Network Mapper) - это мощный и чрезвычайно универсальный инструмент для системных и сетевых администраторов Linux. Он используется для сбора информации об одном хосте или для изучения сетей по всей сети. Nmap также используется для сканирования безопасности, аудита сети, поиска открытых портов на удаленных хостах и многого другого. Например, вы можете сканировать хост, используя его имя или IP-адрес. $ nmap google.com Starting Nmap 6.40 ( http://nmap.org ) at 2018-07-12 09:23 BST Nmap scan report for google.com (172.217.166.78) Host is up (0.0036s latency). rDNS record for 172.217.166.78: bom05s15-in-f14.1e100.net Not shown: 998 filtered ports PORT STATE SERVICE 80/tcp open http 443/tcp open https Nmap done: 1 IP address (1 host up) scanned in 4.92 seconds В качестве альтернативы можно использовать IP-адрес. $ nmap 192.168.0.103 Starting Nmap 6.40 ( http://nmap.org ) at 2018-07-12 09:24 BST Nmap scan report for 192.168.0.103 Host is up (0.000051s latency). Not shown: 994 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 902/tcp open iss-realsecure 4242/tcp open vrml-multi-use 5900/tcp open vnc 8080/tcp open http-proxy MAC Address: 28:D2:44:EB:BD:98 (Lcfc(hefei) Electronics Technology Co.) Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds Утилиты DNS Lookup 14. Команда host Команда hos - это простая утилита для DNS Lookup, она переводит имена хостов в IP-адреса и наоборот. $ host google.com google.com has address 172.217.166.78 google.com mail is handled by 20 alt1.aspmx.l.google.com. google.com mail is handled by 30 alt2.aspmx.l.google.com. google.com mail is handled by 40 alt3.aspmx.l.google.com. google.com mail is handled by 50 alt4.aspmx.l.google.com. google.com mail is handled by 10 aspmx.l.google.com. 15. Команда dig dig (domain information groper - сборщик информации о домене) - это еще одна простая утилита DNS Lookup, которая используется для запроса информации, связанной с DNS, такой как A Record, CNAME, MX Record и т. д., например: $ dig google.com ; DiG 9.9.4-RedHat-9.9.4-51.el7 google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER merionet.com.ssh: Flags [.], ack 196, win 5202, options [nop,nop,TS val 2019058 ecr 2211778668], length 0 09:35:40.288269 IP merionet.com.54899 > gateway.domain: 43760+ PTR? 103.0.168.192.in-addr.arpa. (44) 09:35:40.333763 IP gateway.domain > merionet.com.54899: 43760 NXDomain* 0/1/0 (94) 09:35:40.335311 IP merionet.com.52036 > gateway.domain: 44289+ PTR? 1.0.168.192.in-addr.arpa. (42) Чтобы захватить определенное количество пакетов, используйте параметр -c, чтобы ввести желаемое число. $ tcpdump -c 5 -i eth1 Вы также можете захватывать и сохранять пакеты в файл для последующего анализа, используйте флаг -w, чтобы указать выходной файл. $ tcpdump -w captured.pacs -i eth1 18. Утилита Wireshark Wireshark - это популярный, мощный, универсальный и простой в использовании инструмент для захвата и анализа пакетов в сети с коммутацией пакетов в режиме реального времени. Вы также можете сохранить полученные данные в файл для последующей проверки. Он используется системными администраторами и сетевыми инженерами для мониторинга и проверки пакетов в целях безопасности и устранения неполадок. 19.Утилита Bmon bmon - мощная утилита для мониторинга и отладки сети, основанная на командной строке, для Unix-подобных систем, она собирает статистику, связанную с сетью, и печатает ее визуально в удобном для человека формате. Это надежный и эффективный монитор полосы пропускания в реальном времени и оценщик скорости. Инструменты управления фаерволом Linux 20. Iptables iptables - это инструмент командной строки для настройки, поддержки и проверки таблиц фильтрации IP-пакетов и набора правил NAT. Он используется для настройки и управления брандмауэром Linux (Netfilter). Это позволяет вам перечислить существующие правила фильтрации пакетов; добавлять или удалять или изменять правила фильтрации пакетов; список счетчиков для правил правил фильтрации пакетов. Вы можете узнать, как использовать Iptables для различных целей из нашей статьи 21. Firewalld Firewalld - это мощный и динамичный демон управления брандмауэром Linux (Netfilter), как и iptables. Он использует «сетевые зоны» вместо INPUT, OUTPUT и FORWARD CHAINS в iptables. В современных дистрибутивах Linux, таких как RHEL, CentOS 7 и Fedora 21+, iptables активно заменяется firewalld. Важно: Iptables по-прежнему поддерживается и может быть установлен с помощью менеджера пакетов YUM. Однако вы не можете использовать Firewalld и iptables одновременно на одном сервере - вы должны выбрать один. 22. UFW (Uncomplicated Firewall) UFW - это широко известный и используемый по умолчанию инструмент настройки брандмауэра в дистрибутивах Debian и Ubuntu Linux. Он используется для включения и отключения системного брандмауэра, добавления, удаления, изменения, сброса правил фильтрации пакетов и многого другого. Чтобы проверить состояние брандмауэра UFW, введите: $ sudo ufw status Если брандмауэр UFW не активен, вы можете активировать или включить его с помощью следующей команды. $ sudo ufw enable Чтобы отключить брандмауэр UFW, используйте следующую команду. $ sudo ufw disable На этом пока все! В этом руководстве мы рассмотрели некоторые из наиболее часто используемых инструментов и утилит командной строки для управления сетью в Linux, в разных категориях, для системных администраторов и сетевых администраторов и инженеров. Вы можете поделиться своими мыслями об этом руководстве с помощью комментариев. Если мы пропустили какие-либо часто используемые и важные сетевые инструменты и утилиты Linux или любую полезную связанную информацию, также сообщите нам об этом.
img
Алгоритм – это набор четко сформулированных инструкций, который применяется для решения конкретной задачи. Эти задачи вы можете решать любым удобным для вас способом.  Это значит, что ваш метод, который вы используете для решения задачи, может отличаться от моего, но при этом мы оба должны получить один и тот же результат.  Так как способ решения одной и той же задачи может быть не один, то должен существовать и способ оценить эти решения или алгоритмы с точки зрения оптимальности и эффективности (время, которое требуется для запуска/выполнения вашего алгоритма, и общий объем потребляемой памяти). Этот этап довольно важный для программистов. Его цель - помочь убедиться, что их приложения работают должным образом, и помочь написать чистый программный код.  И вот здесь на первый план выходит обозначение «О большое». «О большое» - это метрика, которая определяет эффективность алгоритма. Она позволяет оценить, сколько времени занимает выполнение программного кода с различными входными данными, и измерить, насколько эффективно этот программный код масштабируется по мере увеличения размера входных данных.  Что такое «О большое»? «О большое» показывает сложность алгоритма для наихудшего случая. Для описания сложности алгоритма здесь используются алгебраические выражения.  «О большое» определяет время выполнения алгоритма, показывая, как будет меняться оптимальность алгоритма по мере увеличения размера входных данных. Однако этот показатель не расскажет вам о том, насколько быстро работает ваш алгоритм.  «О большое» измеряет эффективность и оптимальность алгоритма, основываясь на временной и пространственной сложности.    Что такое временная и пространственная сложность? Один из самых основных факторов, который влияет на оптимальность и эффективность вашей программы – это оборудование, ОС и ЦП, которые вы используете.  Однако при анализе оптимальности алгоритма это не учитывается. Куда важнее учесть временную и пространственную сложность как функцию, которая зависит от размера входных данных.  Временная сложность алгоритма – это то, сколько времени потребуется для выполнения алгоритма в зависимости от размера входных данных. Аналогично пространственная сложность – это то, сколько пространства или памяти потребуется для выполнения алгоритма в зависимости от размера входных данных.  В данной статье мы рассмотрим временную сложность. Эта статья станет для вас своего рода шпаргалкой, которая поможет вам понять, как можно рассчитать временную сложность для любого алгоритма. Почему временная сложность зависит от размера входных данных? Для того, чтобы полностью понять, что же такое «зависимость от входных данных», представьте, что у вас есть некий алгоритм, который вычисляет сумму чисел, основываясь на ваших входных данных. Если вы ввели 4, то он сложит 1+2+3+4, и на выходе получится 10; если вы ввели 5, то на выходе будет 15 (то есть алгоритм сложил 1+2+3+4+5). const calculateSum = (input) => {  let sum = 0;  for (let i = 0; i <= input; i++) {    sum += i;  }  return sum; }; В приведенном выше фрагменте программного кода есть три оператора: Давайте посмотрим на картинку выше. У нас есть три оператора. При этом, так как у нас есть цикл, то второй оператор будет выполняться, основываясь на размере входных данных, поэтому, если на входе алгоритм получает 4, то второй оператор будет выполняться четыре раза. А значит, в целом алгоритм выполнится шесть (4+2) раз.  Проще говоря, алгоритм будет выполняться input+2 раза; input может быть любым числом. Это говорит о том, что алгоритм выражается в терминах входных данных. Иными словами, это функция, которая зависит от размера входных данных.  Для понятия «О большое» есть шесть основных типов сложностей (временных и пространственных): Постоянное время: O1 Линейное время: On Логарифмическое время: On log n  Квадратичное время: On2 Экспоненциальное время: O2n Факториальное время: On! Прежде чем мы перейдем к рассмотрению всех этих временных сложностей, давайте посмотрим на диаграмму временной сложности «О большого».  Диаграмма временной сложности «О большого» Диаграмма «О большого» - это асимптотические обозначение, которое используется для выражения сложности алгоритма или его оптимальности в зависимости от размера входных данных.  Данная диаграмма помогает программистам определить сценарий наихудшего случая, а также оценить время выполнения и объем требуемой памяти.  Следующий график иллюстрирует сложность «О большого»:  Глядя на приведенную выше диаграмму, можно определить, что O1 – постоянное время выполнения алгоритма, является наилучшим вариантом. Это означает, что ваш алгоритм обрабатывает только один оператор без какой-либо итерации. Дальше идет Olog n , что тоже является неплохим вариантом, и другие: O1 – отлично/наилучший случай Olog n  – хорошо On – удовлетворительно On log n  – плохо On2, O2n, On! – ужасно/наихудший случай Теперь вы имеете представление о различных временных сложностях, а также можете понять, какие из них наилучшие, хорошие или удовлетворительные, а какие плохие и наихудшие (плохих и наихудших временных сложностей следует избегать). Следующий вопрос, который может прийти на ум: «какой алгоритм какую сложность имеет?» И это вполне логичный вопрос, ведь эта статья задумывалась как шпаргалка. ?  Когда ваши расчеты не зависят от размера входных данных, то это постоянная временная сложность - O1. Когда размер входных данных уменьшается в два раза, например, при итерации, обработке рекурсии и т.д., то это логарифмическая временная сложность - Olog n . Когда у вас один цикл в алгоритме, то это линейная временная сложность - On. Когда у вас есть вложенные циклы, то есть цикл в цикле, то это квадратичная временная сложность - On2. Когда скорость роста удваивается при каждом добавлении входных данных, то это экспоненциальная временная сложность - O2n. Давайте перейдем к описанию временных сложностей. Для каждой будут приведены примеры. Отмечу, что в примерах я использовал JavaScript, но если вы понимаете принцип и что из себя представляет каждая временная сложность, то не имеет значения, какой язык программирования вы выберите.  Примеры временных сложностей «О большого» Постоянное время: O1 Когда алгоритм не зависит от размера входных данных n, то говорят, что он имеет постоянную временную сложность порядка O1. Это значит, что время выполнения алгоритма всегда будет одним и тем же, независимо от размера входных данных.  Допустим, что задача алгоритма – вернуть первый элемент массива. Даже если массив состоит из миллиона элементов, временная сложность будет постоянной, если использовать следующий подход для решения задачи: const firstElement = (array) => {  return array[0]; }; let score = [12, 55, 67, 94, 22]; console.log(firstElement(score)); // 12 Приведенная выше функция выполняет лишь один шаг, а это значит, что функция работает за постоянное время, и ее временная сложность O1.  Однако, как уже было сказано, разные программисты могут найти разные способы решения задачи. Например, другой программист может решить, что сначала надо пройти по массиву, а затем уже вернуть первый элемент: const firstElement = (array) => {  for (let i = 0; i < array.length; i++) {    return array[0];  } }; let score = [12, 55, 67, 94, 22]; console.log(firstElement(score)); // 12 Это просто пример – вряд ли кто-то будет решать эту задачу таким способом. Но здесь уже есть цикл, а значит алгоритм не будет выполняться за постоянное время, здесь в игру вступает линейное время с временной сложностью On. Линейное время: On Линейная временная сложность возникает, когда время работы алгоритма увеличивается линейно с размером входных данных. Когда функция имеет итерацию по входному значению n, то говорят, что она имеет временную сложность порядка On. Допустим, алгоритм должен вычислить и вернуть факториал любого числа, которое вы введете. Это значит, что если вы введете число 5, то алгоритм должен выполнить цикл и умножить 1·2·3·4·5, а затем вывести результат – 120: const calcFactorial = (n) => {  let factorial = 1;  for (let i = 2; i <= n; i++) {    factorial = factorial * i;  }  return factorial; }; console.log(calcFactorial(5)); // 120 Тот факт, что время выполнения алгоритма зависит от размера входных данных, подразумевает наличие линейной временной сложности порядка On. Логарифмическое время: Olog n  Это чем-то похоже на линейную временную сложность. Однако здесь время выполнения зависит не от размера входных данных, а от их половины. Когда размер входных данных уменьшается на каждой итерации или шаге, то говорят, что алгоритм имеет логарифмическую временную сложность.  Такой вариант считается вторым сверху списка лучших, так как ваша программа работает лишь с половиной входных данных. И при всем при этом, размер входных данных уменьшается с каждой итерацией.  Отличный пример – функция бинарного поиска, которая делит отсортированный массив, основываясь на искомом значения.  Допустим, что нам надо найти индекс определенного элемента в массиве с помощью алгоритма бинарного поиска: const binarySearch = (array, target) => {  let firstIndex = 0;  let lastIndex = array.length - 1;  while (firstIndex <= lastIndex) {    let middleIndex = Math.floor((firstIndex + lastIndex) / 2);    if (array[middleIndex] === target) {      return middleIndex;    }    if (array[middleIndex] > target) {      lastIndex = middleIndex - 1;    } else {      firstIndex = middleIndex + 1;    }  }  return -1; }; let score = [12, 22, 45, 67, 96]; console.log(binarySearch(score, 96)); Приведенный выше программный код демонстрирует бинарный поиск. Судя по нему, вы сначала получаете индекс среднего элемента вашего массива, дальше вы сравниваете его с искомым значением и, если они совпадают, то вы возвращаете этот индекс. В противном случае, если они не совпали, вы должны определить, искомое значение больше или меньше среднего, чтобы можно было изменить первый и последний индекс, тем самым уменьшив размер входных данных в два раза. Так как на каждой такой итерации размер входных данных уменьшается в два раза, то данный алгоритм имеет логарифмическую временную сложность порядка Olog n . Квадратичное время: On2 Когда в алгоритме присутствуют вложенные циклы, то есть цикл в цикле, то временная сложность уже становится квадратичной, и здесь нет ничего хорошего.  Представьте, что у вас есть массив из n элементов. Внешний цикл будет выполняться n раз, а внутрениий – n раз для каждой итерации внешнего цикла, и, соответственно, общее количество итераций составит n2. Если в массиве было 10 элементов, то количество итераций будет 100 (102). Ниже приведен пример, где сравниваются элементы для того, чтобы можно было вывести индекс, когда найдутся два одинаковых: const matchElements = (array) => {  for (let i = 0; i < array.length; i++) {    for (let j = 0; j < array.length; j++) {      if (i !== j && array[i] === array[j]) {        return `Match found at ${i} and ${j}`;      }    }  }  return "No matches found ?"; }; const fruit = ["?", "?", "?", "?", "?", "?", "?", "?", "?", "?"]; console.log(matchElements(fruit)); // "Match found at 2 and 8" В этом примере есть вложенный цикл, а значит, здесь будет квадратичная временная сложность порядка On2.  Экспоненциальное время: O2n Экспоненциальная временная сложность появляется, когда скорость роста удваивается с каждым добавлением входных данных n, например, когда вы обходите все подмножества входных элементов. Каждый раз, когда единицу входных данных увеличивают на один, то количество итераций, которые выполняет алгоритм, увеличиваются в два раза.  Хороший пример – рекурсивная последовательность Фибоначчи. Допустим, дано число, и необходимо найти n-ый элемент последовательности Фибоначчи.  Последовательность Фибоначчи – это математическая последовательность, в которой каждое число является суммой двух предыдущих; первые два числа – 0 и 1. Третье число – 1, четвертое – 2, пятое – 3 и т.д. (0, 1, 1, 2, 3, 5, 8, 13, …). Соответственно, если вы введете число 6, то выведется 6-й элемент в последовательности Фибоначчи – 8: const recursiveFibonacci = (n) => {  if (n < 2) {    return n;  }  return recursiveFibonacci(n - 1) + recursiveFibonacci(n - 2); }; console.log(recursiveFibonacci(6)); // 8 Приведенный выше алгоритм задает скорость роста, которая удваивается каждый раз, когда добавляются входные данные. А значит, данный алгоритм имеет экспоненциальную временную сложность порядка O2n. Заключение Из данной статьи вы узнали, что такое временная сложность, как определить оптимальность алгоритма с помощью «О большого», а также рассмотрели различные временные сложности с примерами. 
img
Механизм передачи данных или информации между двумя связанными устройствами, соединенными по сети, называется режимом передачи. Режим передачи также называется режимом связи. Он указывает направление потока сигнала между двумя связанными устройствами. Шины и сети предназначены для обеспечения связи между отдельными устройствами, связанными по сети. Категории режимов транзакций Существует три категории режимов передачи: симплексный режим полудуплексный режим полнодуплексный режим Симплексный режим В этом типе режима передачи связь является однонаправленной, то есть данные могут передаваться только в одном направлении. Это означает, что вы не можете отправить сообщение обратно отправителю, как на улице с односторонним движением. Из этих двух устройств только одно может отправлять или передавать по каналу связи, а другое-только принимать данные. Пример: Симплексную дуплексную передачу можно увидеть между компьютером и клавиатурой. Телевизионное вещание, телевидение и пульт дистанционного управления также являются примерами симплексной дуплексной передачи. Другой пример симплексной передачи включает в себя акустическую систему. Диктор говорит в микрофон, и голос передается через усилитель, а затем на динамики. Преимущество Симплексного режима В этом режиме станция может использовать всю пропускную способность канала связи, поэтому одновременно может передаваться больше данных. Недостаток Симплексного режима В основном коммуникации требуют двустороннего обмена данными, но это однонаправленный обмен, поэтому здесь нет связи между устройствами. Полудуплексный Режим В полудуплексном режиме каждая станция может также передавать и принимать данные. Поток сообщений может идти в обоих направлениях, но не одновременно. Вся пропускная способность канала связи используется в одном направлении за один раз. В полудуплексном режиме отправитель отправляет данные и ожидает их подтверждения, а если есть какая-либо ошибка, то получатель может потребовать от него повторной передачи этих данных. Благодаря этому возможно обнаружение ошибок. Примером полудуплексного режима является рация. В рации с одной стороны говорят в микрофон устройства, а с другой-кто-то слушает. После паузы другой говорит, и первое лицо слушает. Пример: Это как однополосная дорога с двунаправленным движением. Пока машины едут в одном направлении, машины, идущие в другую сторону, должны ждать. Преимущество Полудуплексного режима В полудуплексном режиме вся пропускная способность канала берется на себя любым из двух устройств, передающих одновременно. Недостаток Полудуплексного режима Это вызывает задержку в отправке данных в нужное время, так как когда одно устройство отправляет данные, то другое должно ждать отправки данных. Полный Дуплексный Режим В полнодуплексном режиме связь является двунаправленной, то есть поток данных идет в обоих направлениях одновременно. С обоих концов прием и передача данных возможны одновременно. Полнодуплексный режим имеет два физически отдельных пути передачи, один из которых предназначен для движения трафика в одном направлении, а другой-для движения трафика в противоположном направлении. Это один из самых быстрых способов связи между устройствами. Пример: По телефонной линии два человека общаются друг с другом, оба могут говорить и слушать друг друга одновременно, это полнодуплексная передача. Другой пример - улица с двусторонним движением, движение по которой осуществляется одновременно в обоих направлениях. Преимущество Полнодуплексного режима Обе станции могут отправлять и получать данные одновременно, поэтому емкость канала может быть разделена. Недостаток Полнодуплексного режима Полоса пропускания канала связи делится на две части, если между устройствами нет выделенного пути.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59