Как изменить имя хоста в CentOS 7/8 и Fedora 30/29/28?
Во время установки CentOS или Fedora вам предлагается указать имя хоста для сервера.
Это нормально, но изменение его после установки иногда неизбежно.
Имя хоста однозначно идентифицирует компьютер в сети.
Имя хоста сервера может содержать буквы (a-z, A-Z), цифры (0-9), дефис (-), точку (.), но должно заканчиваться буквой или цифрой.
Рекомендуется использовать описательное имя при назначении имен хостов для простой идентификации сервера / службы.
Прежде чем устанавливать имя хоста, сначала проверьте существующее имя хоста.
$ hostname -s
cent-01
$ hostname -f
cent-01
$ hostnamectl
Static hostname: cent-01
Icon name: computer-vm
Chassis: vm
Machine ID: 596e865e6c594db98c4fd47fdb858138
Boot ID: 47d2f07eb2ea44b799ae6b0c0ba8600e
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.5.1.el7.x86_64
Architecture: x86-64
- Изменить имя хоста с помощью hostnamectl
- Введение
- Узнать имя своего хоста
- Pretty name
- Hosts
- Alias
- На хостинге
- Настройка сети
- Включать интерфейс при загрузке
- Установка статического IP
- Изменить IP
- Изменить маску
- Добавить IP
- Получить DHCP адрес
- Сбросить IP
- Узнать Gateway
- Установка ifconfig
- Открытые порты
- Открыть порт
- Шаг 2. Смена hostname
- NetworkManager
- Виртуальный интерфейс
- Создать новый сетевой адаптер
- Список адаптеров
- Ошибки и предупреждения
- Установка имени хоста в RHEL 8
Изменить имя хоста с помощью hostnamectl
Чтобы установить постоянное имя хоста с помощью команды hostnamectl, используйте команду.
Смотрите пример ниже:
sudo hostnamectl set-hostname backend-sms-app.mydomain.com —static
Подтвердите свое новое имя хоста.
$ hostnamectl
Static hostname: backend-sms-app.mydomain.com
Transient hostname: cent-01
Icon name: computer-vm
Chassis: vm
Machine ID: 596e865e6c594db98c4fd47fdb858138
Boot ID: 47d2f07eb2ea44b799ae6b0c0ba8600e
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.5.1.el7.x86_64
Architecture: x86-64
Этот параметр автоматически обновит файл /etc/hostname.
$ cat /etc/hostname
backend-sms-app.mydomain.com
Существует три класса имен хостов, которые можно установить с помощью команды hostnamectl.
Назначьте Pretty hostname.
sudo hostnamectl set-hostname «Computingforgeeks PC» —pretty
Установить Transient hostname – обычно совпадает со статическим именем хоста.
sudo hostnamectl set-hostname backend-sms-app.mydomain.com —transient
Подтвердите свои настройки.
$ hostnamectl
Static hostname: backend-sms-app.mydomain.com
Pretty hostname: Computingforgeeks PC
Icon name: computer-vm
Chassis: vm
Machine ID: 596e865e6c594db98c4fd47fdb858138
Boot ID: 47d2f07eb2ea44b799ae6b0c0ba8600e
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.5.1.el7.x86_64
Architecture: x86-64
$ sudo vim /etc/hosts
192.168.121.17 backend-sms-app.mydomain.com backend-sms-app
Там у вас есть это.
$ ping -c 2 backend-sms-app
PING backend-sms-app.mydomain.com (192.168.121.17) 56(84) bytes of data.
64 bytes from backend-sms-app.mydomain.com (192.168.121.17): icmp_seq=1 ttl=64 time=0.019 ms
64 bytes from backend-sms-app.mydomain.com (192.168.121.17): icmp_seq=2 ttl=64 time=0.040 ms
— backend-sms-app.mydomain.com ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.019/0.029/0.040/0.011 ms
Введение
Имя хоста — это уникальная метка, которая идентифицирует машину в сети.
Должна существовать таблица соответствия между hostname и
IP адресом
это нужно для для маршрутизации пакетов.
Хост может иметь несколько имён, но предпочтительным является вариант, когда имя одно.
Существует три класса hostname : static , pretty и transient .
Рекомендуется использовать полное доменное имя ( FQDN ) как для static и для transient имен, таких как host.example.com .
Так как CentOS 7 поддреживает только Fully Qualified Domain Names (FQDNs),
советую тщательно проверить hostname, который вы планируете использовать.
Узнать имя своего хоста
Существует несоколько способов узнать имя своего хоста.
Часто для этого достаточно просто посмотреть в терминал
Пример моего терминала
andrei — это имя пользователя
— это имя хоста
Downloads — имя текущей директории
Посмотреть порядок можно выполнив
u — пользователь
W — Working Directory — Рабочая диретория
Static hostname: localhost.localdomain
Icon name: computer-vm
Chassis: vm
Machine ID: 35e254eda578c54084b96e06d5f285cf
Boot ID: afb44fef8d764f30bb89550849b02fde
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.36.2.el7.x86_64
hostname dns-server
hostname
Если заново открыть терминал изменения будут видны в командной строке.
Это имя хоста сохранится только до перезагрузки системы
Если выполнить hostnamectl видно, что
помянелось только хоста
Static hostname: localhost.localdomain
Transient hostname: dns-server
Icon name: computer-vm
Chassis: vm
Machine ID: cff8a80b9c356243b5238452511a8ade
Boot ID: 64d9ddab85ec4c219ac46c6a2940e628
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.42.2.el7.x86_64
Architecture: x86-64
Если изучить файл
hostname
, также можно увдиеть отсутствие изменений.
hostnamectl set-hostname dns-server.andrei.com
hostname
Это постоянное изменение. Т.е. новое имя хоста имеет класс persistent.
Pretty name
Чтобы задать pretty name нужно воспользоваться кавычками
hostnamectl set-hostname «andrei’s.host.com»
hostnamectl
Static hostname: andreis.host.com
Pretty hostname: andrei’s.host.com
Icon name: computer-vm
Chassis: vm
Machine ID: cff8a80b9c356243b5238452511a8ade
Boot ID: 64d9ddab85ec4c219ac46c6a2940e628
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.42.2.el7.x86_64
Architecture: x86-64
Появилось hostname а hostname такое же
, но без запрещенных символов
В /etc/hostname отображается только hostname
pretty hostname можно увидеть в файле
/etc/machine-info
Hosts
Изучить информацию об именах других хостов можно в файле
hosts
В моём примере в сети есть два хоста:
dns-server.andrei.com
с IP адресом
192.168.56.149
host113.andrei.com с IP адресом
192.168.56.113
Зайдём на него с помощью
ssh
и посмотрим, есть ли у него записи об именах других хостов в сети.
Для наглядности я теперь буду показываеть приглашение терминала чтобы было видно имя хоста.
Выполним ping по IP
PING 192.168.56.149 (192.168.56.149) 56
bytes of data.
64 bytes from 192.168.56.149: icmp_seq=1 ttl=64 time=0.650 ms
64 bytes from 192.168.56.149: icmp_seq=2 ttl=64 time=0.731 ms
^C
— 192.168.56.149 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.650/0.690/0.731/0.048 ms
По IP пингуется успешно
И ping по hostname
ping: dns-server.andrei.com: Name or service not known
host113 не знает как разрешить имя
dns-server.andrei.com
Это неудивительно — ведь в файле
hosts
нет про него никаких записей. Проверим содержимое:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
Добавим запись о dns-server.andrei.com
sudo vi !$
PING dns-server.andrei.com (192.168.56.149) 56
bytes of data.
64 bytes from dns-server.andrei.com (192.168.56.149): icmp_seq=1 ttl=64 time=0.698 ms
64 bytes from dns-server.andrei.com (192.168.56.149): icmp_seq=2 ttl=64 time=0.735 ms
64 bytes from dns-server.andrei.com (192.168.56.149): icmp_seq=3 ttl=64 time=0.739 ms
^C
— dns-server.andrei.com ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.698/0.724/0.739/0.018 ms
Теперь всё работает
Alias
Чтобы не писать длинные имена хостов можно придумать alias
FQDN — Fully Qualified Domain Name — полностью определённое имя домена.
PING (192.168.56.149) 56(84) bytes of data.
64 bytes from dns-server.andrei.com (192.168.56.149): icmp_seq=1 ttl=64 time=0.619 ms
64 bytes from dns-server.andrei.com (192.168.56.149): icmp_seq=2 ttl=64 time=0.674 ms
^C
— dns-server.andrei.com ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.619/0.646/0.674/0.037 ms
Обратите внимание на
Хоть пинг и был по алиасу, ответ идёт как от static fqdn
Если поменять порядок так, что vbdns идёт первым а FQDN dns-server.andrei.com вторым, но
dns-server.andrei.com будет считаться алиасом
192.168.56.149 dns-server.andrei.com
В таком случае ответ будет идти от vbdns
PING vbdns (192.168.56.149) 56(84) bytes of data.
64 bytes from vbdns (192.168.56.149): icmp_seq=1 ttl=64 time=0.721 ms
64 bytes from vbdns (192.168.56.149): icmp_seq=2 ttl=64 time=1.01 ms
^C
— vbdns ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1004ms
rtt min/avg/max/mdev = 0.721/0.866/1.012/0.148 ms
Это может стать важным при работе с сертификатами
На хостинге
Как добавить соответствие IP адреса и домена сайта
Чтобы лучше ориентироваться в сетевом администрировании, а именно в таких понятиях как типы IP адресов, маски, подсети и т.д. советую изучить статью
«Основы компьютерных сетей»
Настройка сети
Чтобы изучить подключения выполните одну из команд:
nmcli conn show
NAME UUID TYPE DEVICE
enp0s3 64486a76-a4b0-4693-9110-205da942c9c5 ethernet enp0s3
enp0s8 fc26857f-4cb0-3756-a7fa-95ec246b3981 ethernet enp0s8
Если какой-то интерфейс, например enp0s3, выключен у него в столбце DEVICE будет стоять —
Обычно неактивный интерфейс выделен серым цветом а активный зелёным.
NAME UUID TYPE DEVICE
enp0s3 64486a76-a4b0-4693-9110-205da942c9c5 ethernet —
enp0s8 fc26857f-4cb0-3756-a7fa-95ec246b3981 ethernet enp0s8
Включить интерфейс можно командой
nmcli conn up enp0s3
Включать интерфейс при загрузке
Чтобы не включать сетевой интерфейс каждый раз вручную можно в настройках прописать ONBOOT=yes
Как вариант можно перейти в
И отредактировать с помощью
vi
файл
ifcfg-ИМЯ_ИНТЕРФЕЙСА
— например
ifcfg-enp0s3
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
Либо под root использовать
sed
sudo sed -i sONBOOT=noONBOOT=yes /etc/sysconfig/network-scripts/ifcfg-enp0s3
Если команда выше вам не до конца понятна — изучите статью
«Основы sed»
Проверить получилось ли изменить ONBOOT на yes можно командой
grep ONBOOT !$
Подробную информацию о каждом сетевом интерфейсе можно получить выполнив nmcli connection show имя_интерфейса
nmcli connection show ens192
connection.id: ens192
connection.uuid: 5c2584c5-7d87-4826-ba2a-79713eb62a9a
connection.stable-id: —
connection.type: 802-3-ethernet
connection.interface-name: ens192
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 1618914913
connection.read-only: no
connection.permissions: —
connection.zone: —
connection.master: —
connection.slave-type: —
connection.autoconnect-slaves: -1 (default)
connection.secondaries: —
connection.gateway-ping-timeout: 0
connection.metered: unknown
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
802-3-ethernet.port: —
802-3-ethernet.speed: 0
802-3-ethernet.duplex: —
802-3-ethernet.auto-negotiate: no
802-3-ethernet.mac-address: —
802-3-ethernet.cloned-mac-address: —
802-3-ethernet.generate-mac-address-mask:—
802-3-ethernet.mac-address-blacklist: —
802-3-ethernet.mtu: auto
802-3-ethernet.s390-subchannels: —
802-3-ethernet.s390-nettype: —
802-3-ethernet.s390-options: —
802-3-ethernet.wake-on-lan: default
802-3-ethernet.wake-on-lan-password: —
ipv4.method: auto
ipv4.dns: —
ipv4.dns-search: —
ipv4.dns-options: «»
ipv4.dns-priority: 0
ipv4.addresses: —
ipv4.gateway: —
Установка статического IP
NAME UUID TYPE DEVICE
enp0s3 64486a76-a4b0-4693-9110-205da942c9c5 ethernet enp0s3
enp0s8 fc26857f-4cb0-3756-a7fa-95ec246b3981 ethernet enp0s8
Настроим статический IP адрес для enp0s8
Настройки сети хранятся в директории
Отредактировать нужно файл
ifcfg-enp0s8
Основные параметры:
TYPE — тип соединения, проводное (Ethernet), беспроводное(Wired) и т д;
BOOTPROTO — способ получения IP адреса, static, dhcp или none;
NAME — имя соединения;
DEVICE — имя сетевого интерфейса;
ONBOOT — необходимо ли запускать при старте системы;
IPADDR — IP адрес, который будет использован для этого компьютера;
GATEWAY — шлюз для доступа к интернету;
NETMASK — маска сети;
DNS1 — сервер для разрешения доменных имен DNS.
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
Для DHCP, который, скорее всего, стоит по умолчанию будет что-то
Нужно именить BOOTPROTO на none и добавить несколько строк
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# Server IP #
# Subnet #
# Defautl Gateway #
# DNS Servers #
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=40a957b1-90fd-428c-9e99-df7849e1d104
DEVICE=enp0s3
ONBOOT=yes
sudo systemctl restart network
Изменить IP
Быстро изменить IP можно с помощью ifconfig
Сперва нужно установить пакет содержащий ifconfig —
по инструкции
Менять IP нужно командой
sudo ifconfig enp0s8 192.168.56.111
Вместо enp0s8 введите нужный интерфейс
Вместо 192.168.56.111 введите IP, который хотите установить
Если ваш IP был получен от DHCP сервера — сообщите ему о смене выполнив
sudo dhclient -r
Изменённый таким образом IP адрес будет сброшен DHCP сервером на тот, который ему больше нравится
после первой перезагрузки.
Если нужно поменять ещё и маску подсети — выполните
sudo ifconfig enp0s8 192.168.56.111 netmask 255.255.255.0
Изменить маску
Если нужно поменять только маску подсети — выполните
sudo ifconfig enp0s8 netmask 255.255.255.0
Добавить IP
Добавить IP на интерфейс можно командой
ip addr add 172.17.67.3/16 dev enp0s8
IP адрес добавлен динамически — то есть после перезагрузки он пропадёт
Удалить этот IP адрес можно командой
ip addr del 172.17.67.3/16 dev enp0s8
Получить DHCP адрес
Если нужно явно запросить у DHCP адрес выполните
sudo dhclient enp0s8
Вместо enp0s8 введите имя нужного адаптера
Сбросить IP
Если IP получен по DHCP можно освободиться от него выполнив
sudo dhclient -r enp0s8
Вместо enp0s8 введите имя нужного адаптера. Эту команду обычно нужно выполнять тем, кто делал сброс адреса.
Узнать Gateway
Чтобы узнать текущий IP адрес шлюза (gateway) выполните
default via 10.0.2.1 dev enp0s3 proto dhcp metric 100
IP адрес шлюза 10.0.2.1
Установка ifconfig
yum provides ifconfig
yum whatprovides ifconfig
ifconfig входит, например, в состав net-tools
sudo yum install net-tools
Открытые порты
Список открытых портов
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
Выдаст все порты, поэтому если нужно проверить какой-то определённый удобно применить
grep
Открыть порт
Чтобы открыть порт XXXX в firewall выполните
sudo firewall-cmd —add-port=XXXX/tcp —permanent
sudo firewall-cmd —reload
Подробности в статье
Centos firewall
Чтобы получить информацию о хосте выполните
Static hostname: localhost.localdomain
Icon name: computer-vm
Chassis: vm
Machine ID: a714bee8007d114a84177dbb15072f2e
Boot ID: b02d9498c1764a338c781672aac1be29
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1160.el7.x86_64
Architecture: x86-64
Нужная информация находится в первой строке
Шаг 2. Смена hostname
hostnamectl set-hostname my.new-hostname.server
Подробности в статье
hostname
NetworkManager
Проверить статус можно командой
systemctl status NetworkManager
Виртуальный интерфейс
Виртуальный интерфейс — это alias к существующему интерфейсу. Допустим у вас есть ens192
cp /etc/sysconfig/network-scripts/ens192 /etc/sysconfig/network-scripts/ens192:0
vi /etc/sysconfig/network-scripts/ens192:0
Поменяйте там что-то, например поставьте другой IP из той же подсети
Так как виртальный интерфейс может быть только внутри той же подсети, он не даст вам возможности слушать другую сейть.
Создать новый сетевой адаптер
Подробный разбор этого действия вы можете изучить в статье
«Создать новый интерфейс»
Список адаптеров
Получить список адаптеров, в том числе отключенных.
DEVICE TYPE STATE CONNECTION
wlp0s20f3 wifi connected SSH-office
docker0 bridge connected docker0
p2p-dev-wlp0s20f3 wifi-p2p disconnected —
enp0s31f6 ethernet unavailable —
vboxnet0 ethernet unmanaged —
lo loopback unmanaged —
Ошибки и предупреждения
sudo systemctl restart networking
Job for network.service failed because the control process exited with error code. See «systemctl status network.service» and «journalctl -xe» for details.
Setting up a hostname is one of the quintessential tasks when setting up a server. A hostname is a name that is assigned to a PC in a network and helps in uniquely identifying it.
There are various ways of setting up a hostname in CentOS/RHEL 8 and we are going to look at each in turn.
To display the system’s hostname, run the command.
Проверьте имя хоста RHEL 8
Кроме того, вы можете выполнить команду hostnamectl, как показано ниже:
Проверить имя хоста системы
Установка имени хоста в RHEL 8
Чтобы настроить имя хоста, войдите в систему и используйте команду hostnamectl, как показано:
$ sudo hostnamectl set-hostname
Например, чтобы установить имя хоста tecmint.rhel8, выполните команду:
$ sudo hostnamectl set-hostname tecmint.rhel8
Установить системное имя хоста
Позже вы можете проверить, было ли новое имя хоста применено к вашей системе, выполнив команды hostname или hostnamectl.
$ имя хоста
$ hostnamectl
Подтвердить имя хоста системы
Затем добавьте запись для имени хоста в файл /etc/hosts.
Это автоматически добавляет запись по умолчанию в файл /etc/hostname.
Сохраните и выйдите из текстового редактора.
Наконец, перезапустите сетевой сервис, чтобы изменения вступили в силу.
$ sudo systemctl перезапустить NetworkManager
Кроме того, вы можете использовать команду nmtui для установки или изменения имени хоста вашей системы, как показано ниже.
$ sudo nmtui
Введите новое имя хоста.
Добавить новое имя хоста
Наконец, перезапустите службу systemd-hostname, чтобы применить последние изменения.
$ sudo systemctl перезапустить systemd-hostnamed
На этом мы завершаем это руководство о том, как изменить или установить имя хоста в CentOS/RHEL 8. Мы надеемся, что это руководство оказалось вам полезным.