что такое использование сети HOST и NONE в docker?
пытаясь понять сети docker, Docker автоматически создает следующие сети:
# docker network ls NETWORK ID NAME DRIVER SCOPE 67b4afa88032 bridge bridge local c88f997a2fa7 host host local 1df2947aad7b none null local
понял, что сетевой мост представляет сеть docker0, присутствующую во всех установках Docker, ссылаясь на ссылка.
может кто-нибудь помочь мне в понимании других сетей,хоста и нет, если возможно, с примерами.
автор: Here_2_learn
3 ответов
Docker by по умолчанию поддерживает 3 Сети:
1) Нет:
режим не будет настраивать IP-адрес для контейнера и не имеет доступа к внешней сети, а также для других контейнеров. Он имеет адрес замыкания на себя и может использоваться для выполнения пакетных заданий.
2) хост
в этом режиме контейнер поделится хостом сетевой стек и все интерфейсы с хоста будут доступны контейнеру. Имя хоста контейнера будет соответствовать имени хоста в хост-системе
ПОПУЛЯРНЫЕ IT-ПРОФЕСИИ | Кто такие айтишники?
даже конфигурация IP такая же, как IP хост-системы конфигурация
в режиме host и none не настроены напрямую, но по умолчанию Мостовая сеть может быть настроена, а также создать свои собственные пользовательские мостовые сети.
3) Режим Моста
это настройки по умолчанию сетевой режим, который позволит подключиться к другим интерфейсам хост-машины, а также среди контейнеров.
доступность к другим контейнерам возможна в режиме моста.
вместе с этими докер обеспечивает MACVLAN сеть, которая позволяет настроить несколько адресов уровня 2 (MAC) на одном физическом интерфейсе.
автор: Here_2_learn
предположим, что ваш образ docker поддерживает ifconfig, имя изображения «ubuntu / net»
затем запустите docker для хоста Containers»: < «145a2716d018c6fe8e9f93a81d88afd5a7437f0084ddb170c40761818e6d2f67»: < «Name»: «nginx», «EndpointID»: «ea6cfa433f41e21e572f17473c8e5f5e5d82e9f19646e66fe23abda20a3836b8», «MacAddress»: «02:42:ac:11:00:02», «IPv4Address»: «172.17.0.2/16», «IPv6Address»: «» >>,
Примечание: Вы можете увидеть, что автоматический IP-адрес, назначенный контейнеру из подсети конфигурации IPAM.
Локальная Сеть: — это специальная сеть, которая пропускает виртуальную сеть docker и прикрепляет контейнер непосредственно к интерфейсу хоста. Это действительно не рекомендуется, но в некоторых ситуациях может улучшить производительность сети с высокой пропускной способностью, а в других вы потеряете несколько преимуществ контейнеризации.
$ docker container run -it —net=host nginx:alpine /bin/bash
нет Сеть: это своего рода эквивалент наличия интерфейса на вашей машине, который ни к чему не привязан, но мы можем создать свой собственный. The none сеть добавляет контейнер в сетевой стек, специфичный для контейнера. Этому контейнеру не хватает сетевого интерфейса.
Netcat — что это такое
Источник: askdev.ru
.Net Core Host процесс Высокая загрузка ЦП в Windows 2016 IIS в приложении Asp.Net Core 2.2
Я разработал веб-сайт в Asp.Net Core 2.2 и размещен на виртуальной машине Azure (Windows Server 2016 Data Center) в IIS.
Я заметил, что когда я захожу на веб-сайт, то после нескольких запросов загрузка ЦП достигает 100%, и веб-сайт не отвечает. Когда я убиваю процесс (.Net Core Host), веб-сайт работает нормально, а затем снова процесс потребляет 100% ЦП.
Я много искал в этом и не нашел решения. Многие люди страдают от этого и все еще борются.
Кто-нибудь сталкивался с этой проблемой и нашел решение или какое-либо обходное решение? Я готов обновить (ядро 3.0) или понизить (2.0) свое приложение, если это решит проблему.
Любая помощь могла бы быть полезна.
Этот человек понизил версию ядра приложения до версии 2.1, которая решает проблему с высокой загрузкой процессора.
Комментарии (3)
Как мы можем помочь, ничего не зная о вашем приложении? Вы пробовали отключать что-то в своем приложении, пока это не перестанет происходить?
Это общая проблема с ядром asp.net. В любом случае, что мне делать, чтобы определить причину 100% загрузки ЦП?
Источник: reddeveloper.ru
Что такое Nginx
Nginx — мощный инструмент для развертывания веб-сервера, который при правильной настройке превосходит Apache. Области применения Nginx весьма обширны — от кэширования HTTP до создания инвертированного прокси-сервера.
Сейчас Nginx обслуживает примерно 30,8% всех существующих сайтов мира, о чьих веб-серверах есть информация в открытом доступе. Понимание, что из себя представляет Nginx и как этот программный продукт можно применять на практике, помогает эффективно решать задачи во многих областях IT-индустрии.
В этой статье рассмотрим принцип работы Nginx, а также его функционал, отличия от Apache и способ установки на конкретную ОС.
Что такое Nginx
Nginx (NGINX, Engine-X, «Энжин-кс») — это бесплатный веб- и почтовый прокси-сервер с непоточной (асинхронной) архитектурой и открытым кодом.
Разработку Nginx начал в 2002 году Игорь Сысоев для Rambler. А в 2004 году он стал доступен широкому кругу пользователей . С 2011 года серверное ПО начала выпускать уже собственная фирма Игоря, которая спустя 2 года запустила расширенную платную версию продукта (Nginx Plus). Весной 2019 года Nginx была выкуплена крупным американским девелопером F5 Networks.
Nginx работает на ОС Unix-типа и был успешно протестирован на OpenBSD, FreeBSD, Linux, Mac OS X, Solaris. На ОС Windows он стал доступен после выпуска бинарной сборки 0,7.52.
На данный момент функционалом пользуются такие известные платформы: Rambler, Begun, Yandex, SourceForge.net, WordPress.com, vkontakte.ru. Статистика показывает, что Nginx используют 22,3 млн веб-сайтов и 2,03 млн дополнительных активных сайтов.
Как работает Nginx
В отличие от обычного веб-сервера, Nginx не создаёт один поток под каждый запрос, а разделяет его на меньшие однотипные структуры, называемые рабочими соединениями. Каждое такое соединение обрабатывается отдельным рабочим процессом, а после выполнения они сливаются в единый блок, возвращающий результат в основной процесс обработки данных. Одно рабочее соединение может обрабатывать до 1024 запросов одного вида одновременно.
Практическое применение
- Отдельный порт/IP. При наличии большого количества статичного контента или файлов для загрузки, можно настроить на отдельном порту или IP-адресу, чтобы осуществлять раздачу. При большом количестве запросов рекомендуется ставить отдельный сервер и подключать к нему Nginx.
- Акселерированное проксирование. В таком случае все пользовательские запросы на статичный контент (картинки, простой HTML, JavaScript, CSS-файлы) поступают сначала на Nginx, а он их обрабатывает самостоятельно. При этом никаких изменений исходного кода не требуется.
- Nginx и FastCGI. Если поддерживается технология FastCGI, Apache вообще можно не использовать. Но в таком случае может потребоваться модификация кодов скриптов.
NGINX vs Apache
Веб-сервер Nginx по сравнению с Apache работает быстрее при отдаче статики и потребляет меньше серверных ресурсов. Его использует вместо или совместно с Apache для ускорения обработки запросов и уменьшения нагрузки. Это обуславливается тем, что большая часть тех возможностей, которые предлагает Apache, большинству обычных пользователей не нужно.
Поскольку широкий функционал Nginx требует и значительно больших ресурсов системы, постоянно применять полноценную связку «Nginx + Apache» нецелесообразно. Чаще оба веб-сервера используются в симбиозе — Nginx отдает статику и перенаправляет обработку скриптов Apache.
Нужно, чтобы Nginx и Apache работали без сбоев? Мощный VPS от Eternalhost позволит сохранить оптимальную производительность, даже при пиковых нагрузках.
Сильные и слабые стороны
- Оба серверы хорошо работают на системах типа Unix, но производительность Nginx на Windows заметно ниже.
- При одновременной работе Nginx оказывается в два раза быстрее Apache и использует меньше памяти. С динамическим контентом скорость равна.
- Для получения пользовательской поддержки можно обратиться на форум или почту компании, но у Apache Foundation есть с этим проблемы.
- Apache хорошо справляется с хостингом нескольких сайтов сразу, но Nginx показывает лучшую «гибкость» и эффективность работы с динамическим контентом.
Архитектура и конфигурация Nginx
Установка на Linux возможна двумя способами — из предварительно собранного бинарного файла (пакета) или с помощью исходного кода.
Первый способ самый простой, но второй позволяет подключить различные дополнительные модули, расширяющие возможности сервера. Установка с помощью исходного кода применяется сравнительно редко, поэтому ее особенности рассматривать здесь не будем.
Установка Nginx на Windows возможна с помощью интерфейса Win32 API. Однако, такой вариант будет гораздо менее эффективен, даже в серверных версиях и не может быть рекомендован для широкого применения.
Установка из предварительно собранного файла
- Необходимо воспользоваться командой:
sudo apt-get updatesudo apt-get install nginx
sudo nginx -v
Для конфигурации Nginx задействуется директория /etc/nginx/. При дальнейшей работе с сервером важны файл nginx.conf и папка sites-available.
Основные настройки можно в файле nginx.conf. Благодаря этому файлу, все параметры можно настроить по своему усмотрению. Работать можно и с настройками по умолчанию.
Важные элементы конфигурации
- worker_processes — количество рабочих процессов, которые будет использовать сервер. Число должно соответствовать количеству ядер процессора.
- worker_connections — это максимальное количество подключений каждого рабочего процесса. Чем выше показатель, тем больше человек обслуживается одновременно.
- access_log
- ln -s /usr/share/nginx/html /home/dmosk/ .
Директория sites-available содержит конфигурацию виртуальных хостов. Это позволяет веб-серверу настраиваться для множества сайтов с разной конфигурацией. Сайты в этой директории не задействуются и будут обслуживаться только, если сделать символьную ссылку на папку sites-enabled.
Настройка конфигурации
Root-каталог Nginx по умолчанию находится в директории /usr/share/nginx/html. Все файлы, которые размещаются в нем, автоматически обслуживаются веб-сервером. Место определяется файлом конфигурации, который можно найти в /etc/nginx/conf.d/default.conf.
Новые блоки server создаются через конфигурационные файлы в /etc/nginx/conf.d. Они буду загружаться при запуске Nginx, если заканчиваются на .conf.
Основной конфигурационный файл сервера находится в /etc/nginx/nginx.conf. Через него изменяются любые настройки.
Запуск
После настройки конфигурации, можно Nginx запустить с помощью команды sudo service nginx start .
Любое изменение необходимо подтверждать перезагрузкой через service nginx reload . Проверка статуса осуществляется через команду service nginx status .
Установка Nginx на CentOS
Рассмотрим практически установку Nginx на Linux, взяв за основу один из самых популярных дистрибутивов данной операционной системы – CentOS.
-
Добавляем yum-репозиторий Nginx на ОС с помощью команды:
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
sudo systemctl start nginx.service
ip addr show eth0 | grep inet | awk ‘< print $2; >’ | sed ‘s//.*$//’
sudo servicectl enable nginx.service
Заключение
Nginx представляет собой практически готовое решение для множества задач, требующих развёртывания полноценного веб-сервера или прокси. По ряду параметров Nginx превосходит своего «старшего коллегу» Apache. Главные из них — отсутствие требовательности к ресурсам и способность обрабатывать большое число соединений одновременно.
Понимание работы и принципа обработки запросов в Nginx позволяет грамотно масштабировать и балансировать нагрузку на современных сайтах, располагающих контентом разных категорий. А связка Nginx и Apache позволяет максимально расширить эффективность применения веб-сервера.
Чтобы Nginx, Apache и другой сложный «софт» работал, как швейцарские часы, разверните их на виртуальном сервере от Eternalhost! Это мощный и надёжный инструмент для самых неординарных задач в области IT.
Источник: eternalhost.net
Пишем простой сниффер под Windows
Цель: написать программу, которая будет захватывать сетевой трафик (Ethernet, WiFi), передающийся по протоколу IP.
Средства: Visual Studio 2005 или выше.
Подход, который здесь описан, не принадлежит лично автору и успешно применяется во многих коммерческих, а также категорически бесплатных программах (привет, GPL).
Сей труд предназначен прежде всего для новичков в сетевом программровании, которые, однако, имеют хотя бы базовые знания в области сокетов вообще, и windows-сокетов в частности. Здесь я часто буду писать общеизвестные вещи, потому что предметная область специфическая, если что-то пропустить — в голове будет каша.
Надеюсь, Вам будет интересно.
Теория (читать не обязательно, но желательно)
В данный момент подавляющее большинство современных информационных сетей базируются на фундаменте стека протоколов TCP/IP. Стек протоколов TCP/IP (англ. Transmission Control Protocol/Internet Protocol) — собирательное название для сетевых протоколов разных уровней, используемых в сетях. В настоящей статье нас будет интересовать в основном протокол IP — маршрутизируемый сетевой протокол, используемый для негарантированной доставки данных, разделяемых на так называемые пакеты (более верный термин – дейтаграмма) от одного узла сети к другому.
Особый интерес для нас представляют IP-пакеты, предназначенные для передачи информации. Это достаточно высокий уровень сетевой OSI-модели данных, когда можно обстрагироваться от устройства и среды передачи данных, оперируя лишь логическим представлением.
Совершенно логичным является то обстоятельство, что рано или поздно должны были появится инструменты для перехвата, контроля, учета и анализа сетевого трафика. Такие средства обычно называется анализаторами трафика, пакетными анализаторыми или снифферами (от англ. to sniff — нюхать). Это — сетевой анализатор трафика, программа или программно-аппаратное устройство, предназначенное для перехвата и последующего анализа, либо только анализа сетевого трафика, предназначенного для других узлов. [1]
Практика (разговор по существу)
На данный момент создано достаточно много программного обеспечения для прослушивания трафика. Наиболее известный из них: Wireshark. Естественно, пожинать его лавры цель не стоит — нас интересует задача перехвата трафика методом обычного «прослушивания» сетевого интерфейса. Важно понимать, что мы не собираемся заниматься взломом и перехватывать чужой трафик. Нужно всего лишь просматривать и анализировать трафик, который проходит через наш хост.
- Смотреть текущий поток трафика через сетевое соеднинение (входящий/исходящий/всего).
- Перенаправлять трафик для последующего анализа на другой хост.
- Теоретически, можно попытаться применить его для взлома WiFi-сети (мы ведь не собираемся этим заниматься?).
Как так? Очень просто.
Ключевым шагом в превращении простого сетевого приложения в сетевой анализатор является переключение сетевого интерфейса в режим прослушивания (promiscuous mode), что и позволит ему получать пакеты, адресованные другим интерфейсам в сети. Этот режим заставляют сетевую плату принимать все кадры, вне зависимости от того, кому они адресованы в сети. [2]
Начиная с Windows 2000 (NT 5.0) создать программу для прослушивания сегмента сети стало очень просто, т.к. ее сетевой драйвер позволяет перевести сокет в режим приёма всех пакетов.
Включение неразборчивого режима
long flag = 1; SOCKET socket; #define SIO_RCVALL 0x98000001 ioctlsocket(socket, SIO_RCVALL,
Наша программа оперирует IP-пакетами, и использует библиотеку Windows Sockets версии 2.2 и «сырые» сокеты (raw sockets). Для того чтобы получить прямой доступ к IP-пакету, сокет нужно создавать следующим образом:
Создание сырого сокета
s = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
Здесь вместо константы SOCK_STREAM (протокол TCP) или SOCK_DGRAM (протокол UDP), мы используем значение SOCK_RAW. Вообще говоря, работа с raw sockets интересна не только с точки зрения захвата трафика. Фактически, мы получаем полный контроль за формированием пакета. Вернее, формируем его вручную, что позволяет, например, послать специфический ICMP-пакет…
Идем дальше. Известно, что IP-пакет состоит из заголовка, служебной информации и, собственно, данных. Советую заглянуть сюда, чтобы освежит знания. Опишем в виде структуры IP-заголовок (спасибо отличной статье на RSDN [3]):
Описание структуры IP-пакета
typedef struct _IPHeader < unsigned char ver_len; // версия и длина заголовка unsigned char tos; // тип сервиса unsigned short length; // длина всего пакета unsigned short id; // Id unsigned short flgs_offset; // флаги и смещение unsigned char ttl; // время жизни unsigned char protocol; // протокол unsigned short xsum; // контрольная сумма unsigned long src; // IP-адрес отправителя unsigned long dest; // IP-адрес назначения unsigned short *params; // параметры (до 320 бит) unsigned char *data; // данные (до 65535 октетов) >IPHeader;
Главная функция алгоритма прослушивания будет выглядеть следующим образом:
Функция захвата одного пакета
IPHeader* RS_Sniff() < IPHeader *hdr; int count = 0; count = recv(RS_SSocket, (char*) if (count >= sizeof(IPHeader)) < hdr = (LPIPHeader)malloc(MAX_PACKET_SIZE); memcpy(hdr, RS_Buffer, MAX_PACKET_SIZE); RS_UpdateNetStat(count, hdr); return hdr; >else return 0; >
Здесь все просто: получаем порцию данных с помощью стандартной функции socket-функции recv, а затем копируем их в структуру типа IPHeader.
И, наконец, запускаем бесконечный цикл захвата пакетов:
Захватым все пакеты, которые попадут на наш сетевой интерфейс
while (true) < IPHeader* hdr = RS_Sniff(); // обработка IP-пакета if (hdr) < // печатаем заголовок в консоли >>
Немного оффтопика
Здесь и далее у некоторых важных функций и переменных автор сделал префкис RS_ (от Raw Sockets). Проект делал 3-4 года назад, и была шальная мысль написать полноценную библиотеку для работы с сырыми сокетами. Как это часто бывает, после получения сколь-нибудь значимых(для автора) результатов, энтузиазм угас, и дальше учебного примера дело не полшло.
В принципе, можно пойти дальше, и описать заголовки всех последующих протоколов, находящихся выше. Для этого необходимо анализировать поле protocol в структуре IPHeader. Посмотрите на пример кода (да, там должен быть switch, чёрт возьми!), где происходит раскрашивание заголовка в зависимости от того, какой протокол имеет пакет, инкапсулированный в IP:
/* * Выделение пакета цветом */ void ColorPacket(const IPHeader *h, const u_long haddr, const u_long whost = 0) < if (h->xsum) SetConsoleTextColor(0x17); // если пакет не пустой else SetConsoleTextColor(0x07); // пустой пакет if (haddr == h->src) < SetConsoleTextColor(BACKGROUND_BLUE | /*BACKGROUND_INTENSITY |*/ FOREGROUND_RED | FOREGROUND_INTENSITY); // «родной» пакет на отдачу >else if (haddr == h->dest) < SetConsoleTextColor(BACKGROUND_BLUE | /*BACKGROUND_INTENSITY |*/ FOREGROUND_GREEN | FOREGROUND_INTENSITY); // «родной» пакет на прием >if (h->protocol == PROT_ICMP || h->protocol == PROT_IGMP) < SetConsoleTextColor(0x70); // ICMP-пакет >else if(h->protocol == PROT_IP || h->protocol == 115) < SetConsoleTextColor(0x4F); // IP-in-IP-пакет, L2TP >else if(h->protocol == 53 || h->protocol == 56) < SetConsoleTextColor(0x4C); // TLS, IP with Encryption >if(whost == h->dest || whost == h->src) < SetConsoleTextColor(0x0A); >>
Однако это существенно выходит за рамки этой статьи. Для нашего учебного примера вполне достаточно будет посмотреть ip-адреса хостов, с которых и на которые идет трафик, и посчитать его количество в единицу времени(готовая программа в архиве в конце статьи).
Для того, чтобы отобразить данные IP-заголовка, необходимо реализовать функцию преобразования заголовка (но не данных) дейтаграммы в строку. В качестве примера реализации, можно предложить такой вариант:
Преобразование IP-заголовка в строку
inline char* iph2str(IPHeader *iph) < const int BUF_SIZE = 1024; char *r = (char*)malloc(BUF_SIZE); memset((void*)r, 0, BUF_SIZE); sprintf(r, «ver=%d hlen=%d tos=%d len=%d flags=0x%X offset=%d ttl=%dms prot=%d crc=0x%X src=%s dest=%s», BYTE_H(iph->ver_len), BYTE_L(iph->ver_len)*4, iph->tos, ntohs(iph->length), ntohs(iph->id), IP_FLAGS(ntohs(iph->flgs_offset)), IP_OFFSET(ntohs(iph->flgs_offset)), iph->ttl, iph->protocol, ntohs(iph->xsum), nethost2str(iph->src), nethost2str(iph->dest) ); return r; >
На основании приведенных выше базовых сведений, получается вот такая небольшая программа (жуткое название ss, сокр. от англ. simple sniffer), реализующая локальное прослушивание IP-трафика. Интерфейс ее приведен ниже на рисунке.
Исходный и бинарный код предоставляю как есть, таким как он был несколько лет назад. Сейчас мне на него страшно смотреть, и все же, он вполне читабельный (конечно же, нельзя быть таким самоуверенным). Для компиляции будет достаточно даже Visual Studio Express 2005.
- Сниффер работает в режиме пользователя, однако требует привилегии администратора.
- Пакеты не фильтруются, отображаясь как есть (можно добавить настраиваемые фильтры — предлагаю подробно рассмотреть эту тему в следующей статье, если интересно).
- WiFi-трафик тоже захватывается(все зависит от конкретной модели чипа, у Вас может и не работать, как у меня несколько лет назад), хотя есть AirPcap, которая чудесно это умеет делать, но стоит денег.
- Весь поток дейтаграмм логируется в файл (см. архив, приложенный в конце статьи).
- Программа работает в качестве сервера на порту 2000. Можно подключиться с помощью утилиты telnet к хосту и произвести мониторинг потоков трафика. Количество подключений ограничено двадцатью (код не мой, нашел на просторах сети и применял для экспериментов; удалять не стал — жалко)
Скачать проект Пароль на открытие: habr
upd: По совету Weageoo, выложил на гитхаб.
Источник: habr.com