У даному матеріалія торкнуся актуальну тему, з якої починається практично будь-яка початкова робота із сервером. Налаштування основних параметрів мережі в CentOS - ip адреса, dhcp, ipv6, dns, hostname, статичні маршрути, мережні карти та інші параметри мережі.
Рухатися по темі будемо крок за кроком від простого до складного, розбираючи всі нюанси по порядку та відповідаючи на найпопулярніші питання.
- Мережеві налаштування на сервері 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
Утиліта, що працює в командному рядку, яка дозволяє користувачам та скриптам взаємодіяти з NetworkManager control-center
Утиліта з графічним інтерфейсомоболонки GNONE nm-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 адресу, адресу шлюзу, днс сервера, додати маршрути та деякі інші налаштування:
Після завершення редагування зберігаємо налаштування, натискаючи OK.
Якщо у першому екрані утиліти вибрати пункт 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 успішно 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 - ip адреса, dhcp, ipv6, dns, hostname, статичні маршрути, мережні карти та інші параметри мережі. Рухатися по темі будемо крок за кроком від простого до складного, розбираючи всі нюанси по порядку та відповідаючи на найпопулярніші питання.
Мережеві налаштування на сервері 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 (одні сервери) 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 tcp0 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.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/ava 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 (одні сервери) 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 tcp0 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: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.150.5.5.5.2.5. 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 адресу, адресу шлюзу, днс сервера, додати маршрути та деякі інші налаштування:
Після завершення редагування зберігаємо налаштування, натискаючи OK.
Якщо у першому екрані утиліти вибрати пункт 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.160.5.5.5.5.5.5.2 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.1692.5.5.5.5.5.5.5.5. .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 Windw irtt Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728 192.5.5 5.2. .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 успішно activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
Перевіряємо наш vlan:
# ip l ls 1: lo:
Все гаразд, тегований інтерфейс піднятий. За аналогією можна створити ще кілька подібних інтерфейсів, не забуваючи змінювати їм імена та адреси.
На цьому мій об'ємний матеріал на тему налаштування мережі CentOS закінчено. Буду дуже радий коментарям, зауваженням, поправкам. Вони, напевно, будуть. Створюючи подібні матеріали я в першу чергу вчуся сам і підтягую свої знання у предметній галузі. Тут можуть бути десь помилки та описки, хоча я і перевіряю все на живих системах під час написання посібників, але все одно можливі неточності та друкарські помилки.