Centos 7 сетевой интерфейс устройство
Пользователи Linux, избалованные дистрибутивами наподобие Ubuntu, практически не сталкиваются с проблемой настройки сети. Интернет подключается автоматически в момент установки дистрибутива. Система сама находит сетевое оборудование и производит его настройку. Примерно так же, как это происходит в операционной системе Windows сравнительно поздних выпусков.
В Centos дело обстоит иначе – юзеру или администратору приходится поработать мозгами и ручками. Связано это с практичностью и минимализмом дистрибутива в некоторых его аспектах. А также тем, что он рассчитан на сравнительно узкий круг подготовленных пользователей. Данную ОС особенно любят системные администраторы в офисах и на производстве. На протяжении нашего короткого рассказа мы обсудим, как в Centos осуществляется настройка сети.
Разумеется, наш рассказ не будет всеохватным, мы остановимся только на основных моментах, а тонкую регулировку параметров оставим на потом. Многие пользователи сталкиваются с препятствиями уже на первом этапе: терминал реагирует на ifconfig ошибкой. Мол, нет такой команды и все тут. Ifconfig необходимо запускать от имени администратора системы с префиксом «su -».
Более подробно о конфигурировании
Вся настройка сети в CentOs сводится к редактированию конфигурационных файлов с именами, начинающимися на «ifcfg-».
Начнем с редактирования файла ifcfg-eth0, расположенного по адресу /etc/sysconfig/network-scripts/. Сделать это можно при помощи редактора vi или любого другого. Имеется две основные разновидности настроек сети в CentOs – на базе протокола DHCP и для статического IP-адреса. В первом случае содержимое данного файла конфигурации нужно будет сделать таким:
В случае использования DHCP эти строки будут выглядеть так:
Есть еще один файл конфигурации, который нужно править при настройке сети в CentOs. Это файл /etc/sysconfig/network. Сюда нужно ввести такие строки:
Обязательно следует выполнить рестарт сетевого интерфейса. Делается это так:
Указания на DNS задаются в файле под именем /etc/resolv.conf. Сведения о DNS вводятся в данный файл в таком формате:
Вот, пожалуй, и все, что нужно знать и уметь для первоначальной настройки сети в CentOs. То есть ничего особенно сурового. Приведем еще команду, используемую для отключения сетевого интерфейса.
В данном материале я затрону актуальную тему, с которой начинается практически любая первоначальная работа с сервером. Настройка основных параметров сети в CentOS — ip адрес, dhcp, ipv6, dns, hostname, статические маршруты, сетевые карты и другие network параметры. Двигаться по теме будем шаг за шагом от простого к сложному, разбирая все нюансы по порядку и отвечая на наиболее популярные вопросы.
Сетевые настройки на сервере CentOS 7
Первый раз с сетевыми настройками сервера CentOS мы сталкиваемся, когда производим установку. На экране первоначальной настройки есть отдельный пункт, касающийся настройки сетевых интерфейсов:
Зайдя в него мы видим список подключенных сетевых карт. Каждую из них можно включить соответствующим ползунком (пункт 1 на картинке). При активировании интерфейса он автоматически получает настройки по dhcp. Результат работы dhcp можно посмотреть тут же. Если вас не устраивают эти настройки, их можно отредактировать, нажав configure (пункт 3 на картинке). Здесь же можно задать hostname (пункт 2 на картинке):
Открыв окно дополнительный настроек Ehernet, вы сможете изменить имя сетевого интерфейса, указать настройки IP (пункт 1 на картинке), выбрать ручные настройки (пункт 2 на картинке), назначить ip адрес (пункт 3 на картинке), установить dns сервер (пункт 4 на картинке) и сохранить сетевые настройки (пункт 5 на картинке):
После выполнения остальных настроек начнется установка. После установки у вас будет сервер с указанными вами сетевыми настройками.
Теперь рассмотрим другую ситуацию. Сервер, а соответственно и конфигурацию сети, производили не вы, а теперь вам надо ее посмотреть либо изменить. В вашем распоряжении консоль сервера, в ней и будем работать. Если у вас установка производилась с дистрибутива minimal , то при попытке посмотреть сетевые настройки с помощью команды ifconfig в консоли вы увидите следующее:
Bash: ifconfig: command not found
или в русской версии:
Bash: ifconfig команда не найдена
Для работы с ifconfig и прочими сетевыми утилитами необходимо установить пакет net-tools . Сделаем это:
# yum -y install net-tools.x86_64
Теперь можно увидеть настройки сети:
Если у вас нет желания устанавливать дополнительный пакет, то можно воспользоваться более простой командой ip с параметрами:
# ip addr
1: lo:
Мы увидели конфигурацию сети, теперь давайте ее отредактируем. Допустим, нам нужно сменить ip адрес. Для этого идем в директорию /etc/sysconfig/network-scripts и открываем на редактирование файл ifcfg-eth0 . Этот файл имеет примерно следующее содержание:
По настройкам из этого файла мы получаем ip адрес по dhcp. Чтобы вручную прописать статический ip, приводим файл к следующему содержанию:
Мы изменили параметры:
Чтобы изменения вступили в силу, необходимо перечитать сетевые настройки:
Restarting network (via systemctl): [ OK ]
Проверяем, применилась ли новая конфигурация сети:
# ifconfig:
eno16777728: flags=4163
Все в порядке, новые настройки сетевого интерфейса установлены.
Как получить сетевые настройки по DHCP
Теперь рассмотрим обратную ситуацию. Допустим, у вас сетевая карта имеет какие-то настройки, установленные вручную. Но вы хотите, чтобы ваш компьютер получал настройки сети по dhcp в качестве клиента. Для этого вам нужно произвести операцию, обратную той, что мы делали раньше. То есть открываем файл /etc/sysconfig/network-scripts/ifcfg-eth0 и удаляем там строки с параметрами DNS, IPADDR, PREFIX, GATEWAY а в параметре BOOTPROTO указываем значение «dhcp» . Сохраняем файл и перезапускаем сеть:
# /etc/init.d/network restart
Затем проверяем, получил ли наш client по dhcp настройки.
Как настроить 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 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 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
Нигде нет упоминания про 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 в CentOS 7
По-умолчанию, во время установки CentOS ставит имя хоста localhost.localdomain . Если вы его не поменяли, то можно это сделать позже. Для начала давайте проверим, какое имя хоста у вас установлено. Делается это с помощью команды в консоли hostname , либо с помощью uname :
# hostname localhost.localdomain # uname -n localhost.localdomain
Для того, чтобы изменить имя хоста в CentOS, необходимо отредактировать файл /etc/hostname . Проверим его содержимое:
# cat /etc/hostname localhost.localdomain
Отредактируем этот файл, чтобы изменить hostname:
# mcedit /etc/hostname centos.localhost
Сохраняем файл и проверяем:
# hostname centos.localhost
Есть готовая команда, которая сразу устанавливает необходимое имя сервера:
# hostnamectl set-hostname centos.localhost
Все в порядке, мы изменили имя хоста на centos.localhost
Установить шлюз по-умолчанию в CentOS 7
Если по каким-то причинам при настройке сетевых параметров у вас не установился шлюз по-умолчанию, то сделать это можно вручную. Для начала проверим, какой шлюз по-умолчанию установлен в системе в данный момент:
# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 149.154.71.254 0.0.0.0 UG 0 0 0 eth0 10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0 10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 149.154.70.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0 192.168.1.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
Строка с Destination 0.0.0.0 определяет адрес шлюза. Если у вас ее нет, либо в поле Gateway установлен неверный шлюз, то можно это изменить. Устанавливаем шлюз по-умолчанию:
route add default gw 192.168.0.1Network Manager в CentOS 7
В CentOS по-умолчанию имеется служба, которая управляет всеми сетевыми подключениями — NetworkManager . Она постоянно контролирует сетевые настройки и с помощью демона по управлению конфигурациями вносит соответствующие изменения в активные сетевые устройства. Она поддерживает стандартные файлы конфигураций ifcfg.
Список сетевых утилит и приложений:
Пользователи не взаимодействуют с NetworkManager в CentOS напрямую, для этого используются графические и утилиты командной строки. Одной из таких утилит является system config network tui .
System config network tui в CentOS 7
Для управления сетевыми настройками в CentOS можно воспользоваться графической утилитой nmtui . Проверить ее наличие в системе очень просто. Достаточно запустить ее в консоли:
Если она у вас не установлена, то исправить это очень просто. Устанавливаем в CentOS system config network tui:
# yum install NetworkManager-tui
С помощью tui можно указать любые сетевые настройки, которые мы делали раньше через командную строку и редактирование конфигурационных файлов. Давайте сделаем это. Вызываем программу:
Выбираем первый пункт Edit a connection
, затем выбираем сетевой интерфейс и жмем «Edit»:
Здесь мы можем изменить имя сетевой карты, mac адрес, указать тип сетевых настроек — ручной или dhcp, указать вручную ip адрес, адрес шлюза, днс сервера, добавить маршруты и некоторые другие настройки:
После завершения редактирования сохраняем настройки, нажимая ОК.
Если в первом экране утилиты выбрать пункт Set System Hostname
, то можно быстро указать имя хоста. Результат будет такой же, как мы делали раньше в консоли.
Как добавить статический маршрут в CentOS 7
Для управления маршрутизацией в CentOS может понадобиться добавить статический маршрут. Сделать это достаточно просто с помощью консольной команды. Для начала проверим существующие маршруты, используя netstat :
# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728 192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728
В данном случае у нас один маршрут для адреса 0.0.0.0/0.0.0.0 шлюз используется 192.168.159.2, он же шлюз по-умолчанию. То есть по сути, статических маршрутов никаких нет. Добавим один из них.
Допустим, у нас есть подсеть 192.168.8.0 маска 255.255.255.0, трафик в эту подсеть маршрутизирует шлюз 192.168.159.5 Добавляем маршрут:
# route add -net 192.168.8.0/24 gw 192.168.159.5
Проверяем, появился ли добавленный маршрут в таблицу маршрутизации :
# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728 192.168.8.0 192.168.159.5 255.255.255.0 UG 0 0 0 eno16777728 192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728
Все в порядке, маршрут добавлен. Но после перезагрузки этот статический маршрут будет удален. Чтобы этого не произошло и добавленные маршруты сохранялись, необходимо их записать в специальный файл. В папке /etc/sysconfig/network-scripts создаем файл с именем route-eth0 следующего содержания:
# mcedit /etc/sysconfig/network-scripts/route-eth0 192.168.8.0/24 via 192.168.159.5
Перезагружаемся и проверяем, на месте ли маршрут:
# reboot # netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728 192.168.8.0 192.168.159.5 255.255.255.0 UG 0 0 0 eno16777728 192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728
Все в порядке, статический маршрут добавлен.
Как настроить 2 IP адреса на одном интерфейсе
Если у вас появилась необходимость настроить 2 IP адреса на одном интерфейса в CentOS, то сделать это достаточно просто. Воспользуемся командой ifconfig. Для начала проверим список сетевых интерфейсов:
# ifconfig
eno16777728: flags=4163
Добавим к интерфейсу eno16777728 еще один ip адрес 192.168.159.120:
# ifconfig eno16777728:1 192.168.159.120 up
Проверим, что получилось:
# ifconfig
eno16777728: flags=4163
Все в порядке, мы добавили второй ip адрес на один и тот же интерфейс. Но после перезагрузки дополнительный адрес не сохранится. Чтобы его сохранить, необходимо создать файл настроек интерфейса в папке /etc/sysconfig/network-scripts
# mcedit /etc/sysconfig/network-scripts/ifcfg-eno16777728:1 DEVICE=eno16777728:1 BOOTPROTO=static IPADDR=192.168.159.120 NETMASK=255.255.255.0 ONBOOT=yes
Сохраняем файл, перезагружаемся и проверяем, что получилось. Второй ip адрес должен быть на месте.
Как сделать перезапуск сети в CentOS 7
Ранее я уже касался этого вопроса, но на всякий случай повторим отдельно. Допустим, вы внесли некоторые изменения в конфигурацию сети. Как применить эти настройки, не перезагружая сервер? Очень просто. Для перезапуска сети в CentOS достаточно воспользоваться командой:
# /etc/init.d/network restart
Служба NetworkManager перечитает все сетевые настройки и применит изменения.
Как узнать IP адрес в CentOS 7
Для того, чтобы быстро узнать текущий IP адрес в CentOS необходимо воспользоваться следующими командами:
# ifconfig | grep inet inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255 inet 127.0.0.1 netmask 255.0.0.0
Либо второй вариант определения локального ip адреса:
# ip addr | grep inet inet 127.0.0.1/8 scope host lo inet 192.168.159.129 /24 brd 192.168.159.255 scope global eno16777728
Обе команды позволяют быстро узнать свой ip адрес.
Что делать, если CentOS не видит сетевую карту?
Вы установили сервер, загрузились и обнаружили, что в системе нет ни одной сетевой карты. Что в таком случае делать? Первым делом посмотрите вывод команды dmesg и поищите там поминание о своей карте. Возможно, она в системе есть, просто не активирована. Активировать ее можно с помощью nmtui , а котором я рассказывал выше.
Там есть пункт меню Activate connection , нужно в него зайти и активировать вашу сетевую карту. После этого ее можно будет настраивать.
Если же вашей сетевой карты нет в системе, то нужно поискать в интернете по модели информацию об этой сетевой карте. Возможно в репозиториях будут драйвера для нее. Это достаточно распространенная ситуация. Чаще всего драйвера найдутся и их необходимо будет правильно установить.
Есть еще вероятность, что вы не увидите своей карточки при выводе команды ifconfig, если в эту карту не воткнут сетевой провод. Чтобы наверняка посмотреть все интерфейсы, необходимо использовать ключ -a:
# ifconfig -a
Есть еще один способ поискать сетевую карту в системе. Установите пакет pciutils :
# yum -y install pciutils
И посмотрите вывод команды:
# lspci | grep Ethernet
Если сетевая карта видится системой, то должно быть что-то в этом роде:
02:00.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
Если в выводе пусто, значит сетевая карта не определена.
Что делать, если сеть недоступна в CentOS?
Допустим, вы пытаетесь пинговать какой-то адрес, например 8.8.8.8 и получаете ответ, что сеть не доступна:
# ping 8.8.8.8
А в ответ получаете:
Connect: Network is unreachable
Такая ситуация может возникнуть, если у вас не установлен шлюз по-умолчанию. Добавить его можно с помощью команды:
# route add default gw 192.168.0.1
Если дело не в шлюзе, то нужно проверить настройки сетевых адаптеров. Если нет ни одного активного адаптера, то вы так же будете получать сообщение о том, что сеть не работает. Необходимо, чтобы в системе был правильно настроен хотя бы один сетевой адаптер. Как это сделать, написано выше.
Использование сетевых утилит traceroute, dig в CentOS
Для диагностики сетевых подключений в CentOS полезно использовать специальные утилиты. Но если вы использовали установку minimal, то их скорее всего в системе не будет. К примеру, популярная утилита traceroute при попытке ее запуска выдаст сообщение:
# traceroute ya.ru bash: traceroute: command not found
Ее нужно установить отдельно из репозитория:
# yum -y install traceroute
То же самое с популярной программой dig для работы с dns серверами и записями:
# dig ya.ru bash: dig: command not found
Чтобы эта сетевая утилита заработала, необходимо установить пакет bind-utils :
# yum -y install bind-utils
Настройка 802.1Q VLAN в CentOS 7
Для поднятия тегированного интерфейса на CentOS нужно в первую очередь проверить поддержку ядром 8021q :
# modprobe 8021q
Если сообщений об ошибке нет, значит все в порядке, модуль загрузился. Если же модуль не найден, необходимо пересобрать модули ядра, включив поддержку необходимого модуля. Проверим на всякий случай, загрузился ли модуль:
# lsmod | grep 8021q 8021q 29022 0 garp 14384 1 8021q mrp 18542 1 8021q
Все в порядке, модуль 8021q загружен, добавим его в автозагрузку:
# echo 8021q >> /etc/modules-load.d/8021q.conf
Теперь создаем файл конфигурации для vlan в /etc/sysconfig/network-scripts:
# mcedit ifcfg-eth0.2000 VLAN=yes DEVICE=eth0.2000 BOOTPROTO=static ONBOOT=yes TYPE=Vlan IPADDR=192.168.100.2 NETMASK=255.255.255.0
Обращаю внимание на выделенное жирным. Во всех инструкциях в интернете, что мне попались, этот параметр был указан как TYPE=Ethernet , но с такой настройкой интерфейс с vlan не поднимался, появлялась ошибка:
Error: no device found for connection "System eth0.2000".
Только после того, как я исправил, все заработало как надо. Так что сохраняем и активируем интерфейс:
# ifup eth0.2000 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
Проверяем наш vlan:
# ip l ls
1: lo:
Все в порядке, тегированный интерфейс поднят. По аналогии можно создать еще несколько подобных интерфейсов, не забывая изменять им имена и адреса.
На этом мой объемный материал на тему настройки сети в CentOS закончен. Буду очень рад комментариям, замечаниям, поправкам. Они наверняка будут. Создавая подобные материалы я в первую очередь учусь сам и подтягиваю свои знания в предметной области. Тут могут быть где-то ошибки и описки, хотя я и проверяю все на живых системах во время написания руководств, но все равно возможны неточности и опечатки.
Онлайн курс "Администратор Linux"
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по.Однако, чтобы их решить раз и навсегда рекомендуем, при технической возможности, выделить IP-АТС белый IP.
Внимание: делайте это если вы хорошо понимаете, что такое безопасность (Прочитать можно ) и с iptables на ТЫ.
Если в сервере нет второй сетевой карты, то обычно ее можно приобрести за небольшие деньги. Покупайте сетевую карту только от известного производителя, тогда она без проблем определится в системе и прослужит вам долго.
1. Определение сетевой карты в системе.
После того как вставили сетевую карту и загрузились, вводим команду: ifconfig. Если сетевая определилась, то мы увидим например такое:
….
RX packets:222424 errors:0 dropped:0 overruns:0 frame:0
TX packets:3456 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:45173795 (43.0 MiB) TX bytes:380609 (371.6 KiB)
Interrupt:225
2. Настройка IP адреса
Это значит, что сетевая карта определилась, но пока не имеет IP адреса. Вставляем провод от провайдера для настройки внешнего IP. Например, провайдер выдал нам такие настройки:
ip: 123.45.45.2
gw: 123.45.45.1
netmask: 255.255.255.252
dns: 123.45.44.1
Представим, что мы находимся в другом городе и при потери контроля нас ждет командировка, ну или придется долго объяснять пользователю, что нужно сделать. Поэтому делаем все поэтапно.
Начинаем править конфиг:
nano /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:e0:4c:33:59:b0
IPADDR=123.45.45.2
NETMASK=255.255.255.252
Теперь перезапускаем наш eth1 интерфейс:
# ifdown eth1
# ifup eth1
Смотрим, что ip-адрес правильный:
# ifconfig
….
eth1 Link encap:Ethernet HWaddr 00:E0:4C:33:59:B0
inet addr:123.45.45.2 Bcast:123.45.45.3 Mask:255.255.255.252
inet6 addr: fe80::2e0:4cff:fe33:59b0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:228286 errors:0 dropped:0 overruns:0 frame:0
TX packets:3508 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:46361012 (44.2 MiB) TX bytes:389499 (380.3 KiB)
Interrupt:225
Теперь проверяем доступность шлюза провайдера. То что он выдал, надо еще проверить:
# ping 123.45.45.1
PING 123.45.45.1 (123.45.45.1) 56 (84) bytes of data.
64 bytes from 123.45.45.1: icmp_seq=1 ttl=64 time=0.127 ms
64 bytes from 123.45.45.1: icmp_seq=2 ttl=64 time=0.127 ms
--- 123.45.45.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.127/0.127/0.127/0.000 ms
Ага, все хорошо. Но опять же, это не значит, что нас пустят в интернет. Добавляем маршрут, например, до нашего роутера откуда работаем, через новый шлюз 123.45.45.1.
# route add -host 87.250.250.203 gw 123.45.45.1
Проверяем, что маршрут добавился
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
87.250.250.203 123.45.45.1 255.255.255.255 UGH 0 0 0 eth1
192.168.192.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
123.45.45.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.192.1 0.0.0.0 UG 0 0 0 eth0
Выполням ping 87.250.250.203 и traceroute 87.250.250.203, удостоверяемся, что все проходит удачно. Для гарантии добавьте маршруты до DNS сервера, который будет использоваться и еще какой-нибудь узел в интернете. Если все пингуется, значит наш gw пускает в интернет. Теперь можно сменить маршрут по умолчанию на новый, а старый закомментировать.
# nano /etc/sysconfig/network-scripts/ifcfg-eth0
# Broadcom Corporation NetXtreme BCM5723 Gigabit Ethernet PCIe
DEVICE=eth0
BOOTPROTO=none
HWADDR=2c:41:38:87:88:43
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.192.87
#GATEWAY=192.168.192.1
TYPE=Ethernet
# nano /etc/sysconfig/network-scripts/ifcfg-eth1
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:e0:4c:33:59:b0
IPADDR=123.45.45.2
NETMASK=255.255.255.252
GATEWAY=123.45.45.1
Если все сделано верно, то выполняем перезагрузку всех сетевых интерфейсов
# service network restart
Внимание: убедитесь, что правила iptables позволяют сделать подключение из чужой сети. Временно выключить защиту можно командой: service iptables stop
И если все прошло гладко, то вы уже сможете подключится через внешний IP.
Внимание: возможны отличия в конфигурации, внимательно подходите к этому вопросу, если сервер находится далеко и нет KVM.
3. Настройка роутинга
Итак, мы добавили второй интерфейс, настроили его. Теперь может встать задача, настройки маршрутизации трафика до определенного хоста или сети через старый шлюз (например, там трафик дешевле). Для этого необходимо прописать маршрут. Это делается командой route.
#route add -host 95.11.13.5 gw 192.168.192.1 dev eth0
Делаем ping и traceroute (mtr) до хоста 95.11.13.5. Видим, что трафик идет через указанный шлюз.
Примечание: часто думают, что на этом настройка закончена, но после перезагрузки или рестарта сетевых интерфейсов маршруты слетают. Тут и добавка в rc.local может не помочь
Правильно прописать маршруты «навсегда» так.
Создаем файл:
#nano /etc/sysconfig/network-scripts/route-eth0
ADDRESS0=95.11.13.5
GATEWAY0=192.168.192.1
NETMASK0=255.255.255.255
Сохраняем. Теперь после service network restart данный маршрут пропишется автоматически.
Примечание: ethX тот, который находится в одной сети с шлюзом, через который мы хотим пустить трафик
В данном материале я затрону актуальную тему, с которой начинается практически любая первоначальная работа с сервером. Настройка основных параметров сети в CentOS - ip адрес, dhcp, ipv6, dns, hostname, статические маршруты, сетевые карты и другие network параметры.
Двигаться по теме будем шаг за шагом от простого к сложному, разбирая все нюансы по порядку и отвечая на наиболее популярные вопросы.
- Сетевые настройки на сервере CentOS 7
- Как получить сетевые настройки по DHCP
- Как настроить DNS в CentOS 7
- Как отключить ipv6 в CentOS 7
- Как изменить hostname в CentOS 7
- Установить шлюз по-умолчанию в CentOS 7
- Network Manager в CentOS 7
- System config network tui в CentOS 7
- Как добавить статический маршрут в CentOS 7
- Как настроить 2 IP адреса на одном интерфейсе
- Как сделать перезапуск сети в CentOS 7
- Как узнать IP адрес в CentOS 7
- Что делать, если CentOS не видит сетевую карту?
- Что делать, если сеть недоступна в CentOS?
- Использование сетевых утилит traceroute, dig в CentOS
- Настройка 802.1Q VLAN в CentOS 7
Сетевые настройки на сервере CentOS 7
Первый раз с сетевыми настройками сервера CentOS мы сталкиваемся, когда производим установку. На экране первоначальной настройки есть отдельный пункт, касающийся настройки сетевых интерфейсов:
Зайдя в него мы видим список подключенных сетевых карт. Каждую из них можно включить соответствующим ползунком (пункт 1 на картинке). При активировании интерфейса он автоматически получает настройки по dhcp. Результат работы dhcp можно посмотреть тут же. Если вас не устраивают эти настройки, их можно отредактировать, нажав configure (пункт 3 на картинке). Здесь же можно задать hostname (пункт 2 на картинке):
Открыв окно дополнительный настроек Ehernet, вы сможете изменить имя сетевого интерфейса, указать настройки IP (пункт 1 на картинке), выбрать ручные настройки (пункт 2 на картинке), назначить ip адрес (пункт 3 на картинке), установить dns сервер (пункт 4 на картинке) и сохранить сетевые настройки (пункт 5 на картинке):
После выполнения остальных настроек начнется установка. После установки у вас будет сервер с указанными вами сетевыми настройками.
Теперь рассмотрим другую ситуацию. Сервер, а соответственно и конфигурацию сети, производили не вы, а теперь вам надо ее посмотреть либо изменить. В вашем распоряжении консоль сервера, в ней и будем работать. Если у вас установка производилась с дистрибутива minimal , то при попытке посмотреть сетевые настройки с помощью команды ifconfig в консоли вы увидите следующее:
Bash: ifconfig: command not found
или в русской версии:
Bash: ifconfig команда не найдена
Для работы с ifconfig и прочими сетевыми утилитами необходимо установить пакет net-tools . Сделаем это:
# yum -y install net-tools.x86_64
Теперь можно увидеть настройки сети:
# ifconfig
eno16777728: flags=4163
inet 192.168.159.129
RX packets 319 bytes 36709 (35.8 KiB)
TX packets 256 bytes 148817 (145.3 KiB)
lo: flags=73
inet6::1 prefixlen 128 scopeid 0x10
RX packets 6 bytes 624 (624.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6 bytes 624 (624.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Если у вас нет желания устанавливать дополнительный пакет, то можно воспользоваться более простой командой ip с параметрами:
# ip addr
1: lo:
inet 127.0.0.1/8 scope host lo
inet6::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777728:
inet 192.168.159.129
/24 brd 192.168.159.255 scope global dynamic eno16777728
valid_lft 1709sec preferred_lft 1709sec
inet6 fe80::20c:29ff:fe7d:593f/64 scope link
valid_lft forever preferred_lft forever
Мы увидели конфигурацию сети, теперь давайте ее отредактируем. Допустим, нам нужно сменить ip адрес. Для этого идем в директорию /etc/sysconfig/network-scripts и открываем на редактирование файл ifcfg-eth0 . Этот файл имеет примерно следующее содержание:
По настройкам из этого файла мы получаем ip адрес по dhcp. Чтобы вручную прописать статический ip, приводим файл к следующему содержанию:
Мы изменили параметры:
BOOTPROTOс dhcp на noneDNS1 указали dns сервер IPADDR, настроили статический ip адрес PREFIX, указали маску подсети GATEWAY. настроили шлюз по-умолчанию
Чтобы изменения вступили в силу, необходимо перечитать сетевые настройки:
Restarting network (via systemctl): [ OK ]
Проверяем, применилась ли новая конфигурация сети:
# ifconfig:
eno16777728: flags=4163
inet 192.168.159.129
netmask 255.255.255.0 broadcast 192.168.159.255
inet6 fe80::20c:29ff:fe7d:593f prefixlen 64 scopeid 0x20
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 672 bytes 71841 (70.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 572 bytes 290861 (284.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Все в порядке, новые настройки сетевого интерфейса установлены.
Как получить сетевые настройки по DHCP
Теперь рассмотрим обратную ситуацию. Допустим, у вас сетевая карта имеет какие-то настройки, установленные вручную. Но вы хотите, чтобы ваш компьютер получал настройки сети по dhcp в качестве клиента. Для этого вам нужно произвести операцию, обратную той, что мы делали раньше. То есть открываем файл /etc/sysconfig/network-scripts/ifcfg-eth0 и удаляем там строки с параметрами DNS, IPADDR, PREFIX, GATEWAY а в параметре BOOTPROTO указываем значение «dhcp» . Сохраняем файл и перезапускаем сеть:
# /etc/init.d/network restart
Затем проверяем, получил ли наш client по dhcp настройки.
Как настроить 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
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
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 в CentOS 7
По-умолчанию, во время установки CentOS ставит имя хоста localhost.localdomain . Если вы его не поменяли, то можно это сделать позже. Для начала давайте проверим, какое имя хоста у вас установлено. Делается это с помощью команды в консоли hostname , либо с помощью uname :
# hostname
localhost.localdomain# uname -n
localhost.localdomain
Для того, чтобы изменить имя хоста в CentOS, необходимо отредактировать файл /etc/hostname . Проверим его содержимое:
# cat /etc/hostname
localhost.localdomain
Отредактируем этот файл, чтобы изменить hostname:
# mcedit /etc/hostname
centos.localhost
Сохраняем файл и проверяем:
# hostname
centos.localhost
Все в порядке, мы изменили имя хоста на centos.localhost
Установить шлюз по-умолчанию в CentOS 7
Если по каким-то причинам при настройке сетевых параметров у вас не установился шлюз по-умолчанию, то сделать это можно вручную. Для начала проверим, какой шлюз по-умолчанию установлен в системе в данный момент:
# netstat -nr
Kernel IP routing table
0.0.0.0 149.154.71.254 0.0.0.0 UG 0 0 0 eth0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
149.154.70.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0
192.168.1.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
Строка с Destination 0.0.0.0 определяет адрес шлюза. Если у вас ее нет, либо в поле Gateway установлен неверный шлюз, то можно это изменить. Устанавливаем шлюз по-умолчанию:
Route add default gw 192.168.0.1Network Manager в CentOS 7
В CentOS по-умолчанию имеется служба, которая управляет всеми сетевыми подключениями - NetworkManager . Она постоянно контролирует сетевые настройки и с помощью демона по управлению конфигурациями вносит соответствующие изменения в активные сетевые устройства. Она поддерживает стандартные файлы конфигураций ifcfg.
Список сетевых утилит и приложений:
NetworkManager
Стандартный networking daemon nmtui
Простой текстовый интерфейс (TUI) для NetworkManager nmcli
Утилита, работающая в командной строке, которая позволяет пользователям и скриптам взаимодействовать с NetworkManagercontrol-center
Утилита с графическим интерфейсом оболочки GNONEnm-connection-editor GTK+ 3 приложения, необходимые для некоторых задач, не поддерживаемых control-center
Пользователи не взаимодействуют с NetworkManager в CentOS напрямую, для этого используются графические и утилиты командной строки. Одной из таких утилит является system config network tui .
System config network tui в CentOS 7
Для управления сетевыми настройками в CentOS можно воспользоваться графической утилитой nmtui .
Проверить ее наличие в системе очень просто.
Достаточно запустить ее в консоли:
Если она у вас не установлена, то исправить это очень просто. Устанавливаем в CentOS system config network tui:
# yum install NetworkManager-tui
С помощью tui можно указать любые сетевые настройки, которые мы делали раньше через командную строку и редактирование конфигурационных файлов. Давайте сделаем это. Вызываем программу:
Выбираем первый пункт Edit a connection
, затем выбираем сетевой интерфейс и жмем «Edit»:
Здесь мы можем изменить имя сетевой карты, mac адрес, указать тип сетевых настроек - ручной или dhcp, указать вручную ip адрес, адрес шлюза, днс сервера, добавить маршруты и некоторые другие настройки:
После завершения редактирования сохраняем настройки, нажимая ОК.
Если в первом экране утилиты выбрать пункт Set System Hostname
, то можно быстро указать имя хоста. Результат будет такой же, как мы делали раньше в консоли.
Как добавить статический маршрут в CentOS 7
Для управления маршрутизацией в CentOS может понадобиться добавить статический маршрут. Сделать это достаточно просто с помощью консольной команды. Для начала проверим существующие маршруты, используя netstat :
# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
В данном случае у нас один маршрут для адреса 0.0.0.0/0.0.0.0 шлюз используется 192.168.159.2, он же шлюз по-умолчанию. То есть по сути, статических маршрутов никаких нет. Добавим один из них.
Допустим, у нас есть подсеть 192.168.8.0 маска 255.255.255.0, трафик в эту подсеть маршрутизирует шлюз 192.168.159.5 Добавляем маршрут:
# route add -net 192.168.8.0/24 gw 192.168.159.5
Проверяем, появился ли добавленный маршрут в таблицу маршрутизации :
# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728
192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728
Все в порядке, маршрут добавлен. Но после перезагрузки этот статический маршрут будет удален. Чтобы этого не произошло и добавленные маршруты сохранялись, необходимо их записать в специальный файл. В папке /etc/sysconfig/network-scripts создаем файл с именем route-eth0 следующего содержания:
# mcedit /etc/sysconfig/network-scripts/route-eth0
192.168.8.0/24 via 192.168.159.5
Перезагружаемся и проверяем, на месте ли маршрут:
# reboot# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728
192.168.8.0 192.168.159.5 255.255.255.0 UG 0 0 0 eno16777728
192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728
Все в порядке, статический маршрут добавлен.
Как настроить 2 IP адреса на одном интерфейсе
Если у вас появилась необходимость настроить 2 IP адреса на одном интерфейса в CentOS, то сделать это достаточно просто. Воспользуемся командой ifconfig. Для начала проверим список сетевых интерфейсов:
# ifconfig
eno16777728: flags=4163
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX errors 0 dropped 0 overruns 0 frame 0
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (Local Loopback)
RX errors 0 dropped 0 overruns 0 frame 0
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Добавим к интерфейсу eno16777728 еще один ip адрес 192.168.159.120:
# ifconfig eno16777728:1 192.168.159.120 up
Проверим, что получилось:
#ifconfig
eno16777728: flags=4163
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 254 bytes 30173 (29.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 204 bytes 27658 (27.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno16777728:1: flags=4163
inet 192.168.159.120 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
lo: flags=73
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (Local Loopback)
RX packets 11 bytes 940 (940.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 940 (940.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Все в порядке, мы добавили второй ip адрес на один и тот же интерфейс. Но после перезагрузки дополнительный адрес не сохранится. Чтобы его сохранить, необходимо создать файл настроек интерфейса в папке /etc/sysconfig/network-scripts
# mcedit /etc/sysconfig/network-scripts/ifcfg-eno16777728:1
DEVICE=eno16777728:1
BOOTPROTO=static
IPADDR=192.168.159.120
NETMASK=255.255.255.0
ONBOOT=yes
Сохраняем файл, перезагружаемся и проверяем, что получилось. Второй ip адрес должен быть на месте.
Как сделать перезапуск сети в CentOS 7
Ранее я уже касался этого вопроса, но на всякий случай повторим отдельно. Допустим, вы внесли некоторые изменения в конфигурацию сети. Как применить эти настройки, не перезагружая сервер? Очень просто. Для перезапуска сети в CentOS достаточно воспользоваться командой:
# /etc/init.d/network restart
Служба NetworkManager перечитает все сетевые настройки и применит изменения.
Как узнать IP адрес в CentOS 7
Для того, чтобы быстро узнать текущий IP адрес в CentOS необходимо воспользоваться следующими командами:
# ifconfig | grep inet
inet 192.168.159.129
netmask 255.255.255.0 broadcast 192.168.159.255
inet 127.0.0.1 netmask 255.0.0.0
Либо второй вариант определения локального ip адреса:
# ip addr | grep inetinet 127.0.0.1/8 scope host lo
inet 192.168.159.129
/24 brd 192.168.159.255 scope global eno16777728
Обе команды позволяют быстро узнать свой ip адрес.
Что делать, если CentOS не видит сетевую карту?
Вы установили сервер, загрузились и обнаружили, что в системе нет ни одной сетевой карты. Что в таком случае делать? Первым делом посмотрите вывод команды dmesg и поищите там поминание о своей карте. Возможно, она в системе есть, просто не активирована. Активировать ее можно с помощью nmtui , а котором я рассказывал выше.
Там есть пункт меню Activate connection , нужно в него зайти и активировать вашу сетевую карту. После этого ее можно будет настраивать.
Если же вашей сетевой карты нет в системе, то нужно поискать в интернете по модели информацию об этой сетевой карте. Возможно в репозиториях будут драйвера для нее. Это достаточно распространенная ситуация. Чаще всего драйвера найдутся и их необходимо будет правильно установить.
Есть еще вероятность, что вы не увидите своей карточки при выводе команды ifconfig, если в эту карту не воткнут сетевой провод. Чтобы наверняка посмотреть все интерфейсы, необходимо использовать ключ -a:
# ifconfig -a
Есть еще один способ поискать сетевую карту в системе. Установите пакет pciutils :
# yum -y install pciutils
И посмотрите вывод команды:
# lspci | grep Ethernet
Если сетевая карта видится системой, то должно быть что-то в этом роде:
02:00.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
Если в выводе пусто, значит сетевая карта не определена.
Что делать, если сеть недоступна в CentOS?
Допустим, вы пытаетесь пинговать какой-то адрес, например 8.8.8.8 и получаете ответ, что сеть не доступна:
# ping 8.8.8.8
А в ответ получаете:
Connect: Network is unreachable
Такая ситуация может возникнуть, если у вас не установлен шлюз по-умолчанию. Добавить его можно с помощью команды:
# route add default gw 192.168.0.1
Если дело не в шлюзе, то нужно проверить настройки сетевых адаптеров. Если нет ни одного активного адаптера, то вы так же будете получать сообщение о том, что сеть не работает. Необходимо, чтобы в системе был правильно настроен хотя бы один сетевой адаптер. Как это сделать, написано выше.
Использование сетевых утилит traceroute, dig в CentOS
Для диагностики сетевых подключений в CentOS полезно использовать специальные утилиты. Но если вы использовали установку minimal, то их скорее всего в системе не будет. К примеру, популярная утилита traceroute при попытке ее запуска выдаст сообщение:
# traceroute ya.ru
bash: traceroute: command not found
Ее нужно установить отдельно из репозитория:
# yum -y install traceroute
То же самое с популярной программой dig для работы с dns серверами и записями:
# dig ya.ru
bash: dig: command not found
Чтобы эта сетевая утилита заработала, необходимо установить пакет bind-utils :
# yum -y install bind-utilsНастройка 802.1Q VLAN в CentOS 7
Для поднятия тегированного интерфейса на CentOS нужно в первую очередь проверить поддержку ядром 8021q :
# modprobe 8021q
Если сообщений об ошибке нет, значит все в порядке. Если же модуль не найден, необходимо пересобрать модули ядра, включив поддержку необходимого модуля.
Теперь создаем файл конфигурации для vlan в /etc/sysconfig/network-scripts:
# mcedit ifcfg-vlan4000
VLAN=yes
DEVICE=eno16777728.2000
BOOTPROTO=static
ONBOOT=yes
TYPE=Vlan
IPADDR=192.168.100.2
NETMASK=255.255.255.0
Обращаю внимание на выделенное жирным. Во всех инструкциях в интернете, что мне попались, этот параметр был указан как TYPE=Ethernet , но с такой настройкой интерфейс с vlan не поднимался, появлялась ошибка:
Error: no device found for connection ‘System vlan4000’.
Только после того, как я исправил, все заработало как надо. Так что сохраняем и активируем интерфейс:
# ifup vlan4000
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
Проверяем наш vlan:
# ip l ls
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno16777728:
link/ether 00:0c:29:7d:59:3f brd ff:ff:ff:ff:ff:ff
3: vlan4000@eno16777728:
link/ether 00:0c:29:7d:59:3f brd ff:ff:ff:ff:ff:ff
Все в порядке, тегированный интерфейс поднят. По аналогии можно создать еще несколько подобных интерфейсов, не забывая изменять им имена и адреса.
На этом мой объемный материал на тему настройки сети в CentOS закончен.
Буду очень рад комментариям, замечаниям, поправкам. Они наверняка будут. Создавая подобные материалы я в первую очередь учусь сам и подтягиваю свои знания в предметной области. Тут могут быть где-то ошибки и описки, хотя я и проверяю все на живых системах во время написания руководств, но все равно возможны неточности и опечатки.
За статью огромнейшее спасибо: http://serveradmin.ru
Добрый день!
Настройка сети в CentOS выполняется очень просто. Необходимо отредактировать один файл и перезапустить сетевую службу. Но обо всем по порядку.
Сетевые настройки в CentOS лежат в папке:
/etc/sysconfig/network-scripts/
Для каждой сетевой карты создается свой файл настроек: ifcfg-eth0, ifcfg-eth1 .... ifcfg-eth99. Для первой или единственной сетевой карты файл конфигурации будет называться ifcfg-eth0. Для того, чтобы его отредактировать, введите в консоли:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Нажмите кнопку "i" для перехода в режим редактирования и внесите в файл одну из конфигураций ниже.
Настройка сети со статическим IP
Типовая конфигурация будет выглядеть так:
DEVICE="eth0" //имя сетевой карты
TYPE=Ethernet //тип сетевой карты
BOOTPROTO=none //протокол автоматической настройки (например DHCP)
ONBOOT="yes" //включать при загрузке системы
IPADDR=177 . 61.211.162 //Статический IP
NETMASK=255.255.192.0 //Маска подсети
GATEWAY=177.61.192.1 //Основной шлюз
DNS1=8 . 8.8.8 //DNS сервер
DNS2=8 . 8.4.4
Если ваш CentOS сервер работает внутри домашней локальной сети, то маску подсети и шлюз можно посмотреть на любой другой машине с Windows или Linux. IP адрес можно взять любой свободный. Если же сервер подключен к провайдеру или установлен в дата-центре, все настройки необходимо запросить у провайдера.
Настройка сети с динамическим IP
Очень редко приходится настраивать сеть в CentOS с динамическим IP, но я выложу настройки на всякий случай:
DEVICE="eth0" //имя сетевой карты
TYPE=Ethernet //тип сетевой карты
BOOTPROTO="dhcp" //протокол автоматической настройки
ONBOOT="yes" //включить при загрузке системы
Применяем новые настройки сети
После того, как вы внесете все необходимые изменения в файл ifcfg-eth0, нажмите кнопку "Esc" для выхода из режима редактирования, потом введите ":wq" для выхода из редактора с сохранением и нажмите "Enter".
Теперь проверьте настройки основного конфигурационного файла:
vi /etc/sysconfig/network
Там должно быть следующее содержимое:
NETWORKING=yes
HOSTNAME=dev.сайт //имя вашего хоста
Для того, чтобы изменения начали действовать, необходимо перезагрузить сетевой интерфейс:
/etc/init.d/network restart
Если у вас остались вопросы или нужны уточнения - пожалуйста, или оставьте комментарий.