Настройка сети в centos 7

Примеры использования ip. Аналоги ip для ifconfig

Сбор информации

Первое, что большинство людей изучает с командой ifconfig – это как узнать, какой IP адрес назначен интерфейсу. Это обычно делается командой ifconfig без флагов или аргументов. Чтобы сделать это же самое с командой ip, запустите её так:

ip a

Эта команда выведет список интерфейсов и связанную с ними информацию.

Допустим, вы хотите увидеть только информацию по IPv4 (для ясности). Чтобы сделать это, наберите команду:

ip -4 a

Или вы хотите увидеть информацию только по IPv6:

ip -6 a

Что если вы хотите увидеть информацию, связанную с конкретным интерфейсом? Вы можете вывести список данных по беспроводному соединению командой:

ip a show wlan0

Вы можете задать ещё более конкретные условия этой командой. Если вы хотите увидеть IPv4 по интерфейсу wlan0, наберите команду:

ip -4 a show wlan0

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

ip link ls up

Изменение интерфейса

Теперь мы входим в сердце команды… использование её для изменения интерфейса. Допустим вы хотите назначить конкретный адрес первому ethernet интерфейсу eth0. С командой ifconfig это выглядело бы примерно так:

ifconfig eth0 192.168.1.101

С командой ip это выглядит примерно так:

ip a add 192.168.1.101/255.255.255.0 dev eth0

Вы можете немного сократить её:

ip a add 192.168.1.101/24 dev eth0

Ясно, что вы должны знать маску подсети адреса, который вы назначаете.

Что насчёт того, чтобы удалить адрес из интерфейса? С командой ip вы также можете сделать это. Например, для удаления только что назначенного для eth0 адреса, наберите следующую команду:

ip a del 192.168.1.101/24 eth0

Что если вы хотите просто очистить все адреса для всех интерфейсов? Командой ip это делается так:

ip -s -s a f to 192.168.1.0/24

Другой ключевой аспект команды ip – это возможность поднимать/отключать интерфейс. Чтобы отключить интерфейс eth0 наберите:

ip link set eth0 down

Чтобы обратно поднять eth0, используйте

ip link set eth0 up

С командой ip вы можете также добавлять и удалять шлюз по умолчанию. Работать с этим примерно так:

ip route add default via 192.168.1.254

Добавление псевдонима (алиаса) интерфейса с ifconfig:

ifconfig eth0:1 10.0.0.1/8

С ip:

ip addr add 10.0.0.1/8 dev eth0 label eth0:1

Если вы действительно хотите углубиться в детали, вы можете отредактировать очередь передачи. Вы можете задать низкое значение в очереди передачи для медленных интерфейсов и более высокое значение для быстрых интерфейсов. Чтобы сделать это, команда должна выглядеть примерно так:

ip link set txqueuelen 10000 dev eth0

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

Вы также можете установить Maximum Transmission Unit (MTU) вышего сетевого интерфейса командой:

ip link set mtu 9000 dev eth0

После сделанных изменений, используйте

ip a list eth0

для проверки, что изменения возымели эффект.

Управление таблицей маршрутизации

С командой ip вы также можете управлять системными таблицами маршрутизации

Это очень мощный элемент команды ip, и вам следует использовать его с осторожностью.. Допустим, вы хотите просмотреть все таблицы маршрутизации

Чтобы сделать это, наберите команду:

Допустим, вы хотите просмотреть все таблицы маршрутизации. Чтобы сделать это, наберите команду:

ip r

Вывод может выглядеть примерно так:

Теперь, допустим, вы хотите переправлять весь трафик через шлюз 192.168.5.0, подключённый через сетевой интерфейс eth0. Чтобы сделать это, наберите команду:

ip route add 192.168.5.0/24 dev eth0

Для удаления этого же маршрута наберите:

ip route del 192.168.5.0/24 dev eth0

ARP протокол

Добавьте любую запись в вашу ARP таблицу:

arp -i eth0 -s 192.168.0.1 00:11:22:33:44:55
ip neigh add 192.168.0.1 lladdr 00:11:22:33:44:55 nud permanent dev eth0

Отключите преобразование ARP на устройстве с ifconfig:

ifconfig -arp eth0

С ip:

ip link set dev eth0 arp off

Цель этой заметки – дать начальное представление о команде ip. Конечно необязательно полностью отказываться от использования ifconfig, но теперь программа не предустановлена по умолчанию во многие дистрибутивы. И нужно быть готовым использовать команду ip.

При написании этой заметки использовались материалы:

  • http://unix.stackexchange.com/questions/145447/ifconfig-command-not-found
  • https://www.linux.com/learn/tutorials/846486-replacing-ifconfig-with-ip
  • https://tty1.net/blog/2010/ifconfig-ip-comparison_en.html

Настройка нескольких сетевых интерфейсов в CentOS

Если у вас на сервере несколько сетевых интерфейсов, для них можно указать разные IP-адреса. Разберемся как это сделать. Если у вас на сервере более одного сетевого интерфейса, команда “ip a” должна отобразить эту информацию:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:d3:1c:3e brd ff:ff:ff:ff:ff:ff
inet 185.*.*.*/16 brd 185.*.*.255 scope global eth0
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 52:54:00:5f:f3:b8 brd ff:ff:ff:ff:ff:f

Чтобы сконфигурировать второй интерфейс, нужно создать для него файл:

И добавьте следующую конфигурацию:

IPADDR="*.*.*.*"
GATEWAY="*.*.*.*"
NETMASK="255.255.255.0"
BOOTPROTO="static"
DEVICE="eth1"
ONBOOT="yes"

После этого на сервере нужно установить шлюз по умолчанию. Проверим какой шлюз установлен в данный момент и при необходимости поменяем его:

Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 185.*.*.1 0.0.0.0 UG 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
185.*.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
185.*.*.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

В качестве основного шлюза у нас выступает интерфейс eth1. Я же хочу использовать eth0, для этого изменим его:

– заменяем шлюз на тот, который указан в сетевом интерфейсе eth0

— удаляем шлюз интерфейса eth1

Если вы хотите, чтобы данная настройка сохранилась после перезагрузки сервера, добавьте эти команды в rc.local (см. статью об автозагрузке сервисов в CentOS).

Настройка системной почты

В завершение настройки сервера CentOS 7 сделаем так, что бы почта, адресованная локальному root, отправлялась через внешний почтовый сервер на выбранный почтовый ящик. Если этого не сделать, то она будет локально складываться в файл /var/spool/mail/root. А там может быть важная и полезная информация. Настроим ее отправку в ящик системного администратора.

Здесь кратко только команды и быстрая настройка. Ставим необходимые пакеты:

# yum install mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain

Рисуем примерно такой конфиг для postfix.

cat /etc/postfix/main.cf
## DEFAULT CONFIG BEGIN ######################
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
inet_interfaces = localhost
inet_protocols = all
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.10.1/samples
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
## DEFAULT CONFIG END ######################

# Имя сервера, которое выводит команда hostname
myhostname = centos7-test.xs.local
# Здесь по логике нужно оставлять только домен, но в данном случае лучше оставить полное имя сервера, чтобы в поле отправитель 
# фигурировало полное имя сервера, так удобнее разбирать служебные сообщения
mydomain = centos7-test.xs.local
mydestination = $myhostname
myorigin = $mydomain
# Адрес сервера, через который будем отправлять почту
relayhost = mailsrv.mymail.ru:25
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may

Создаем файл с информацией об имени пользователя и пароле для авторизации.

# mcedit /etc/postfix/sasl_passwd
mailsrv.mymail.ru:25 [email protected]:password

Создаем db файл.

# postmap /etc/postfix/sasl_passwd

Теперь можно перезапустить postfix и проверить работу.

# systemctl restart postfix

К стандартному алиасу для root в /etc/aliases, добавьте внешний адрес, куда будет дублироваться почта, адресованная root. Для этого редактируем указанный файл, изменяя последнюю строку.

Было:

#root: marc

Стало

root: root,[email protected]

Обновляем базу сертификатов:

# newaliases

Отправим письмо через консоль локальному руту:

# df -h | mail -s "Disk usage" root

Письмо должно уйти на внешний ящик. На этом настройка локальной почты закончена. Теперь все письма, адресованные локальному root, например, отчеты от cron, будут дублироваться на внешний почтовый ящик, причем с отправкой через нормальный почтовый сервер. Так что письма будут нормально доставляться, не попадая в спам (хотя не обязательно, есть еще эвристические фильтры).

System config network tui

Для управления сетевыми настройками в CentOS можно воспользоваться графической утилитой nmtui. Проверить ее наличие в системе очень просто. Достаточно запустить ее в консоли:

Если она у вас не установлена, то исправить это очень просто. Устанавливаем в CentOS system config network tui:

С помощью tui можно указать любые сетевые настройки, которые мы делали раньше через командную строку и редактирование конфигурационных файлов network-scripts. Давайте сделаем это. Вызываем программу:

Выбираем первый пункт Edit a connection, затем выбираем сетевой интерфейс и жмем «Edit»:

Здесь мы можем изменить имя сетевой карты, mac адрес, указать тип сетевых настроек — ручной или dhcp, указать вручную ip адрес, адрес шлюза, днс сервера, добавить маршруты и некоторые другие настройки:

После завершения редактирования сохраняем настройки, нажимая ОК.Если в первом экране утилиты выбрать пункт Set System Hostname, то можно быстро указать имя хоста. Результат будет такой же, как мы делали раньше в консоли.Если вы будете готовиться к сдаче сертификации по RHEL, то везде будете видеть рекомендацию использовать nmtui для настройки сети. Суть в том, что на экзамене время ограничено, а с помощью network manager его можно и нужно экономить. Считается, что так настраивать сеть быстрее.

Управление сетью с помощью NetworkManager в CentOS 8

В CentOS 8 для настройки сети рекомендуется использовать только NetworkManager. Эта служба управление сетевыми подключениями, контролирует настройки и применяет изменения к сетевым адаптерам.

Чтобы проверить статус NM, используйте команду:

В CentOS предлагается использовать для настройки сети командную консоль nmcli или графическую утилиту nmtui.

Чтобы перейти в режим настройк сети, введите команду:

При выборе первого пункта, у вас откроется окно с выбором сетевого интерфейса для редактирования:

Выбираем нужный нам интерфейс и редактируем:

Нам доступно редактирование имени, IP-адреса, Шлюза, DNS-серверов. Так же в интерактивном меню NM, мы можем изменить способ назначения IP адреса, на DHCP:

Замените “manual” на “automatic”:

После чего сохраните настройки. С помощью nmtui в графическом режиме, вы можете выполнить любые настройки, которые выполняете вручную через конфигурационные файлы. Если вы предпочитаете использовать командную строку для настройки интерфейсов, можете использовать nmcli. Например, следующие команды изменят IP адрес, щлюз и DNS сервера для интерефейса eth1.

Для применения изменений, перезагрузите интерфейс:

Если же вам удобнее работать с файлами конфигурации, установите через yum отдельный пакет network-scripts (в CentOS 8 по умолчанию его нет):

Upgraded:
initscripts-10.00.1-1.el8_0.1.x86_64
Installed:
network-scripts-10.00.1-1.el8_0.1.x86_64 network-scripts-team-1.27-10.el8.x86_64
Complete!

После установки данного пакета, вы можете редактировать настройки сети, как мы описывали ранее, через конфигурационные файлы:

Сетевые настройки на сервере CentOS

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

Зайдя в него мы видим список подключенных сетевых карт. Каждую из них можно включить соответствующим ползунком (пункт 1 на картинке). При активировании интерфейса он автоматически получает настройки по dhcp. Результат работы dhcp можно посмотреть тут же. Если вас не устраивают эти настройки, их можно отредактировать, нажав configure (пункт 3 на картинке). Здесь же можно задать hostname (пункт 2 на картинке):

Открыв окно дополнительный настроек Ehernet, вы сможете изменить имя сетевого интерфейса, указать настройки IP (пункт 1 на картинке), выбрать ручные настройки (пункт 2 на картинке), назначить ip адрес (пункт 3 на картинке), установить dns сервер (пункт 4 на картинке) и сохранить сетевые настройки (пункт 5 на картинке):

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

Теперь рассмотрим другую ситуацию. Сервер, а соответственно и конфигурацию сети, производили не вы, а теперь вам надо ее посмотреть либо изменить. В вашем распоряжении консоль сервера, в ней и будем работать. Если у вас установка производилась с дистрибутива minimal, то при попытке посмотреть сетевые настройки с помощью команды ifconfig в консоли вы увидите следующее:

или в русской версии:

Для работы с ifconfig и прочими сетевыми утилитами необходимо установить пакет net-tools. Сделаем это:

Теперь можно увидеть настройки сети:

Если у вас нет желания устанавливать дополнительный пакет, то можно воспользоваться более простой командой ip с параметрами:

Мы увидели конфигурацию сети, теперь давайте ее отредактируем. Допустим, нам нужно сменить ip адрес. Для этого идем в директорию /etc/sysconfig/network-scripts и открываем на редактирование файл ifcfg-eth0 или ifcfg-ens18. Название файла будет зависеть от имени сетевого интерфейса. В Centos 8 по-умолчанию убрали поддержку настройки сети через конфигурационные скрипты, поэтому установите отдельно пакет network-scripts.

По настройкам из этого файла мы получаем ip адрес по dhcp. Чтобы вручную прописать статический ip, приводим файл к следующему содержанию:

Мы изменили параметры:

BOOTPROTO с dhcp на none
DNS1 указали dns сервер
IPADDR0 настроили статический ip адрес
PREFIX0 указали маску подсети
GATEWAY0 настроили шлюз по-умолчанию

Чтобы изменения вступили в силу, необходимо перечитать сетевые настройки:

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

Все в порядке, новые настройки сетевого интерфейса установлены.

Solved «-bash: ifconfig: command not found» error

While it is very common to get error in CentOS/ Redhat 7/8 due to the reason that command is not available by default. Instead its successor command is available now. You can check all the network interface details by using ip addr sh command.

NOTE:

Please note that here I am using  user to run all the below commands. You can use any user with  access to run all these commands. For more information Please check Step by Step: How to Add User to Sudoers to provide  access to the User.

# ip addr sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:0b:3e:c5 brd ff:ff:ff:ff:ff:ff
inet 192.168.29.75/24 brd 192.168.29.255 scope global dynamic enp0s3
valid_lft 3394sec preferred_lft 3394sec

So to deal with the error you need to install package which is the source distribution package for command.

# yum install net-tools
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: mirrors.piconets.webwerks.in
* extras: mirrors.piconets.webwerks.in
* updates: centos.mirrors.estointernet.in
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): extras/7/x86_64/primary_db | 242 kB 00:00:00
(2/2): updates/7/x86_64/primary_db | 8.8 MB 00:00:22
Resolving Dependencies
--> Running transaction check
---> Package net-tools.x86_64 0:2.0-0.25.20131004git.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================================================
Installing:
net-tools x86_64 2.0-0.25.20131004git.el7 base 306 k

Transaction Summary
=============================================================================================================================================================
Install 1 Package

Total download size: 306 k
Installed size: 917 k
Is this ok [y/d/N]: y
Downloading packages:
net-tools-2.0-0.25.20131004git.el7.x86_64.rpm | 306 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1
Verifying : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1

Installed:
net-tools.x86_64 0:2.0-0.25.20131004git.el7

Complete!

Again if you try to run command, then you should see output like below where all the information about both and network interface will be shown. This confirms successful installation of ifconfig command and now you should not see error again . To know more about command, check its Man Page.

# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.29.75 netmask 255.255.255.0 broadcast 192.168.29.255
ether 08:00:27:0b:3e:c5 txqueuelen 1000 (Ethernet)
RX packets 100 bytes 11269 (11.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 69 bytes 10035 (9.7 KiB)
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 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Именование сетевых интерфейсов в CentOS

Классическая схема именования сетевых интерфейсов в Linux присваивает имена eth0, eth1 и так далее по порядку. Но эти имена не привязываются жестко к интерфейсам и после перезагрузки при наличии нескольких сетевых интерфейсов, эти имена могут поменяться. Это может доставлять некоторые проблемы, при настройке, например, межсетевого экрана через firewalld или iptables. В связи с этим начиная с RedHat 7 и CentOS 7, решено было назначать имена сетевых интерфейсов на основе иерархии различных схем именования. По умолчанию systemd будет поочередно применять схемы именования, остановившись на первой доступной и применимой. Имена присваиваются в автоматическом режиме, остаются неизменными даже если аппаратные средства добавлены или изменены. С другой стороны, такие имена интерфейсов менее читабельны, например, enp5s0 или ens3, чем традиционные eth0 и eth1.

Можно вернуться к стандартному имени интерфейса Linux с помощью следующих действий.

Отредактируйте файл /etc/default/grub:

В строку GRUB_CMDLINE_LINUX нужно добавить:

net.ifnames=0 biosdevname=0

Пример полной строки:

GRUB_CMDLINE_LINUX="consoleblank=0 fsck.repair=yes crashkernel=auto nompath selinux=0 rhgb quiet net.ifnames=0 biosdevname=0"

Обновите конфигурацию grub:

Переименуйте конфигурационный файл сетевого интерфейса:

И заменить значение DEVICE:

Сохраните файл, перезагрузите сервер и проверьте все ли в порядке:

Интерфейс теперь называется eth0.

Как настроить 2 IP адреса на одном интерфейсе

Если у вас появилась необходимость настроить 2 IP адреса на одном интерфейса в CentOS, то сделать это достаточно просто. Воспользуемся командой ifconfig. Для начала проверим список сетевых интерфейсов:

Добавим к интерфейсу eno16777728 еще один ip адрес 192.168.159.120:

Проверим, что получилось:

То же самое, с помощью ip.

Все в порядке, мы добавили второй ip адрес на один и тот же интерфейс. Но после перезагрузки дополнительный адрес не сохранится. Чтобы его сохранить, необходимо создать файл настроек интерфейса в папке /etc/sysconfig/network-scripts

Сохраняем файл, перезагружаемся и проверяем, что получилось. Второй ip адрес должен быть на месте.

Как настроить DNS в CentOS 8

Начиная с CentOS 6, основные настройки DNS стали прописываться в файлах /etc/sysconfig/network-scripts/, но в CentOS есть специальный файл куда попадают настройки из конфига интерфейса, называется он resolv.conf. Честно не знаю, почему так сделали. Resolv.conf — это имя компьютерного файла, используемого в различных операционных системах для настройки преобразователя системы доменных имен (DNS). Файл представляет собой простой текстовый файл, который обычно создается сетевым администратором или приложениями, которые управляют задачами конфигурации системы. Программа resolvconf — это одна из таких программ на FreeBSD или других Unix- машинах, которая управляет файлом resolv.conf.

В большинстве Unix-подобных операционных систем и других, в которых реализована библиотека распознавателя BIND Domain Name System (DNS), файл конфигурации resolv.conf содержит информацию, которая определяет рабочие параметры распознавателя DNS. DNS-распознаватель позволяет приложениям, работающим в операционной системе, преобразовывать понятные человеку доменные имена в числовые IP-адреса, необходимые для доступа к ресурсам в локальной сети или в Интернете. Процесс определения IP-адресов по доменным именам называется разрешением. В системных дистрибутивах Linux есть символическая ссылка на 

ссылка на руководство resolf.conf http://man7.org/linux/man-pages/man5/resolv.conf.5.html

Хочу отметить, что если вы соберетесь редактировать отдельно файл Resolv.conf  и вносить альтернативные DNS сервера отличные от тех, что прописаны на сетевых интерфейсах, то после перезагрузки сервера они снова будут затерты на те, что прописаны в конфигурационных файлах сетевых интерфейсов. Давайте я для примера добавлю в это файл сервера Google 8.8.8.8 и 8.8.4.4.

vi /etc/resolv.conf

Перезапустим сеть:

systemctl restart NetworkManager.service

После снова смотрим файл и, о чудо ранее добавленные DNS сервера пропали, так, что учитывайте, что все настройки делаются в одном конфиг файле.

bash: docker command not found

So, why are you getting this error? Well, the main reason is actually very simple: Docker is currently not installed on your system or not available in the proper path. Yes, those are pretty simple reasons but are the most commons ones and a lot of people lose too much time looking for the root of their problem when it usually comes to the mentioned situations.

The “docker command not found” error on the terminal means that the docker binary couldn’t be found in the expected route, this can happen for different reasons:

  • docker is not installed on your system, or if you tried to install it then it may have been installed incomplete.
  • The docker binary is not available in the expected path. Sometimes, depending on how you install your software, creating a custom binary is necessary to run that particular software. If this is happening in your case then you will get the same error even if Docker was installed.
  • There is also another situation in which the “command not found” error can appear for Docker, it’s very common in some Ubuntu systems so we are going to explain this one below after the fix for the other cases.

Как добавить статический маршрут в CentOS

Для управления маршрутизацией в CentOS может понадобиться добавить статический маршрут. Сделать это достаточно просто с помощью консольной команды. Для начала проверим существующие маршруты, используя netstat:

В данном случае у нас один маршрут для адреса 0.0.0.0/0.0.0.0 шлюз используется 192.168.159.2, он же шлюз по-умолчанию. То есть по сути, статических маршрутов никаких нет. Добавим один из них.

Допустим, у нас есть подсеть 192.168.8.0 маска 255.255.255.0, трафик в эту подсеть маршрутизирует шлюз 192.168.159.5 Добавляем маршрут:

Проверяем, появился ли добавленный маршрут в таблицу маршрутизации:

Все в порядке, маршрут добавлен. Делаем то же самое с помощью утилиты ip.

Но после перезагрузки этот статический маршрут будет удален. Чтобы этого не произошло и добавленные маршруты сохранялись, необходимо их записать в специальный файл. В папке /etc/sysconfig/network-scripts создаем файл с именем route-eth0 следующего содержания:

Перезагружаемся и проверяем, на месте ли маршрут:

Все в порядке, статический маршрут добавлен.

Начальная настройка 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:

How do I disable IPv6?

Upstream employee Daniel Walsh recommends not disabling the ipv6 module, as that can cause issues with SELinux and other components, but adding the following to /etc/sysctl.conf:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

To disable in the running system:

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6

or

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

Additional note #1: If problems with X forwarding are encountered on systems with IPv6 disabled, edit /etc/ssh/sshd_config and make either of the following changes:

(1) Change the line

#AddressFamily any

to

AddressFamily inet

(inet is ipv4 only; inet6 is ipv6 only)

or

(2) Remove the hash mark (#) in front of the line

#ListenAddress 0.0.0.0

Then restart ssh.

Additional note #2: If problems with starting postfix are encountered on systems with IPv6 disabled, either

(1) edit /etc/postfix/main.cf and comment out the localhost part of the config and use ipv4 loopback.

#inet_interfaces = localhost
inet_interfaces = 127.0.0.1

or

(2) take out the ipv6 localhost from /etc/hosts .

Additional Note #3 : To disable RPCBIND ipv6 (rpcbind, rpc.mountd, prc.statd) remark out the udp6 and tcp6 lines in /etc/netconfig:

udp        tpi_clts      v     inet     udp     -       -
tcp        tpi_cots_ord  v     inet     tcp     -       -
#udp6       tpi_clts      v     inet6    udp     -       -
#tcp6       tpi_cots_ord  v     inet6    tcp     -       -
rawip      tpi_raw       -     inet      -      -       -
local      tpi_cots_ord  -     loopback  -      -       -
unix       tpi_cots_ord  -     loopback  -      -       -

Подготовка сервера

Проверяем наличие поддержки со стороны процессора:

cat /proc/cpuinfo | egrep «(vmx|svm)»

Если команда ничего не вернет, на сервере отсутствует поддержка виртуализации или она отключена в настройках БИОС. Сам KVM поставить на такой сервер можно, но при попытке ввести команду управления гипервизором мы получим ошибку «WARNING  KVM acceleration not available, using ‘qemu’». В таком случае необходимо перезагрузить сервер, войти в БИОС, найти поддержку технологии виртуализации (Intel VT или AMD-V) и включить ее.

Создадим каталоги, в которых будем хранить все, что касается виртуализации (предлагаемые по умолчанию не удобные):

mkdir -p /kvm/{images,iso}

* каталог /kvm/images для виртуальных дисков; /kvm/iso — для iso-образов.

Как добавить статический маршрут в CentOS

Для управления маршрутизацией в CentOS может понадобиться добавить статический маршрут. Сделать это достаточно просто с помощью консольной команды. Для начала проверим существующие маршруты, используя netstat:

В данном случае у нас один маршрут для адреса 0.0.0.0/0.0.0.0 шлюз используется 192.168.159.2, он же шлюз по-умолчанию. То есть по сути, статических маршрутов никаких нет. Добавим один из них.

Допустим, у нас есть подсеть 192.168.8.0 маска 255.255.255.0, трафик в эту подсеть маршрутизирует шлюз 192.168.159.5 Добавляем маршрут:

Проверяем, появился ли добавленный маршрут в таблицу маршрутизации:

Все в порядке, маршрут добавлен. Делаем то же самое с помощью утилиты ip.

Но после перезагрузки этот статический маршрут будет удален. Чтобы этого не произошло и добавленные маршруты сохранялись, необходимо их записать в специальный файл. В папке /etc/sysconfig/network-scripts создаем файл с именем route-eth0 следующего содержания:

Перезагружаемся и проверяем, на месте ли маршрут:

Все в порядке, статический маршрут добавлен.

Как изменить имя в CentOS 8

Давайте я покажу вам какой конфигурационный файл отвечает за имя хоста (Hostname). Если вы или не вы во время установки CENTOS 8 не удосужились задать правильное DNS имя вашего сервера, то у вас оно по умолчанию будет localhost.localdomain. Посмотреть, это можно командой uname или hostname.

uname -n или hostname

В моем примере, это CentOS 8

Предположим, что я хочу сделать имя SuperCentOS01, для этого отредактируйте конфигурационный файл etc/hostname. Пишем команду;

vi etc/hostname

либо вы можете воспользоваться и вот такой командой, чтобы задать нужное имя хоста в CentOS 8:

hostnamectl set-hostname SuperCentos01

Заключение

На этом все. Я рассмотрел наиболее типовую ситуацию, которая может быть полезной при использовании структуры AD совместно с linux серверами. При написании статьи использовал официальные руководства:

  • Deployment, Configuration and Administration of Red Hat Enterprise Linux 6
  • sssd.conf — Linux man page

Почему-то из руководства по RHEL 7 раздел, посвещенный SSSD убрали, хотя в 5 и 6 есть. Может просто я не заметил, так как структура сильно поменялась. Люблю я CentOS в первую очередь за отличную документацию Redhat. Там есть подробное описание практически всего, с чем приходилось сталкиваться. Надо только не лениться в английском языке разбираться.

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Что даст вам этот курс:

  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.

Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

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