Введение
Сразу предупреждаю, что данная статья это мое знакомство с lxc контейнерами. Я не имею практического опыта работы с ними, поэтому бездумно брать и применять мои рекомендации не стоит.
Не буду много писать о том, что такое контейнеры, чем они отличаются от виртуальных машин, и чем отличаются системы контейнеров (lxc, docker, openvz и др.) друг от друга. Все это можно найти в интернете на сайтах самих продуктов. Расскажу все своими словами.
- Главное отличие контейнера от виртуальной машины в том, что он запускается на том же уровне железа, что и хостовый сервер. Нет необходимости в виртуальных устройствах. Контейнер видит исходное железо. Это плюс к производительности. Используется ядро исходной системы и изоляция ресурсов внутри системы.
- Контейнер может масштабироваться по ресурсам до целого физического сервера. Например, контейнер может использовать тот же диск и файловую систему, что и хостовая машина. Нет необходимости разбивать диск на кусочки, как с виртуальными машинами и давать каждому по кусочку. В итоге, кто-то может свой диск вообще не использовать, а кому-то не хватит. С контейнерами можно поступить проще — все используют общий диск с хостом. Ограничений для диска как в виртуальной машине тем не менее все равно можно устанавливать. То же самое можно сделать с процессором и памятью.
Я почти не работал с контейнерами, кроме докера. С ним приходится работать только в связке с разработчиками. Для своих целей я его не использую, так как для моих задач он мне кажется неудобным. Не хочется сейчас здесь раскрывать эту тему, может быть в другой раз в статье о докер, если таковая будет. Но в целом докер я не люблю, особенно в продакшене.
Расскажу о том, почему мне захотелось посмотреть на контейнеры вместо виртуальных машин, которые использую повсеместно уже много лет.
- Как уже написал ранее, привлекает возможность использовать ресурсы хостовой машины напрямую. Взял системный диск с корнем / на 1Тб и все контейнеры его используют пока есть место.
- Легкий бэкап и доступ к файлам в контейнерах. Посмотреть файлы в контейнере можно просто зайдя в директорию контейнера с хостовой машины. Они все хранятся в открытом виде. Так их очень удобно бэкапить с помощью rsync, или каким-то другим способом.
- Легко копировать, разворачивать, управлять контейнерами. Они занимают мало места, можно руками с хоста поправить какой-то конфиг в системе контейнера.
Например, у меня есть достаточно мощные VDS серверы от ihor. 2 ядра, 8 гигов, 150Гб диск. Иногда то, что там размещается, не использует полностью ресурсы виртуальной машины. Хочется как-то их занять, но при этом никак не затрагивать основные проекты на виртуальной машине. Иногда хочется какие-то тестовые среды создавать для сайтов и пробовать новые версии софта. Для этого надо отдельную виртуалку брать. Вместо этого я решил попробовать lxc контейнеры.
Использовать lxc контейнеры в плане сети можно двумя способами:
- Заказывать каждому контейнеру отдельный внешний IP, настраивать для контейнера bridge на реальном сетевом интерфейсе и выпускать его напрямую в интернет. Этот вариант подходит, если есть ip адреса или не жалко для них денег. Так работать удобнее всего.
- Настраивать виртуальный bridge, настраивать NAT и проброс портов с хостовой машины внутрь контейнеров. Не очень удобно, но тем не менее вполне рабочий вариант.
Я расскажу про оба способа, так как проверял и то и другое. Настраивать все будем на CentOS 7.
Если у вас еще нет своего сервера с CentOS 8, то рекомендую мои материалы на эту тему:
- Установка CentOS 8.
- Настройка CentOS.
Включать интерфейс при загрузке
Чтобы не включать сетевой интерфейс каждый раз вручную можно в настройках прописать ONBOOT=yes
Как вариант можно перейти в
И отредактировать с помощью
vi
файл
ifcfg-ИМЯ_ИНТЕРФЕЙСА
— например
ifcfg-enp0s3
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
Либо под root использовать
sed
sudo sed -i sONBOOT=noONBOOT=yes /etc/sysconfig/network-scripts/ifcfg-enp0s3
Если команда выше вам не до конца понятна — изучите статью
«Основы sed»
Проверить получилось ли изменить ONBOOT на yes можно командой
grep ONBOOT !$
Подробную информацию о каждом сетевом интерфейсе можно получить выполнив nmcli connection show имя_интерфейса
Например:
nmcli connection show ens192
connection.id: ens192
connection.uuid: 5c2584c5-7d87-4826-ba2a-79713eb62a9a
connection.stable-id: —
connection.type: 802-3-ethernet
connection.interface-name: ens192
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 1618914913
connection.read-only: no
connection.permissions: —
connection.zone: —
connection.master: —
connection.slave-type: —
connection.autoconnect-slaves: -1 (default)
connection.secondaries: —
connection.gateway-ping-timeout: 0
connection.metered: unknown
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
802-3-ethernet.port: —
802-3-ethernet.speed: 0
802-3-ethernet.duplex: —
802-3-ethernet.auto-negotiate: no
802-3-ethernet.mac-address: —
802-3-ethernet.cloned-mac-address: —
802-3-ethernet.generate-mac-address-mask:—
802-3-ethernet.mac-address-blacklist: —
802-3-ethernet.mtu: auto
802-3-ethernet.s390-subchannels: —
802-3-ethernet.s390-nettype: —
802-3-ethernet.s390-options: —
802-3-ethernet.wake-on-lan: default
802-3-ethernet.wake-on-lan-password: —
ipv4.method: auto
ipv4.dns: —
ipv4.dns-search: —
ipv4.dns-options: «»
ipv4.dns-priority: 0
ipv4.addresses: —
ipv4.gateway: —
5 Answers 5
The best and easy option I like to use with CentOS is nmtui. (Ref: Redhat)
THIS IS NOT GUI, IT IS TUI (TEXT USER INTERFACE)
First you have to install nmtui,
This will option up what you are after.
Now you can go to Edit connection and itwill list out all the available WiFi connections for you. Then you can select what you want and Activate/Deactivate what ever you want.
To run the ifconfig . command , you should install the net-tools package.
Because the net-tools is deprecated there is the ip and iw commands which answer your question:
Create a wpa_supplicant configuration file with the following content:
To add the SSID and the password, run:
You should be able to see if the drivers for the card are installed by using lspci -k
And then to know if your interface is correctly detected and named you can use ip link You can then try to bring up the interface with ifup
If the interface does not come up correctly it might be because you’re missing a configuration file like /etc/sysconfig/network-scripts/ifcfg-
Another alternative solution if it’s something you only want to bring up once you can input the following commands :
If you are running CentOS 7: You may want to check if NetworkManager is already there available for you to use:
chkconfig NetworkManager on
service NetworkManager start
Issue command: nmtui
Go directly to «Active a connection» to check if you already can see your wireless network/wi-fi. If so, input your password.
You can also Edit a profile for the wi-fi you want to connect.
NOTE: if you cannot active a wi-fi, try the following: After above steps: /etc/init.d/network restart OR REBOOT/RESTART your box.
Here is my experience, for the following reasons:
- If you got connected to Wifi network when you have installed CentOS 7.
- After CentOS 7 entering into sleep mode OR accidental shutdown due to power drainage OR you have restarted & logged into CentOS 7
and if your wifi not working.
Don’t install extra kernel module/do any tweaks/install any new packages
Just shutdown and boot again in CentOS 7. Your wifi will start working again.
This is what I realised after 6 hours of tweaks and tried everything out.
Установка статического IP
nmcli conn show
NAME UUID TYPE DEVICE
enp0s3 64486a76-a4b0-4693-9110-205da942c9c5 ethernet enp0s3
enp0s8 fc26857f-4cb0-3756-a7fa-95ec246b3981 ethernet enp0s8
Настроим статический IP адрес для enp0s8
Настройки сети хранятся в директории
Отредактировать нужно файл
ifcfg-enp0s8
Основные параметры:
TYPE — тип соединения, проводное (Ethernet), беспроводное(Wired) и т д;
BOOTPROTO — способ получения IP адреса, static, dhcp или none;
NAME — имя соединения;
DEVICE — имя сетевого интерфейса;
ONBOOT — необходимо ли запускать при старте системы;
IPADDR — IP адрес, который будет использован для этого компьютера;
GATEWAY — шлюз для доступа к интернету;
NETMASK — маска сети;
DNS1 — сервер для разрешения доменных имен DNS.
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s8
UUID=939a0551-f5b5-46d8-87fe-24e5e7b1a0c1
DEVICE=enp0s8
ONBOOT=yes
Часто задаваемые вопросы по теме статьи (FAQ)
Стоит ли удалять NetworkManager?
Все зависит от конкретной ситуации. Я чаще всего удаляю, потому что мне его функционал не нужен. В подавляющем большинстве случаев, я настраиваю сеть в centos один раз во время установки сервера. Какой мне смысл оставлять NM в системе и постоянно его обновлять? Тем не менее Redhat настоятельно рекомендует использовать NetworkManager для настройки сети и в этом есть определенный смысл. К примеру, если вы будете проходить сертификацию, то вам 100% нужен будет этот инструмент, так как с его помощью можно быстрее настроить сеть и вероятность ошибки будет минимальной. Так что решайте сами по месту, нужен вам Network Manager или нет.
Есть ли разница в том, как настраивать hostname, через правку файла или команду hostnamectl?
Принципиальной разницы нет. Результат будет один и тот же.
Как настроить proxy в centos?
Централизованно для всей системы настроить proxy не получится. Для каждой службы нужно это делать отдельно – yum или dnf, браузер и т.д.
Нужно ли отключать ipv6 в системе?
Я реализую такой подход в настройке системы – отключать все, что не используется. Это повышает надежность и безопасность системы. Поэтому если вы не используете ipv6 в работе, рекомендую его отключить.
Определение имени хоста и как его найти в Windows
Имя хоста – это метка (имя), назначаемая устройству (хосту) в сети, и используется для различения одного устройства от другого в конкретной сети или через Интернет.
Имя хоста для компьютера в домашней сети может быть что-то вроде новый ноутбук , Guest-Desktop или FamilyPC .
Имена хостов также используются DNS-серверами, поэтому вы можете получить доступ к веб-сайту по общему, легко запоминаемому имени, чтобы избежать необходимости запоминать строку цифр (IP-адрес) только для открытия веб-сайта.
Например, в URL-адресе pcsupport.lifewire.com именем хоста является поддержка ПК . Другие примеры приведены ниже.
Вместо этого имя компьютера может называться имя компьютера , sitename или имя узла . Вы также можете увидеть имя хоста, записанное как имя хоста .
Примеры имени хоста
Каждое из следующего является примером Полного доменного имени (FQDN) с его именем хоста, записанным на стороне:
- pcsupport.lifewire.com : pcsupport
- www.google.com : www
- images.google.com : изображения
- products.office.com : продукты
- www.microsoft.com : www
Как вы можете видеть, имя хоста (например, pcsupport ) – это просто текст, предшествующий имени домена (например, lifewire), который, конечно же, текст, предшествующий домену верхнего уровня ( ком ).
Как найти имя хоста в Windows
Выполнение имени хоста из командной строки – безусловно, самый простой способ показать имя хоста компьютера, на котором вы работаете.
Никогда раньше не использовал командную строку? Для получения инструкций см. Наш учебник «Как открыть командную строку». Этот метод работает в окне терминала и в других операционных системах, таких как macOS и Linux.
Использование команды ipconfig для выполнения ipconfig/all – это еще один метод, но эти результаты гораздо более подробны и включают в себя информацию в дополнение к имени хоста, которая может вас не заинтересовать.
Команда net view , одна из нескольких сетевых команд, – это еще один способ увидеть не только ваше собственное имя хоста, но и имена хостов других устройств и компьютеров в вашей сети.
Как изменить имя хоста в Windows
Другой простой способ узнать имя хоста компьютера, который вы используете, – это через Системные свойства , который также позволяет вам изменить имя хоста.
Доступ к системным свойствам можно получить через ссылку Дополнительные параметры системы внутри апплета «Система» на панели управления, но также можно запустить, выполнив control sysdm.cpl из Выполнить или командная строка.
Подробнее об именах хостов
Имена хостов не могут содержать пробелы, поскольку они могут быть только алфавитными или буквенно-цифровыми. Дефис является единственным допустимым символом.
Часть www URL фактически указывает на поддомен веб-сайта, аналогично тому, как pcsupport является поддоменом lifewire.com, а images – один из поддоменов Google.com.
Чтобы получить доступ к разделу поддержки ПК на веб-сайте lifewire.com, необходимо указать имя хоста pcsupport в URL. Аналогично, имя хоста www всегда требуется, если вы не указали конкретный поддомен (например, images или pcsupport ).
Например, технически всегда требуется ввод www.lifewire.com вместо простого lifewire.com . Вот почему некоторые сайты недоступны, если вы не введете часть www перед доменным именем.
Однако большинство посещаемых вами веб-сайтов по-прежнему будут открываться без указания имени хоста www – либо потому, что веб-браузер делает это за вас, либо потому, что веб-сайт знает, что вы ищете.
Начальная настройка CentOS
Лично я любую настройку системы, будь то centos или другая, после установки начинаю с того, что полностью обновляю систему. Если установочный образ был свежий, либо установка велась по сети, то скорее всего обновлений никаких не будет. Чаще всего они есть, так как установочные образы не всегда регулярно обновляются.
Обновляем систему
Для удобства администрирования, я всегда устанавливаю Midnight Commander, или просто mc:
И сразу же для него включаю подсветку синтаксиса всех файлов, которые не обозначены явно в файле /usr/share/mc/syntax/Syntax синтаксисом для sh и bash скриптов. Этот универсальный синтаксис нормально подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Перезаписываем файл unknown.syntax. Именно этот шаблон будет применяться к .conf и .cf файлам, так как к ним явно не привязано никакого синтаксиса.
Дальше нам пригодятся сетевые утилиты. В зависимости от набора начальных пакетов, которые вы выбираете при установке системы, у вас будет тот или иной набор сетевых утилит. Вот список тех, к которым привык лично я — ifconfig, netstat, nslookup и некоторые другие. Если она вам нужны, так же как и мне, то предлагаю их установить отдельно, если они еще не стоят. Если вам они особо не нужны и вы ими не пользуетесь, то можете пропустить их установку. Проверим, что у нас имеется в системе на текущий момент
Если увидите ответ:
Значит утилита не установлена. Вместо ifconfig в CentOS теперь утилита ip. Это относится не только к центос. Такая картина почти во всех популярных современных дистрибутивах Linux. Я с давних времен привык к ifconfig, хотя последнее время практически не пользуюсь. Мне всегда нравилось, что в различных дистрибутивах линукс все примерно одинаковое. С помощью ifconfig можно настроить сеть не только в linux, но и в freebsd. Это удобно. А когда в каждом дистрибутиве свой инструмент это не удобно. Хотя сейчас это уже не очень актуально, так как с Freebsd больше не работаю, а утилита ip есть во всех дистрибутивах linux. Тем не менее, если вам нужен ifconfig, то можете установить пакет net-tools, в который она входит:
Чтобы у нас работали команды nslookup или, к примеру, host необходимо установить пакет bind-utils. Если этого не сделать, то на команду:
Будет вывод:
Так что устанавливаем bind-utils:
alias
Чтобы не писать длинные имена хостов можно придумать alias
Формат следующий
FQDN — Fully Qualified Domain Name — полностью определённое имя домена.
$ ping vbdns
PING dns-server.andrei.com (192.168.56.149) 56(84) bytes of data.
64 bytes from dns-server.andrei.com (192.168.56.149): icmp_seq=1 ttl=64 time=0.619 ms
64 bytes from dns-server.andrei.com (192.168.56.149): icmp_seq=2 ttl=64 time=0.674 ms
^C
— dns-server.andrei.com ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.619/0.646/0.674/0.037 ms
Обратите внимание на dns-server.andrei.com
Хоть пинг и был по алиасу, ответ идёт как от static fqdn
Если поменять порядок так, что vbdns идёт первым а FQDN dns-server.andrei.com вторым, но
dns-server.andrei.com будет считаться алиасом
В таком случае ответ будет идти от vbdns
$ ping vbdns
Или
$ ping dns-server.andrei.com
PING vbdns (192.168.56.149) 56(84) bytes of data.
64 bytes from vbdns (192.168.56.149): icmp_seq=1 ttl=64 time=0.721 ms
64 bytes from vbdns (192.168.56.149): icmp_seq=2 ttl=64 time=1.01 ms
^C
— vbdns ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1004ms
rtt min/avg/max/mdev = 0.721/0.866/1.012/0.148 ms
Это может стать важным при работе с сертификатами
Предварительная настройка сервера
Любую настройку сервера я рекомендую начинать с обновления:
# yum -y update
После этого я устанавливаю mc, так как привык к нему и постоянно пользуюсь:
# yum -y install mc
Дальше отключаем selinux. Находим файл /etc/sysconfig/selinux и редактируем его:
# mcedit /etc/sysconfig/selinux
Приводим строку с соответствующим параметром к следующему виду:
SELINUX=disabled
Чтобы применить изменения, перезагружаем сервер:
# reboot
Более подробно о базовой настройке сервера CentOS 7 читайте отдельно. Мы же двигаемся дальше.
Теперь настроим сеть. Я очень подробно рассмотрел вопрос настройки сети в CentOS 7 в своем отдельном материале. Рекомендую с ним ознакомиться. Здесь же я кратко выполню необходимые команды, без пояснений.
Сначала удаляем NetworkManager. Он нам не понадобится, выполним все настройки вручную. Иногда он может вызывать непонятные ошибки, я предпочитаю им не пользоваться:
# systemctl stop NetworkManager.service # systemctl disable NetworkManager.service
Теперь включаем классическую службу сети в CentOS 7:
# systemctl enable network.service
Настраиваем сетевые интерфейсы:
# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0 HWADDR=00:15:5D:01:0F:06 TYPE="Ethernet" BOOTPROTO="dhcp" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" NAME="eth0" UUID="4e65030c-da90-4fb8-bde4-028424fe3710" ONBOOT="yes"
# mcedit /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 HWADDR=00:15:5d:01:0f:12 TYPE=Ethernet ONBOOT=yes IPADDR=192.168.10.1 NETMASK=255.255.255.0
Перезапускаем службу сети:
# systemctl restart network.service
Смотрим, что получилось:
# ip a
Вы настраивайте сеть в зависимости от своих условий. Если внешний адаптер получает настройки не по dhcp, как у меня, а в статике, то не забудьте настроить шлюз по-умолчанию и dns сервер. Как это сделать написано в моей статье о сетевых параметрах, ссылку на которую я приводил выше.
Прежде чем двигаться дальше, убедитесь, что вы все верно настроили — на сервере работает интернет, компьютеры из локальной сети пингуют сервер по адресу на eth1.
Установка CentOS 7 с флешки
После создания загрузочной флешки, можно приступить к установке. Вставляем флешку в сервер, указываем в качестве источника загрузки USB и запускаем компьютер. Нас встречает начальное меню установки CentOS:
Выбираем первый пункт: Install CentOS 7 и жмем enter. После загрузки инсталлера, нас встречает окно с выбором языка, который будет использоваться во время установки. Я всегда выбираю Еnglish, мне так привычнее:
Дальше загружается страница с выбором основных параметров установки. Она уже будет отличаться в зависимости от типа ISO образа, с которого происходит установка центос.
NetworkManager
Проверить статус можно командой
systemctl status NetworkManager
● NetworkManager.service — Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-02-18 17:30:13 EET; 1 months 30 days ago
Docs: man:NetworkManager(8)
Main PID: 841 (NetworkManager)
Tasks: 5
CGroup: /system.slice/NetworkManager.service
├─ 841 /usr/sbin/NetworkManager —no-daemon
└─9599 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens192.pid -lf /var/lib/NetworkManager/dhclient-5c2584c5-7d87-4826-ba2a-79713eb62a9a-ens192.lease -cf /var/lib/Net…
Nov 12 17:22:26 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): gateway 10.1.103.254
Nov 12 17:22:26 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): lease time 7200
Nov 12 17:22:26 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): nameserver ‘10.10.10.1’
Nov 12 17:22:26 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): nameserver ‘10.1.0.2’
Nov 12 17:22:26 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): domain name ‘urn.su’
Nov 12 17:22:26 localhost.localdomain NetworkManager: <info> dhcp (ens192): domain search ‘urn.su.’
Nov 12 17:22:26 localhost.localdomain NetworkManager: <info> dhcp (ens192): domain search ‘hel.fi.urn.su.’
Nov 12 17:22:26 localhost.localdomain NetworkManager: <info> dhcp (ens192): domain search ‘ad.urn.su.’
Nov 12 17:22:26 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): state changed bound -> bound
Nov 12 17:22:26 localhost.localdomain dhclient: bound to 10.1.102.211 — renewal in 2903 seconds.
Подключении по ssh с помощью putty
Работать с сервером намного удобнее используя ssh-клиент. Вот уже многие годы стандартом для win систем остается putty. Подробно на всех настройках этого клиента я останавливаться не буду, давайте просто подключимся к нашему серверу. Запускаем putty и вводим в “HostName” IP адрес нашего сервера 192.168.56.80. Подключатся к нему мы будем постоянно, поэтому давайте сохраним этот IP в списке. В “Saved Sessions” вводим название и нажимаем кнопку “Save”. А что бы подключится – нажимаем “Open”. и видим строку приглашения нашего сервера:
После того как установка CentOS 7 завершена – нам надо сделать немало настроек, что бы подстроить сервер под себя. Об этом следующей части.
hostname
Шаг 1. Проверка текущего hostname
Чтобы получить информацию о хосте выполните
hostnamectl
Static hostname: localhost.localdomain
Icon name: computer-vm
Chassis: vm
Machine ID: a714bee8007d114a84177dbb15072f2e
Boot ID: b02d9498c1764a338c781672aac1be29
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.el7.x86_64
Architecture: x86-64
Нужная информация находится в первой строке
Шаг 2. Смена hostname
Так как CentOS 7 поддреживает только Fully Qualified Domain Names (FQDNs),
советую тщательно проверить hostname, который вы планируете использовать.
Допустимые значения:
- Строчные буквы от a до z
- Цифры от 0 до 9
- Точки и дефисы
- Hostnames может быть от 2 до 63 символов
- Hostnames должен начинаться и заканчиваться цифрой или буквой
Выполните
hostnamectl set-hostname my.new-hostname.server
Подробности в статье
hostname
Видео установки CentOS 7 на raid 1
Онлайн курсы по Mikrotik
Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте .
Стоимость обучения весьма демократична, хорошая возможность получить новые знания в актуальной на сегодняшний день предметной области. Особенности курсов:
- Знания, ориентированные на практику;
- Реальные ситуации и задачи;
- Лучшее из международных программ.
Сохранение настроек сети
Определяем, какие интерфейсы есть в системе
ip a
1 |
1lo<LOOPBACK,UP,LOWER_UP>mtu65536qdisc noqueue state UNKNOWN link/loopback000000000000brd000000000000 inet127.0.0.1/8scope host lo 2eth0<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdisc pfifo_fast state UP qlen1000 link/ether001517185fd8 brd ffffffffffff inet10.15.0.1/28brd91.241.22.15scope globaleth0 3eth1<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdisc pfifo_fast state UP qlen1000 link/ether001517185fd9 brd ffffffffffff inet192.168.11.101/24brd192.168.11.255scope globaleth1 inet10.49.0.1/8brd10.255.255.255scope globaleth13 inet192.168.70.16/24brd192.168.70.255scope globaleth11 4gre0<NOARP>mtu1476qdisc noop state DOWN link/gre0.0.0.0brd0.0.0.0 5gretap0<BROADCAST,MULTICAST>mtu1476qdisc noop state DOWN qlen1000 link/ether000000000000brd ffffffffffff 6eth1.122@eth1<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdisc noqueue state UP link/ether001517185fd9 brd ffffffffffff inet192.168.123.254/23brd192.168.123.255scope globaleth1.122
|
Сохраняем настройки
Для сохранение я настроек необходимо внести изменения я конфигурационный файл интерфейса, который находиться /etc/sysconfig/network-scripts/ifcfg-eth0 и приводим его к виду:
1 |
DEVICE=»eth0″ BOOTPROTO=none NM_CONTROLLED=»yes» ONBOOT=yes TYPE=»Ethernet» UUID=»7f9fe579-ac2f-4e35-9445-7685620fa61d» HWADDR=001517185FD8 IPADDR=10.15.0.1 PREFIX=28 GATEWAY=10.15.0.254 DNS3=8.8.4.4 DNS2=8.8.8.8 DNS1=192.168.11.3 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME=»System eth0″
|
Перезапуск сети
После внесения изменений необходимо перезапустить демон сети
1 |
service network restart
|
или так
1 |
|
Как работает сеть?
Перед тем как переходить к самим настройкам, важно понять как работает сеть. Мы не будем рассматривать очень сложные вещи, только основные моменты
Вы, наверное, уже знаете, что все данные в сети передаются в виде пакетов. Какого бы размера не были данные, они делятся на пакеты фиксированного размера и передаются к цели.
Для идентификации компьютеров в сети используются IP адреса. Компьютер должен знать куда нужно передать пакет и кто его отправил. Поэтому в глобальной сети все IP адреса уникальны. Но невозможно подключить все компьютеры к одной общей сети, потому что IP адресов на всех не хватит. Поэтому были созданы локальные сети.
К каждой обычной локальной сети может быть подключено 256 компьютеров с IP адресами от 0 до 255. Из этого выплывает еще один термин — маска подсети, она указывает какая часть IP адреса относится к локальной сети. Например, в большинстве случаев маска сети будет 255.255.255.0, это значит, что в нашей сети будет меняться только последняя цифра IP адреса, такой тип наиболее распространен. Если наш IP 192.168.1.2, то компьютеры из нашей сети будут иметь адреса 192.168.1.1 и до 192.168.1.255.
Следующий важный для нас параметр, это компьютер, с помощью которого мы можем получить доступ к внешней сети, он называется шлюзом или Gateway. В каждой сети, подключенной к интернету есть шлюз.
Последнее, на чем осталось остановиться вид адресов сайтов. Как я уже сказал, все компьютеры имеют IP адрес и доступ к ним осуществляется именно по нему. Но в адресной строке браузера мы видим понятное имя, а не сложные цифры. Для преобразования имени в цифры IP адреса используется служба DNS. Ее нам тоже предстоит настроить. В случае если компьютер получает все эти параметры по DHCP нам достаточно только включить службу. Но если нужна ручная настройка сети из консоли centos 7, то каждый из параметров нужно указать вручную. А теперь перейдем к практике.
Настраиваем время
Узнать, какое время настроено на сервере centos можно с помощью команды date:
Чтобы сменить часовой пояс, можете воспользоваться специальной утилитой, которая входит в состав systemd.
По факту, эта утилита меняет символьную ссылку. Рассказываю, чтобы вы понимали, как реально меняется часовой пояс.
Если вы вручную замените символьную ссылку на другую, точно так же поменяете часовой пояс системы.
Теперь проверим статус службы по обновлению времени через интернет. Для этого можно использовать указанную выше команду timedatectl без параметров.
В CentOS есть утилита для синхронизации времени chrony. В стандартной установке она должна быть установлена в системе, в минимальной ее нет. Если у вас она не стоит, как и у меня, что видно по скриншоту, то устанровим и настроим вручную:
Запускаем chrony и добавляем в автозагрузку:
Проверяем, нормально ли запустился:
Все в порядке, сервис настроен и работает. После запуска он автоматически синхронизирует время. Теперь наши часы будут автоматически синхронизироваться с сервером времени в интернете.
Загрузочная флешка для CentOS 7
Последнее время лично я практически не пользуюсь обычными CD, предпочитая им загрузочные флешки. Они удобнее, занимают меньше места, проще обновить дистрибутив на них. Но иногда приходится заморочиться для создания загрузочной флешки. Например, для создания загрузочной флешки CentOS 6 я раньше пользовался программой unetbootin, но с 7-й версией этот номер не прошел. Созданная в ней флешка не позволяет установить CentOS 7, так как сам инсталлятор в какой-то момент не видит источник установки на флешке.
Но на выручку пришла бесплатная программа Win32DiskImager. С ее помощью без проблем удается создать загрузочную флешку CentOS 7. Вот как это делается:
- Скачиваем дистрибутив программы.
- Скачиваем дистрибутив CentOS 7. Я для теста использовал версию Minimal.
- Вставляем чистую флешку, запускаем программу и указываем настройки:
- Нажимаем Write и ждем окончания записи.
- Загрузочная флешка CentOS 7 готова.
Этого достаточно для создания флешки. Теперь ей можно пользоваться для установки операционной системы с флешки.
Редактирование DNS
Если был выбран вариант сети со статичным адресом, то настроить DNS можно несколькими способами.
Файлы Resolv.conf и ifcfg-ethXX
До шестой версии ОС сетевые параметры находились по адресу /etc/resolv.conf. Для вызова файла вводится «vi /etc/resolv.conf». После чего открывается окно для установки DNS. Здесь в nameserver нужно прописать DNS.
После ввода произвести перезагрузку модуля, вводя «/etc/init.d/networkrestart».
Начиная с CentOS 6, установки сети также прописываются в рассмотренном выше файле ifcfg-ethXX, где «XX» — название интерфейса сети. Вызывается командой «vi/etc/sysconfig/network-scripts/ifcfg-ethXX».
ifcfg-ethXX имеет приоритет. Если поменять значения в файле resolv.conf, не меняя их в ifcfg-ethXX, то после перезагрузки загрузятся значения последнего. Это нужно учитывать при настройке системы выше версии 5.
Установка для двух и более адаптеров
Если есть 2 карты и необходимо одну из них сделать основной, то используется запрос «vi /etc/sysconfig/network». После ее ввода, указывается шлюз, имя сервера и задается приоритет карты:
- HOSTNAME — имя сервера;
- GATEWAY — шлюз;
- GATEWAYDEV=ethXX, указывается главная карта.
Все операции проводятся после нажатия INSERT.
Опция system-config-network-tui
Для установки вспомогательной утилиты написать «yum install -y system-config-network-tui» и запустить выполнение. После инициализации опции в командной строке прописать «system-config-network-tui».
Далее выполнить следующие действия:
- Откроется синий экран с приглашением выбрать одну из установок. Выбрать пункт «Device configuration».
- Появится список с доступными картами. Выбрать необходимую.
- После этого настроить адаптер.
- Затем зайти в пункт «DNS configuration».
- Задать необходимые настройки.
- Подтвердить изменения и выйти.
После выполнения всех действий установится необходимый DNS.
Использование Midnight Commander
Установка через программу Midnight Commander. Она схожа с приложением Windows Total Commander. Для инициализации опции ввести команду «yum install mc -y». После установки набрать «mc». Откроется окно программы.
Перейти в каталог с сетевыми файлами /etc/sysconfig/network-scripts и выбрать файл сетевого адаптера, например ifcfg-eth0.Нажать на клавишу F4. В правом окне нажать на пункт «/.mc».
Появятся опции сети. Установить необходимую конфигурацию, для выхода использовать клавишу F10.
Настройка квот
Устанавливаем пакет для квотирования диска:
yum install quota
Открываем fstab и добавляем опции квотирования для нужного раздела:
vi /etc/fstab
/dev/sdb /var ext4 usrquota,grpquota 0 0
* в моем примере добавлены опции usrquota и grpquota для раздела /var.
Перемонтируем раздел, для которого должны работать квоты:
mount -o remount /var
Запускаем следующую команду для создания служебных файлов:
quotacheck -favugm
Включаем квоту для раздела:
quotaon -avug
Задаем квоту для пользователя виртуальной площадки:
edquota u10001
Disk quotas for user u10001 (uid 10001):
Filesystem blocks soft hard inodes soft hard
/dev/sdb 252432 2G 2G 10796 0 0
* в данном примере выставляем квоту в 2 Гб.
Проверить установленную квоту можно командой:
repquota /var
Заключение
Я сделал небольшой обзор возможностей lxc контейнеров. Не затронул такие вопросы как ограничение ресурсов, бэкап и восстановление контейнеров. Я еще не тестировал это, поэтому не хочется писать о том, что сам еще не пробовал, а зафиксировать уже полученные знания хочется.
В целом, вывод по lxc неоднозначный. С одной стороны, вроде все удобно и даже работает. Но с дугой стороны, такие нерешенные проблемы, как зависание контейнеров мне не понятны. Почему оно не заработало из коробки — не ясно. Кроме того, периодически я получал зависания таких команд как lxc-info. Хочешь получить инфу по контейнеру, а в ответ тишина. Просто висит команда в консоли и не выводит ничего. Оставлял на час — без изменений. После перезапуска контейнера показывает нормально. Такие явные ошибки очень настораживают и предостерегают от использования в продакшене.
Потестирую дальше на своих небольших проектах. Если все будет нормально, то дополню статью новым материалом. В принципе, если дальше будет работать стабильно, можно кое-где использовать. В целом, контейнеры очень интересная технология, которая будет отличным дополнением виртуальным машинам, особенно если весь хост используется для однотипной нагрузки, к примеру, под web сайты. Можно их безопасно изолировать с минимальным оверхедом по ресурсам, чего не скажешь о виртуальных машинах даже в минимальной конфигурации.
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .