Настройка сети из консоли в ubuntu

Настройка dnsmasq как DHCP

DHCP — это один из базовых сервисов в локальных сетях, благодаря которому отпадает необходимость конфигурировать настройки сети вручную. Он позволяет выдавать автоматически такие настройки как IP-адрес, адрес DNS-сервера и шлюза по-умолчанию, а также резервировать IP-адреса по MAC-адресам.

Для того, чтобы dnsmasq работал как DHCP-сервер, в конфигурационном файле /etc/dnsmasq.conf должны присутствовать следующие строки (они могут уже присутствовать в конфиге, их надо только раскомментировать и исправить):

domain=mydomain.com

Эта строка не обязательна, она нужна в том случае, если вы хотите, чтобы хосты, получающие адреса по DHCP, имели FQDN-имя, то есть полное имя, включающее имя домена.

interface=eth1

Сетевой интерфейс, на котором будет работать сервис. Обычно основной интерфейс eth0 подключен к провайдеру, поэтому его крайне нежелательно указывать в качестве интерфейса для работы сервиса.

dhcp-range=192.168.0.20,192.168.0.100,24h

Интервал выдаваемых адресов и время аренды адресов (в данном случае 24 часа).

dhcp-host=80:15:AA:BB:CC:DD,192.168.0.10

Резервация IP-адреса по MAC-адресу, чтобы устройство с указанным MAC-адресом всегда получало указанный IP-адрес.

dhcp-option=1,255.255.255.0

Задать значение опции DHCP с номером 1. Опция с номером 1 — это маска подсети (netmask).

dhcp-option=3,192.168.0.1

Задать значение опции DHCP с номером 3. Опция с номером 3 — это шлюз по умолчанию (default gateway).

Этих опций в небольшой офисной или домашней сети обычно достаточно.

Список всех опций DHCP можно посмотреть на странице IANA (Internet Assigned Numbers Authority).

После задания настроек надо рестартовать сервис:

service dnsmasq restart

Теперь можно задавать настройки на компьютерах в сети на автоматическое получение адресов по DHCP.

Зачем переходить на Linux

Если хотите перестать заниматься цифровым пиратством, начните с установки Linux. А еще это будет весомым плюсом, если приходите на работу со своим ноутбуком.

◆ В Linux есть магазин приложений. Когда пользователи после переустановки Windows начинают настройку стороннего ПО, они либо идут на торренты, либо начинают занимательное путешествие по файлообменным помойкам и рекламным сайтам в поисках установщика нужной программы.

Только не нужно говорить, что в Windows есть свой магазин приложений, я уже пробовал, как он работает и чуть не сошел с ума.

Пользователи Linux без проблем могут установить весь нужный софт в пару нажатий мышью и при этом не переживать, что после установки придется чистить систему от всевозможных mail.ru-агентов или Амиго-браузеров.

◆ Архитектура Linux менее подвержена вирусам. Большая часть вредоносного ПО сейчас разрабатывается именно для Windows. Сложности с поиском приложений и желание пользователей скачать что-то бесплатно буквально открывают двери для троянов и вирусов.

В Linux имеется более сложная система разграничения прав доступа, модульность компонентов и монолитное ядро обеспечивают гораздо большую безопасность, чем “дырявый” системный реестр в Windows.

◆ Linux потребляет меньше ресурсов компьютера. Для современных ПК с многоядерными процессорами и двузначным числом ОЗУ это не будет преимуществом, но вот старый системник или ноутбук с двумя ядрами и парой планок ОЗУ по 2 ГБ на Linux просто оживет.

Это отличное преимущество, если хотите отдать свой устаревший ПК родителям или бабушкам, решили настроить запылившийся ноут для дистанционного обучения ребенка либо хотите настроить стоящий без дела системник в качестве медиасервера.

◆ Исходный код Linux открытый. Это позволяет энтузиастам быстрее находить уязвимости, а разработчикам устранять их. Еще такой подход позволяет моментально выявить шпионские или вредоносные части кода, предупредить об этом общественность и отказаться от проблемного дистрибутива.

Много ли пользователи знают о механизмах слежки и шпионских скриптах в Windows? Часть из них известна сообществу энтузиастов, но отключать их придется в ручном режиме после установки системы.

◆ У Linux есть множество дистрибутивов. Если разделение Windows на версии направлено только на то, чтобы отключить у пользователя фишки, за который он не хочет платить, то в мире Linux есть действительно отличающиеся друг от друга сборки.

Есть дистрибутивы, которые хорошо оптимизированы под определенное железо, например, Clear Linux OS от Intel. Есть версии с упором на защиту пользовательских данных, анонимность и конфиденциальность вроде Kodachi. Есть сборки, которые буквально оживляют старое железо и нетребовательны к ресурсам, например, antiX или SliTaz (образ последнего занимает менее 100 Мб и может полностью харниться в ОЗУ).

Сборка Ubuntu Ultimate Edition может похвастаться полным набором предустановленного ПО и драйверов. Одними из самых популярных и стабильных являются дистрибутивы Debian и Ubuntu, а одним из самых простых и дружелюбных – Linux Mint.

◆ Linux имеет большое количество графических интерфейсов и элементов управления. Это не просто изменяемые обои, украшательства или съедающие ОЗУ дополнения. Это специально разработанные модули, которые могут добавляться или убираться при необходимости, делая систему такой, какой ее хочет видеть пользователь.

Самые опытные могут и вовсе обойтись командной строкой без графического интерфейса, а самые дотошные смогут превратить Linux в практически в полное подобие Windows или macOS.

◆ Практически любую версию Linux можно запустить с флешки. Так называемый Live-режим есть у большинства распространенных сборок и дистрибутивов. Вы можете попробовать любую версию Linux, посмотреть на графический интерфейс, встроенный набор ПО и драйверов без полной переустановки системы.

Еще подобные версии удобно использовать для восстановления системы или вовсе на компьютерах без накопителя. Запускается такая версия ОС с флешки за пару минут и все готово к работе.

Все это делает Linux более привлекательной операционной системой для многих пользователей Windows.

Тестирование балансировки нагрузки(bonding)

Команда ifconfig — a теперь содержит два физических(enp3s0 и enp5s0) и один виртуальный(bond0) интерфейсы

ifconfig -a
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 192.168.1.59 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::600e:f8ff:feea:e59b prefixlen 64 scopeid 0x20<link>
ether 62:0e:f8:ea:e5:9b txqueuelen 1000 (Ethernet)
RX packets 687879 bytes 153481174 (153.4 MB)
RX errors 0 dropped 54537 overruns 0 frame 0
TX packets 42105 bytes 3154748 (3.1 MB)
TX errors 0 dropped 3 overruns 0 carrier 0 collisions 0

enp3s0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
inet 192.168.1.57 netmask 255.255.255.0 broadcast 192.168.1.255
ether 62:0e:f8:ea:e5:9b txqueuelen 1000 (Ethernet)
RX packets 343650 bytes 76307974 (76.3 MB)
RX errors 0 dropped 28247 overruns 0 frame 0
TX packets 21053 bytes 1574674 (1.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

enp5s0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
inet 192.168.1.58 netmask 255.255.255.0 broadcast 192.168.1.255
ether 62:0e:f8:ea:e5:9b txqueuelen 1000 (Ethernet)
RX packets 344229 bytes 77173200 (77.1 MB)
RX errors 0 dropped 27265 overruns 0 frame 0
TX packets 21052 bytes 1580074 (1.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 289 bytes 24040 (24.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 289 bytes 24040 (24.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Поддержи автора статьи, просмотри рекламу ↓↓↓

Через виртуальный интерфейс будет пропущен основной трафик. Балансировка на примере команды ping отработает следующим образом.

Поддержи автора статьи, просмотри рекламу ↓↓↓

Поддержи автора статьи, просмотри рекламу ↓↓↓

Поведение системы в такой ситуации происходит по сценарию: сетевой трафик проходит через действующий сетевой интерфейс(enp5s0), несмотря на отключение смежного интерфейса(enp3s0). Сервер подготавливается под установки роли Гипервизора, поэтому данный этап будет иметь важный характер для сохранения отказоустойчивости.

Настройка сети через файл конфигурации.

Для настройки статического или динамического IP адреса нам надо отредактировать файл конфигурации сетевых интерфейсов — /etc/network/interfaces мы будем редактировать его с помощью текстового редактора nano.(Рис.5) Сразу скажу что для того чтобы сохранить документ в nano надо нажать «Ctrl+o», а чтобы закрыть «Ctrl+x».

nano /etc/network/interfaces

Если вы авторизованы не под root, не забудьте добавить sudo и ввести пароль суперпользователя,  а то не получится сохранить измененный файл interfaces.

sudo nano /etc/network/interfaces

Рис.5 — Команда для редактирования файла /etc/network/interfaces.

Получение настроек сети по DHCP.

Для получения настроек сети по DHCP, в файле /etc/network/interfaces  достаточно указать всего две строки.(Рис.6)

auto ens33
iface ens33 inet dhcp

Лично у меня они были написаны по умолчанию, так как сеть была настроена при установке. Пояснения в пункте .

Если у вас не запущен DHCP клиент, то запустить его можно командой dclient с указанием интерфейса ens33.

dclient ens33

Рис.6 — Файл конфигурации /etc/network/interfaces для получения настроек сети по DHCP.

Указание настроек сети вручную.

Пишем конфигурацию интерфейса для статичного IP адреса.(Рис.7)

auto ens33
iface ens33 inet static
     address 192.168.3.209
     netmask 255.255.255.0
     gateway 192.168.3.1
     dns-nameservers 8.8.8.8 192.168.3.1
     dns-search itdeer.loc itdeer.ru

Пояснения в пункте .

Рис.7 — Файл конфигурации /etc/network/interfaces для указания настроек сети вручную..

Описание опций.

Рассмотрим описание опций, для того чтоб вы понимали что написано в пунктах Получение настроек по DHCP и Указание настроек сети вручную.

  • auto ens33 — означает что наш интерфейс «ens33» будет автоматически подключен при загрузке системы.
  • iface ens33 inet static — указывается семейство протоколов tcp/ip(inet или inet6) и способ получения адреса(static или dhcp).
  • address 192.168.3.209 — указываем IP адрес.
  • netmask 255.255.255.0 — указываем маску сети.
  • gateway 192.168.3.1 — указываем основной шлюз.
  • dns-nameservers 8.8.8.8 192.168.3.1 — указываем DNS сервера можно указать несколько через пробел.
  • dns-search itdeer.loc itdeer.ru — указываем DNS суффиксы, через пробел, допустим если у нас существует домен itdeer.ru то мы можем обратиться к компьютеру внесённому в этот домен, к примеру controller тогда ubuntu попытается разрешить имя controller.itdeer.ru.
  • dns-domain itdeer.ru — альтернатива dns-search, но указывается только один суффикс (название домена).

После редактирования файла /etc/network/interfaces, применить изменения можно двумя способами:

Первый — Перезагрузить систему.

reboot

или

init 6

Второй — Если же вы не хотите перезагружать систему, то  нужно сначала отчистить конфигурацию интерфейса,

ip addr flush ens33

а после перезапустить службу сети.

service networking restart

Если вы сменили только шлюз по умолчанию, настройки DNS серверов или суффиксов, то достаточно просто перезапустить сетевую службу.

service networking restart

Далее смотрите вывод команды ifconfig, изменения должны должны быть применены.

Настройка сети через терминал в Ubuntu

Тут мы рассмотрим автоматическую настройку сети для Ubuntu 16.04 без Network Manager с помощью стандартных скриптов системы, которые остались от Upstart и пока всё ещё используются. Давайте сначала определим, какие шаги нам нужно предпринять, чтобы всё заработало:

  • Включаем сетевой интерфейс и подключаемся к сети;
  • Устанавливаем IP-адрес;
  • Получаем адреса DNS-серверов.

Собственно, готово. Эти шаги очень символичны, потом что система всё сделает за нас сама. Нам нужно только выполнить нужные настройки. Но сначала давайте посмотрим, какие сетевые интерфейсы подключены к системе. Мне нравится команда:

Но если хотите, можете использовать ifconfig:

В нашей системе только один интерфейс – это enp0s3, есть еще lo, но он виртуальный и указывает на эту машину.

Настройки сети находятся в файле /etc/network/interfaces.

Нас будут интересовать в этом файле строчки auto и iface. Первая указывает, что нужно активировать интерфейс при загрузке, вторая же определяет настройки самого интерфейса.

Настройка динамического получения IP-адреса

Добавьте в этот файл такие строки, чтобы запускать интерфейс при загрузке и получать IP-адрес автоматически по DHCP:

auto enp0s3 iface enp0s3 inet dhcp

Синтаксис строки auto прост. Он состоит из самой команды и имени сетевого интерфейса. Рассмотрим подробнее:

$ iface интерфейс inet тип

Тип получения IP-адреса может иметь несколько значений, но нас в этой статье будут интересовать только два: dhcp и static.

После завершения настройки сохраните файл и перезапустите сетевой сервис:

sudo service networking restart

Всё, если сетевой кабель подключён, и вы всё сделали правильно, Сеть будет работать.

Настройка статического адреса Ubuntu

При настройке статического IP-адреса компьютер не будет связываться с DHCP-сервером, поэтому здесь придётся указать намного больше параметров.

Содержимое нашего конфигурационного файла будет выглядеть вот так:

auto eth0 iface eth0 inet static address 192.168.1.7 gateway 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255

С первыми двумя строчками все понятно, а следующие задают параметры настройки интерфейса:

  • address – наш IP-адрес;
  • gateway – шлюз, через который будем получать доступ в интернет;
  • netmask – маска сети;
  • network – адрес сети, имеет тот же адрес, что и шлюз, только с нулем вместо единицы;
  • broadcast – широковещательный адрес сети, отправленный на него пакет придет всем компьютерам локальной сети.

Как видите, network и broadcast – это первый и последний IP-адреса сети. Теперь сохраните файл и перезапустите сеть:

sudo service networking restart

Если все параметры были указаны правильно, всё будет работать. Но если допущена хоть одна ошибка, доступ к сети вы не получите.

Это была автоматическая настройка локальной сети Гbuntu, но я ещё расскажу, как всё сделать вручную, без конфигурационных файлов.

Настройка сети в Ubuntu Server 20.04

Есть два пути настройки сетевых интерфейсов:

  1. Получение IP адресов при помощи DHCP — автоматическая настройка
  2. Настройка статических IP адресов

Если вы используете какой либо маршрутизатор, то идем по первому пути. Но сначала давайте определимся с именами интерфейсов в нашей системе. Для этого воспользуемся командой ifconfig.

Да, на чистой системе данная утилита не установлена по умолчанию. Её необходимо будет установить. Ну или можно воспользоваться командой ip. Я же человек старых правил ))), мне все-таки по душе утилита ifconfig поэтому набираем:

Вывод команды покажет все имеющиеся в системе сетевые интерфейсы. В моей системе команды выдает следующий результат:

Как видим из вывода имеются три сетевых интерфейса: ; ; .

Интерфейс enp0s3 выступает в качестве WAN интерфейса для системы. Остальные два enp0s8 и enp0s9 подключены к двум локальным сетям. В дальнейшем мы их объединим в сетевой мост.

Настройка сети в Ubuntu Server используя networkd и DHCP.

И так с интерфейсами определились, давайте теперь настроим наш интерфейс, который смотрит в инет, на получение автоматических настроек сети по DHCP

Открываем файл настроек Netplan

Файл должен выглядеть следующим образом (если не так, то редактируем):

Далее применим изменения:

Если в синтаксисе нет ошибок, то изменения применятся через 120 секунд, ну или сразу если Вы нажмёте

Настройка сети в Ubuntu Server используя networkd и статические маршруты.

Если Вы пошли вторым путем и хотите настроить все IP адреса сами, то вот пример для настройки статических адресов:

  • addresses — это ip адрес который будет назначен вашей сетевой карте.
  • gateway4 — ip адрес вашего роутера
  • nameservers — тут перечисляются DNS сервера. Первый опять же наш роутер.
  • search — тут указываем домен в котором будет произведен поиск. Домен можно настроить при помощи DNS сервера

Далее сохраняем изменения:

Вместо поскриптума

Если нужно выключить и включить сеть в операционной системе Linux, используем всё ту же известную нам команду ifconfig.

Например, следующей командой мы выключим сетевую карту eth0:

sudo ifconfig eth0 down

А вот команда, включающая сетевую плату в Linux:

sudo ifconfig eth0 up

Также мы можем полностью остановить работу сетевых интерфейсов:

service network stop

Либо так:

/etc/init.d/network stop

Теперь включаем всё обратно:

service network start

Либо так:

/etc/init.d/network restart

На этом всё. Если хотите получить более профессиональные навыки Linux-администрирования, добро пожаловать на специальный курс в OTUS:

По материалам статей:
— https://set-os.ru/network-linux-setup/;
— https://itshaman.ru/articles/54.

Настроить DHCP-клиент через среду рабочего стола Ubuntu

Вы также можете использовать другую виртуальную машину с Ubuntu 20.04 Desktop в качестве DHCP-клиента. В Ubuntu метод конфигурации по умолчанию установлен как DHCP. Если он не берет IP-директор от DHCP-сервера, измените настройку IPV4 в вашей сети. Нажмите, перейдите в «Настройки» и перейдите в настройки проводной или беспроводной сети. В вашей системе должно появиться следующее окно:

Установите всю конфигурацию IPV4, как показано на скриншоте выше.

Теперь отобразите сведения о сети, щелкнув вкладку «Подробности» следующим образом:

Проверьте конфигурацию, выполнив следующую команду:

Вы увидите, что IP-адрес назначен сетевому интерфейсу.

Вы также можете использовать хост-компьютер в своей системе в качестве DHCP-клиента. Однако, чтобы получить IP-адрес, не перезагружайте хост-компьютер, потому что в этом случае Virtualbox будет отключен, поэтому в системе не будет запущен DHCP.

Важно отметить, что если вы используете мобильные устройства или хост-машины в качестве DHCP-клиента, скорее всего, они уже подключены к этой сети. Однако они будут запрашивать у DHCP-сервера тот же IP-адрес, который был выделен ранее

Однако, если IP-адрес не попадает в указанный вами диапазон, тогда маршрутизатору будет отправлен запрос.

Как указать DNS сервер

Остался последний из основных сетевых параметров — dns сервер. С ним в debian и ubuntu есть определенная путаница. Традиционно в linux для установки dns серверов используется файл /etc/resolv.conf. Но в какой-то момент в этих дистрибутивах появилась программа resolvconf, которая стала управлять настройками dns в системе. В итоге, файл resolv.conf постоянно перезаписывается этой программой. Нужна она в первую очередь для систем, где dns сервера постоянно меняются

Она следит за их изменением и корректно передает информацию об изменении программам, для которых это важно. Я лично не знаю таких программ и мне не приходилось сталкиваться с ситуацией, когда это было необходимо

Если я не ошибаюсь, то в минимальной конфигурации debian программа resolvconf не устанавливается, а вот в ubuntu она стоит. Проверить наличие программы очень просто:

Если в выводе пусто, значит ее нет. Тогда все очень просто. Для того, чтобы указать dns сервер, достаточно его записать в файл /etc/resolv.conf в следующем виде:

192.168.1.1 локальный dns сервер
77.88.8.1 публичный сервер Яндекса
8.8.8.8 публичный сервер Гугла
1.1.1.1 публичный сервер cloudflare

Я на всякий случай указал локальный сервер и 3 внешних. Если у вас стоит resolvconf, то в случае ненадобности, удалите его командой:

После этого сервер надо перезагрузить и удалить сломавшуюся символьную ссылку /etc/resolv.conf, а вместо нее создать файл с нужным содержанием, которое я привел выше.

Если же вам по какой-то причине необходима указанная выше программа, она у вас стоит и вы не хотите ее удалять, то адрес dns сервера необходимо указать в файле /etc/network/interfaces, добавив к параметрам интерфейса еще один:

Этот параметр нужно установить сразу после указания шлюза gateway. Несколько адресов разделяются пробелом.

Настройка статического IP-адреса на сервере Ubuntu

В Ubuntu 20.04 система идентифицирует сетевые интерфейсы, используя «предсказуемые имена сетевых интерфейсов».

Первым шагом к настройке статического IP-адреса является определение имени интерфейса Ethernet, который вы хотите настроить. Для этого используйте команду , как показано ниже:

Команда печатает список всех доступных сетевых интерфейсов. В этом примере имя интерфейса :

Файлы конфигурации Netplan хранятся в каталоге . Вероятно, вы найдете в этом каталоге один или несколько файлов YAML. Имя файла может отличаться от настройки к настройке. Обычно файл называется , или , но в вашей системе он может быть другим.

Если ваш облачный экземпляр Ubuntu снабжен cloud-init, вам необходимо отключить его. Для этого создайте следующий файл:

/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

Чтобы назначить статический IP-адрес в сетевом интерфейсе, откройте файл конфигурации YAML в текстовом редакторе :

/etc/netplan/01-netcfg.yaml

Прежде чем изменять конфигурацию, давайте кратко объясним код.

Каждый файл Netplan Yaml начинается с ключа, который содержит как минимум два обязательных элемента. Первый обязательный элемент — это версия формата конфигурации сети, а второй — тип устройства. Типом устройства может быть , , или .

В приведенной выше конфигурации также есть строка, показывающая тип средства . , если вы установили Ubuntu в серверном режиме, средство визуализации настроено на использование в качестве серверной части.

Под типом устройства ( ) вы можете указать один или несколько сетевых интерфейсов. В этом примере у нас есть только один интерфейс который настроен для получения IP-адресации от DHCP-сервера .

Чтобы назначить статический IP-адрес интерфейсу , отредактируйте файл следующим образом:

  • Установите DHCP на .
  • Укажите статический IP-адрес. В разделе вы можете добавить один или несколько IP-адресов IPv4 или IPv6, которые будут назначены сетевому интерфейсу.
  • Укажите шлюз.
  • В разделе установите IP-адреса серверов имен.

/etc/netplan/01-netcfg.yaml

При редактировании файлов YAML убедитесь, что вы следуете стандартам отступа кода YAML. Если синтаксис неправильный, изменения не будут применены.

После этого сохраните файл и примените изменения, выполнив следующую команду:

Проверьте изменения, набрав:

Это оно! Вы назначили статический IP-адрес своему серверу Ubuntu.

Используем только resolv.conf

Так делать не рекомендуется, но рассмотрим и этот вариант для полноты картины. Первым делом изменим имя файла на , а потом создадим свой :

# mv /etc/resolv.conf /etc/resolv.conf.back
# nano /etc/resolv.conf
#search example.com domain.local
# сервера DNS от Yandex
nameserver 77.88.8.8
nameserver 77.88.8.1

— если в запросе к резолверу задано короткое имя машины (без доменной части), то к нему будет поочередно добавляться каждый домен из заданного списка, пока не будет найдено полное совпадающее имя машины.

Для Ubuntu Desktop запретим вездесущему NetworkManager вмешиваться в процесс распознавания доменных имен:

# nano /etc/NetworkManager/conf.d/dns.conf
dns=no
rc-manager=unmanaged

Остановим службы и :

# systemctl stop resolvconf.service
# systemctl disable resolvconf.service
# systemctl stop systemd-resolved.service
# systemctl disable systemd-resolved.service
# reboot

Проверим, как теперь работает распознавание доменных имен:

$ nslookup ya.ru
Server:     77.88.8.8
Address:    77.88.8.8#53
Non-authoritative answer:
Name:   ya.ru
Address: 87.250.250.242
Name:   ya.ru
Address: 2a02:6b8::2:242

Поиск:
Linux • Ubuntu • Кеширование • Конфигурация • Настройка • Сервер • Установка • DNS • nslookup • resolv.conf

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
IP-файл
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: