Как настроить сеть в centos
Содержание:
- Введение
- примеры файлов
- Работа с файловой системой: навигация, создание-перемещение-удаление файлов, ссылки
- Базовая настройка сети
- NetworkManager
- настройка параметров сети с помощью файлов конфигураций
- Как узнать Внешний IP-адрес
- Как настроить DNS в CentOS 7
- hostname
- Настройка сети в CentOS 7
- Настройка сети
- Настройка сетевых интерфейсов в CentOS
- Изменить locale
- Как настроить сеть в консоли
- Сетевые настройки на сервере CentOS
- Заключение
- Онлайн курс по Linux
Введение
CentOS от англ. Community ENTerprise Operating System
— дистрибутив Linux, основанный на коммерческом
Red Hat Enterprise Linux компании Red Hat и совместимый с ним.
Согласно жизненному циклу Red Hat Enterprise Linux (RHEL)
, CentOS 5, 6 и 7 будут поддерживаться «до 10 лет»,
поскольку они основаны на RHEL.
Ранее версия CentOS 4 поддерживалась семь лет.
Red Hat Enterprise Linux состоит из свободного ПО с
открытым кодом, но доступен в виде дисков с бинарными пакетами только для
платных подписчиков.
Как требуется в лицензии GPL и других, Red Hat предоставляет все исходные коды.
Разработчики CentOS используют данный исходный код для создания окончательного продукта,
очень близкого к Red Hat Enterprise Linux и доступного для загрузки.
примеры файлов
Пример файла /etc/sysconfig/network-scripts/ifcfg-eth0:
# название устройства:
DEVICE=”eth0″
# в случае, если IP получаем автоматически:
#BOOTPROTO=”dhcp”
# статический IP:
BOOTPROTO=”none”
# MAC адрес сетевой карты (в этом случае привязка к MAC адресу, а не к положению в слоте и т.п.):
HWADDR=”00:00:00:00:00:00″
NM_CONTROLLED=”yes”
# инициализировать при загрузке (иначен нужен ifup):
ONBOOT=”yes”
TYPE=”Ethernet”
UUID=”ffffffff-ffff-ffff-ffff-ffffffffffff”
IPADDR=192.168.1.3
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
Пример файла /etc/sysconfig/network-scripts/route-eth0:
192.168.5.50/24 via 192.168.0.2 dev eth0
Пример файла /etc/resolv.conf:
nameserver=192.168.1.5
nameserver=192.168.1.7
domain=mydomain.ru
Работа с файловой системой: навигация, создание-перемещение-удаление файлов, ссылки
Основные команды, используемые для навигации по файловой системе из окна терминала, создание, перемещение и удаление файлов и каталогов:
В ОС Linux существует два вида ссылок.
Жесткие ссылки привязываются к иноду, таким образом, файл присутствует в системе под несколькими разными именами. Файл существует до тех пор, пока с его инодом связано хотя бы одно имя. Понятия «жёсткая ссылка на файл» и «имя файла» являются синонимами.
Жесткие ссылки могут быть только на файлы, не на директории. Также нельзя создать жесткую ссылку на файл в другой файловой системе (у каждой ФС свой набор инодов).
Cимволические ссылки (или симлинки) — специальный вид файла, который ссылается на другой файл по имени, а не напрямую на инод. Симлинки не предохраняют файл от удаления. Если файл удалить, то симлинк на него станет нерабочим (или битым).
Симлинки создаются командой ln с опцией ‘-s’:
При работе с большим количеством файлов бывает удобно использовать маски — т.н. wildcards.
Wildcard «*» соответствует нулю или большему количеству символов:
Wildcard «?» заменяет один любой символ:
Шаблон «[]» позволяет явно указать набор символов — будут найдеты совпадения, содержащие один из указанных в скобках символов. Также в можно указать диапазон символов (для этого используется символ –/дефис) или несколько диапазонов подряд, тогда шаблон будет совпадать с одним любым символом из этого диапазона:
Базовая настройка сети
Смотрим все установленные сетевые адаптеры в системе:
ip a
В результате получаем что-то подобное:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:81:28:3c brd ff:ff:ff:ff:ff:ff
inet 192.168.156.22/22 brd 192.168.159.255 scope global ens32
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:81:3f:22 brd ff:ff:ff:ff:ff:ff
inet 10.243.254.68/26 brd 10.243.254.127 scope global ens34
valid_lft forever preferred_lft forever
* Из примера видно, что в моем CentOS есть 3 сетевых карты — lo (локальная петля), ens32 и ens34 — сетевые Ethernet адаптеры.
Если нужно настроить сеть для адаптера ens32, открываем на редактирование следующий конфигурационный файл:
vi /etc/sysconfig/network-scripts/ifcfg-ens32
И приводим его к следующему виду:
DEVICE=ens32
BOOTPROTO=static
IPADDR=192.168.0.155
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.54
DNS2=192.168.0.11
ONBOOT=yes
… а также для CentOS 8 добавим:
NM_CONTROLLED=yes
Основные опции
Опция | Описание | Возможные значения |
---|---|---|
DEVICE | Имя сетевого адаптера | Должно совпадать с именем в системе. В данном примере ens32 |
BOOTPROTO | способ назначения IP-адреса | static: ручное назначение IP, dhcp: автоматическое получение IP |
IPADDR | IP-адрес | адрес, соответствующий вашей сети |
NETMASK | Сетевая маска | должна соответствовать вашей сети |
GATEWAY | Шлюз по умолчанию | IP-адрес сетевого шлюза |
DNS1 | Основной DNS-сервер | IP-адрес сервера имен |
DNS2 | Альтернативный DNS-сервер | IP-адрес сервера имен |
ONBOOT | Способ запуска сетевого интерфейса | yes: автоматически при старте сервера, no: запускать вручную командой |
NM_CONTROLLED | Указываем, должен ли интерфейс управляться с помощью NetworkManager | yes: управляется NetworkManager, no: не может управляться NetworkManager |
Чтобы настройки применились, перезапускаем сетевую службу.
а) для CentOS 7:
systemctl restart network
б) для CentOS 8 вводим 2 команды:
systemctl restart NetworkManager
nmcli networking off; nmcli networking on
* в большей степени, это основное отличие версий 7 и 8. Чтобы команды смогли поменять настройки, для интерфейсов необходима настройка NM_CONTROLLED=yes.
Дополнительные опции (не обязательны для работы сети)
Опция | Описание | Возможные значения |
---|---|---|
DOMAIN | Указываем домен, который необходимо добавлять к имени хостов, если он не указан в запросе явно. | Строковое значение, соответствующее имени домена. |
IPV4_FAILURE_FATAL | Отключение сетевого интерфейса, если IP-адрес (v4) имеет неверную конфигурацию | yes: отключать, no: не отключать |
IPV6_FAILURE_FATAL | Отключение сетевого интерфейса, если IP-адрес (v6) имеет неверную конфигурацию | yes: отключать, no: не отключать |
IPV6_AUTOCONF | Разрешает или запрещает автоконфигурирование IPv6 с помощью протокола Neighbor Discovery | yes: разрешить автоконфигурирование, no: запретить |
IPV6INIT | Говорит о возможности использовать сетевой интерфейс для адресации IPv6 | yes: адресация может использоваться, no: не используется |
PEERROUTES | Задает приоритет настройки шлюза по умолчанию, полученного от DHCP | yes: маршрут от DHCP важнее, чем назначенный вручную, no: важнее маршрут, заданный вручную |
IPV6_PEERROUTES | Задает приоритет настройки шлюза по умолчанию, полученного от DHCP (для IPv6) | |
UUID | Уникальный идентификатор сетевого интерфейса. Его можно сгенерировать самостоятельно командой uuidgen | Строка из 32-х символов в формате 8-4-4-4-12. Например: fca8cc84-6f21-4bac-9ccb-36f281321ba4 |
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…
Sep 24 04:12:48 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): gateway 10.1.103.254
Sep 24 04:12:48 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): lease time 7200
Sep 24 04:12:48 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): nameserver ‘10.10.10.1’
Sep 24 04:12:48 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): nameserver ‘10.1.0.2’
Sep 24 04:12:48 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): domain name ‘urn.su’
Sep 24 04:12:48 localhost.localdomain NetworkManager: <info> dhcp (ens192): domain search ‘urn.su.’
Sep 24 04:12:48 localhost.localdomain NetworkManager: <info> dhcp (ens192): domain search ‘hel.fi.urn.su.’
Sep 24 04:12:48 localhost.localdomain NetworkManager: <info> dhcp (ens192): domain search ‘ad.urn.su.’
Sep 24 04:12:48 localhost.localdomain NetworkManager: <info> dhcp4 (ens192): state changed bound -> bound
Sep 24 04:12:48 localhost.localdomain dhclient: bound to 10.1.102.211 — renewal in 2903 seconds.
настройка параметров сети с помощью файлов конфигураций
Если Вы хотите настроить сеть таким образом, чтобы указанные параметры сети сохранялись и после перезагрузки системы, Вам необходимо изменить конфигурационные файлы.
расположение конфигурационных файлов
Настройка параметров сети (IP адрес, маска сети, шлюз, параметры DNS) производится в файлах ifcfg-ethX, которые находятся в папке /etc/sysconfig/network-scripts. Параметры DNS описываются также в файле /etc/resolv.conf. Маршруты (из таблицы маршрутизации) хранятся в файлах /etc/sysconfig/network-scripts/route-ethX.
ifcfg-ethX
Файлы находятся в папке /etc/sysconfig/network-scripts.
Название параметра | Описание параметра | Возможные значения | Пример использования |
---|---|---|---|
DEVICE | наименование интерфейса | eth0 eth1 . | device=eth0 device=eth1 |
BOOTPROTO | способ назначения IP | dhcp none static (пустое значение) | bootproto=dhcp bootproto= bootproto=static bootproto=none |
HWADDR | MAC адрес | HWADDR=»00:00:00:00:00:00″ | |
NM_CONTROLLED | должен ли интерфейс управляться NetworkManager | «yes» «no» | NM_CONTROLLED=»yes» |
ONBOOT | Должен ли этот интерфейс «подниматься» при запуске сетевой службы | «yes» «no» | ONBOOT=»yes» |
TYPE | тип интерфейса | «Ethernet» | TYPE=»Ethernet» |
UUID | UU | ||
IPADDR | IP адрес интерфейса | IPADDR=192.168.1.3 | |
NETMASK | маска подсети интерфейса | NETMASK=255.255.255.0 | |
GATEWAY | шлюз интерфейса | GATEWAY=192.168.1.1 | |
DNS1 | 1-й DNS сервер интерфейса | DNS1=192.168.1.1 | |
DNS2 | 2-й DNS сервер интерфейса | DNS2=192.168.1.2 | |
DOMAIN | текущий домен | DOMAIN=MYDOMAIN.LOCAL |
resolv.conf
Этот файл находится в папке /etc.
Название параметра | Описание параметра | Возможные значения | Пример использования |
---|---|---|---|
nameserver | адрес DNS сервера. Таких записей может быть несколько (не более 3-х) | nameserver 192.168.1.1 nameserver 192.168.1.2 | |
domain | имя локального домена (?) | domain mydom.local | |
search | подставляемое имя домена, если адрес задан не полностью | search mydom.local |
route-ethX
Файлы находятся в папке /etc/sysconfig/network-scripts.
Формат файла: / via dev
например: 192.168.5.50/24 via 192.168.0.2 dev eth0 или 5.12.35.141/16 via 192.168.1.3 dev eth1
Шлюз по умолчанию задается в файлах ifcfg-ethX. Можно также указать шлюз по умолчанию, например, следующим образом: default via 192.168.0.1 dev eth0
В файле route-eth0 нужно указывать все маршруты с dev eth0, а в файле route-eth1 — соответственно, все маршруты с dev eth1.
Как узнать Внешний IP-адрес
Основная загвоздка заключается в том, что пользователь устройства не имеет доступа к серверу своего поставщика услуг. Это решало бы проблему одним махом, но такой возможности нет. Юзеру нужно искать обходные пути.
Как это сделать:
- Откройте любой специальный сайт, который может распознать IP-адрес вашего устройства. Как вариант, можно в браузере ввести в любой поисковой системе фразу «мой ip»;
- Альтернативный вариант: запустите терминал Линукс и укажите в нем команду wget.
Узнать IP версии 4:
IP версии 6:
Если есть необходимость выяснить IP-адрес маршрутизатора, то придется действовать иным методом. Чтобы получить нужную информацию, внимательно ознакомьтесь с настройками гаджета.
Заключение
IP-адрес Линукс может потребоваться юзеру в различных ситуациях. Новичку нужно внимательно разобраться с типами адресов, чтобы понять специфику данного вопроса
Воспользовавшись нашими рекомендациями, вы быстро выявите способ получения важной информации о своем компьютере, функционирующем на базе популярной операционной системы Linux. Все эти способы указаны в статье
Совсем немного практики – и задача уже не кажется такой сложной, как это было в начале.
Как настроить DNS в CentOS 7
Текущие настройки dns сервера в CentOS можно посмотреть в двух местах:
- В файле с настройками сетевой карты ifcfg-eth0, которым мы ранее неоднократно редактировали.
- В файле /etc/resolv.conf
Зачем они сейчас в двух местах, я не знаю, но раньше настройки dns сервера в каких-то дистрибутивах, не помню уже точно каких, указывались только в resolv.conf, но в какой-то момент это изменилось. И все сетевые настройки стали храниться в одном файле вместе с адресом, шлюзом, маской и прочим. Если сейчас отредактировать файл resolv.conf и внести туда какие-то dns сервера, то после перезагрузки они будут заменены на значения из файла ifcfg-eth0.
Так что для того, чтобы установить параметры dns сервера, нужно отредактировать файл сетевых настроек ifcfg-eth0, добавив туда столько серверов, сколько требуется.
Например так:
DNS1=”192.168.159.2″
DNS2=”8.8.8.8″
DNS3=”8.8.4.4″
Для применения настроек сохраняем файл и перезапускаем сеть, все как обычно. После перезагрузки сервера настройки dns будут записаны в файл resolv.conf
# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.159.2
nameserver 8.8.8.8
nameserver 8.8.4.4Как отключить ipv6 в CentOS 7
В настоящее время активного использования протокола ipv6 нет и в обычной работе он не нужен. Хотя нас уже много лет пугают, что свободных ip адресов уже практически не осталось, но на деле пока еще всем хватает. Так что с точки зрения практических соображений ipv6 в настоящее время на сервере не нужен и его можно отключить.
Перед отключением ipv6 необходимо на всякий случай проверить, какие программы его используют в своей работе. Это нужно для того, чтобы избежать ошибок в их работе, предварительно отключив ipv6 в конфигурациях. Для того, чтобы увидеть, какие программы висят на ipv6 интерфейсе воспользуемся командой netstat:
# netstat -tulnp
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2317/master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1333/sshd
tcp6 0 0::1:25:::* LISTEN 2317/master
tcp6 0 0:::22:::* LISTEN 1333/sshd
udp 0 0 0.0.0.0:49252 0.0.0.0:* 694/avahi-daemon: r
udp 0 0 0.0.0.0:123 0.0.0.0:* 715/chronyd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 694/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:* 715/chronyd
udp6 0 0:::123:::* 715/chronyd
udp6 0 0::1:323:::* 715/chronyd
Все строки с::: это ipv6 протокол. В моем случае это sshd, postfix и chronyd. Отключим им ipv6 и оставим только ipv4.
Начнем с sshd. Открываем файл настроек /etc/ssh/sshd_config и находим строки:
#AddressFamily any
#ListenAddress 0.0.0.0
Раскомментируем их и изменим. Должно получиться вот так:
AddressFamily inet
ListenAddress 0.0.0.0
Теперь открываем файл настроек постфикс /etc/postfix/main.cf. Ищем там строку:
#inet_protocols = all
Меняем на:
Inet_protocols = ipv4
Отключаем ipv6 в chronyd. Для этого создаем файл /etc/sysconfig/chronyd и добавляем строку:
OPTIONS=-4
Теперь отключаем ipv6 в CentOS. Открываем файл /etc/sysctl.conf и добавляем туда строки:
Net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
Редактируем файл /etc/sysconfig/network, добавляя туда:
NETWORKING_IPV6=no
IPV6INIT=no
Перезагружаемся и проверяем результат:
# reboot# ifconfig
eno16777728: flags=4163 mtu 1500
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 2301 bytes 243024 (237.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2138 bytes 1327955 (1.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (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
Нигде нет упоминания про inet6 и адреса формата ipv6. Значит все в порядке, мы отключили ipv6 в CentOS. Теперь проверим список открытых портов:
# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2291/master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1322/sshd
udp 0 0 0.0.0.0:123 0.0.0.0:* 2453/chronyd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 697/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:* 2453/chronyd
udp 0 0 0.0.0.0:57259 0.0.0.0:* 697/avahi-daemon: r
Все порты ipv4. Все в порядке, наша задача выполнена.
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
CentOS 7 имеет широкий спектр инструментов, которые можно использовать для настройки и управления сетью, от ручного редактирования файла конфигурации сети до использования таких команд, как ip, ifconfig, nmtui, nmcli или route.
Самая простая утилита, которую новичок может использовать для управления и изменения конфигурации сети, — это графическая командная строка nmtui.
Чтобы изменить имя хоста системы с помощью утилиты nmtui, выполните команду nmtui-hostname, задайте имя хоста своего компьютера и нажмите OK для завершения, как показано на снимке экрана ниже.
Чтобы управлять сетевым интерфейсом, выполните команду nmtui-edit, выберите интерфейс, который вы хотите редактировать, и выберите правку в правом меню, как показано на скриншоте ниже.
Когда вы перейдете в графический интерфейс, предоставленный утилитой nmtui, вы можете настроить параметры IP сетевого интерфейса, как показано на снимке экрана ниже. Когда вы закончите, перейдите к OK, используя клавишу , чтобы сохранить конфигурацию и выйти.
Чтобы применить новую конфигурацию сетевого интерфейса, выполните команду nmtui-connect, выберите интерфейс, которым вы хотите управлять, и нажмите опцию Деактивировать / Активировать, чтобы вывести из эксплуатации и поднять интерфейс с настройками IP, как показано на скриншотах ниже.
Чтобы просмотреть настройки сетевого интерфейса, вы можете проверить содержимое файла интерфейса или выполнить приведенные ниже команды.
Проверьте конфигурацию сети
Другими полезными утилитами, которые можно использовать для управления скоростью, состоянием канала или получения информации о сетевых интерфейсах машины, являются ethtool и mii-tool.
Проверьте сетевое соединение
Важным аспектом работы вашей машины в сети является составление списка всех открытых сетевых сокетов, чтобы увидеть, какие программы прослушивают какие порты и в каком состоянии установлены сетевые соединения.
Чтобы вывести список всех серверов, которые открыли сокеты TCP или UDP в состоянии прослушивания, введите следующие команды. Тем не менее, UDP-сервер не будет перечислять состояние сокетов из-за того, что UDP — это протокол без установления соединения, который только отправляет пакеты по сети и не устанавливает соединения.
Настройка сети
В данной инструкции рассмотрим использование сетевого моста.
Настраивая сетевой мост через удаленное подключение, внимательно проверяйте вводимые данные. В случае ошибки соединение будет прервано.
Устанавливаем пакет для работы с bridge:
yum install bridge-utils
Смотрим список сетевых интерфейсов и их настроек:
ip a
В моем примере были следующие данные:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp4s0f0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.24/24 brd 192.168.1.255 scope global enp4s0f0
valid_lft forever preferred_lft forever
inet6 fe80::216:76ff:fe04:26c6/64 scope link
valid_lft forever preferred_lft forever
3: enp5s5: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:16:76:04:26:c7 brd ff:ff:ff:ff:ff:ff
4: virbr0: mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff
* из этого для нас важны enp4s0f0 — реальный сетевой интерфейс с настроенным IP-адресом 192.168.1.24, через который идет подключение сервера к локальной сети (из него мы будем делать мост); 00:16:76:04:26:c6 — mac-адрес реального ethernet адаптера; virbr0 — виртуальный сетевой адаптер.
Редактируем настройки реального адаптера:
vi /etc/sysconfig/network-scripts/ifcfg-enp4s0f0
Приводим его к виду:
ONBOOT=yes
BRIDGE=br0
TYPE=Ethernet
DEVICE=enp4s0f0
BOOTPROTO=none
Создаем интерфейс для сетевого моста:
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.24
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=77.88.8.8
Перезапускаем сетевую службу:
systemctl restart network
Сетевые настройки должны измениться — в моем случае:
2: enp4s0f0: mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff
3: enp5s5: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:16:76:04:26:c7 brd ff:ff:ff:ff:ff:ff
4: virbr0: mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff
6: br0: mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.24/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::216:76ff:fe04:26c6/64 scope link
valid_lft forever preferred_lft forever
Настаиваем перенаправления сетевого трафика:
vi /etc/sysctl.d/99-sysctl.conf
net.ipv4.ip_forward=1
Применяем настройки:
sysctl -p /etc/sysctl.d/99-sysctl.conf
Перезапускаем libvirtd:
systemctl restart libvirtd
Настройка сетевых интерфейсов в CentOS
Настройка сетевых интерфейсов в CentOS происходит правкой конфигурационных файлов. Файлы интерфейсов хранятся в директории /etc/sysconfig/network-scripts, каждый отвечает за свой интерфейс, таким образом сколько интерфейсов, столько и файлов. Во время установки создается дефолтный файл с именем — ifcfg-enp0s3.
Содержание файла ifcfg-enp0s3: TYPE="Ethernet" BOOTPROTO="dhcp" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" IPV6_FAILURE_FATAL="no" NAME="enp0s3" UUID="cac20b32-66a0-46bd-9b68-ec786f52d2f8" DEVICE="enp0s3" ONBOOT="yes"
Рассмотрим самые важные параметры и значения, чтобы понимать что к чему. Более подробно все параметры описаны в официальной документации Red Hat.
- TYPE — задает тип сетевого адаптера, в данном случае «Ethernet».
- BOOTPROTO — способ назначения ip-адреса. Может иметь значения: dhcp — динамический ip-адрес, static или none — статический ip-адрес.
- DEFROUTE — использовать интерфейс в качестве маршрута по умолчанию. Значения yes или no.
- IPV4_FAILURE_FATAL — В случае отсутствия IPv4 протокола закрывать соединение, по умолчанию no.
- NAME — имя интерфейса.
- DEVICE — имя устройства.
- UUID — идентификационный номер интерфейса.
- ONBOOT — старт интерфейса при загрузке, значения yes или no.
- IPV6INIT — включение поддержки IPv6 протокола, значения yes или no.
- IPV6_AUTOCONFIPV6_DEFROUTEIPV6_PEERDNSIPV6_PEERROUTESIPV6_FAILURE_FATAL — дополнительные параметры для IPv6 протокола.
Подобная конфигурация означает получение динамического ip-адреса при каждом запуске. Для назначения статического адреса нужно изменить несколько параметров.
- BOOTPROTO=none — изменяем на none, тем самым указывая что ip будет статическим.
- IPADDR=192.168.1.6 — назначаем сам адрес.
- NETMASK=255.255.255.0 — задаем маску подсети.
- GATEWAY=192.168.1.1 — указываем адрес шлюза.
- DNS1=192.168.1.1 — задаем адреса DNS серверов.
После внесенных изменений файл должен принять следующий вид, естественно с поправками на ваши значения адресов.
TYPE=Ethernet BOOTPROTO=none IPADDR=192.168.1.6 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=192.168.1.1 DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=enp0s3 UUID=cac20b32-66a0-46bd-9b68-ec786f52d2f8 DEVICE=enp0s3 ONBOOT=yes
Перезапустим интерфейс для применения изменений.
ifdown enp0s3 && ifup enp0s3
Изменить locale
Чтобы в CentOS изменить locale можно либо откредактирвоать файл
locale.conf
в /etc/
либо применить команду localect (начиная с CentOS 7)
Предположим, что нужно поменять локаль на en_us.iso88591
Откройте
locale.conf
и найдите строку LANG
sudo vi /etc/locale.conf
Замените UTF-8 на iso88591
Альтернативный способ с использованием
sed
— выполните команду
sudo sed -i s/LANG=\»en_US\.UTF-8\»/LANG=\»en_US\.iso88591\»/ /etc/locale.conf
Чтобы проверить изменения выполните
localectl status
System Locale: LANG=en_US.iso88591
VC Keymap: us
X11 Layout: us
Чтобы изменить системную переменную, например, LC_CTYPE выполните
sudo vi ~/.bashrc
И внесите в конец файла следующий код
locale -c -k LC_CTYPE
LC_CTYPE
ctype-class-names=»upper»;»lower»;»alpha»;»digit»;»xdigit»;»space»;»print»;»graph»;»blank»;»cntrl»;»punct»;»alnum»;»combining»;»combining_level3″
ctype-map-names=»toupper»;»tolower»;»totitle»
ctype-width=16
ctype-mb-cur-max=1
charmap=»ISO-8859-1″
Как настроить сеть в консоли
Настроить сеть можно не только на этапе установки, но и после неё. Настройка сети CentOS через консоль пригодится, если вы пропустили этап настройки при установке или хотите изменить существующие параметры сети.
Как узнать, какие сетевые интерфейсы установлены
Чтобы посмотреть список установленных сетевых интерфейсов, перейдите в консоль через пользователя root и введите команду:
или
Результат выполнения каждой из команд в консоли представлен ниже. В примере команда показывает, что установлено два интерфейса — lo (локальная петля) и enp0s3 (сетевой адаптер Ethernet). Заметьте, что команда отображает только названия интерфейсов. Имена интерфейсам назначаются автоматически.
Как настроить сеть
Рассмотрим настройку сети для сетевого интерфейса, например, с названием enp0s3.
В CentOS в каталоге /etc/sysconfig/network-scripts/ хранятся конфигурационные файлы (Network Config) с настройками всех сетевых интерфейсов. Эти файлы начинаются с приставки ifcfg-. Так, для рассматриваемого сетевого интерфейса название файла ifcfg-enp0s3, а путь до него — /etc/sysconfig/network-scripts/ifcfg-enp0s3.
Чтобы настроить сеть для интерфейса:
-
1.
Для начала вы можете посмотреть сетевые настройки с консоли. Откройте конфигурационный файл с помощью текстового редактора nano (вы можете использовать другой удобный вам редактор):
Где enp0s3 — название сетевого интерефейса.
Содержимое конфигурационного файла зависит от сетевого интерфейса. В файле могут быть указаны разные параметры сети. Файл выглядит следующим образом:
-
2.
Измените IP-адрес, маску подсети, шлюз и серверы DNS. Для этого замените или добавьте в файл соответствующие строки:
Где:
DEVICE — имя настраиваемого сетевого интерфейса;
BOOTPROTO — способ назначения IP-адреса в CentOS: static (вручную), dhcp (автоматический) или none (не использовать dhcp);
ONBOOT — запуск интерфейса при старте сервера: yes (запускать автоматически), no (запускать вручную);
IPADDR — IP-адрес;
NETMASK — маска подсети;
GATEWAY — шлюз для доступа к интернету;
DNS1 (а также DNS2, DNS3) — DNS-серверы — можно добавить несколько.
-
3.
Сохраните изменения и выйдите из редактора. Для этого нажмите Ctrl+X, затем Y. -
4.
Затем необходимо перезапустить сеть.
Если у вас CentOS 7, введите команду:Если у вас CentOS 8, введите команду:
Готово, после того, как произойдет перезапуск сети, сеть будет настроена. Мы рассмотрели, как происходит в CentOS настройка сети из консоли.
Сетевые настройки на сервере 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 | настроили шлюз по-умолчанию |
Чтобы изменения вступили в силу, необходимо перечитать сетевые настройки:
Проверяем, применилась ли новая конфигурация сети:
Все в порядке, новые настройки сетевого интерфейса установлены.
Заключение
С помощью бесплатного дистрибутива Linux мы смогли за считанные минуты настроить шлюз для организации доступа в интернет компьютеров из локальной сети. У меня ушло минут 10 на настройку шлюза по этой инструкции. Если вы делаете это первый раз, то конечно у вас уйдет гораздо больше времени. Нужно будет разобраться в нюансах, к тому же я дал много ссылок на дополнительный материал.
Давайте разберемся в том, что мы сделали:
- Выполнили предварительную настройку сервера, подготовили его к работе.
- Включили маршрутизацию.
- Настроили firewall.
- Включили NAT.
- Установили и настроили dnsmasq для организации служб dns и dhcp.
- Проанализировали сетевую активность шлюза, узнали кто загружает канал интернета.
Это минимально необходимый функционал для организации работы шлюза на CentOS 7. Следующим этапом может быть настройка прокси сервера, шейпера траффика, настройка 2-х и более провайдеров и много другое. Что-то из этого я рассмотрю в своих будущих статьях.
Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Что даст вам этот курс:
- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по . Цены 2020 года.