Получение информации о сетевых интерфейсах
Определить какие интерфейсы есть у вашего сервера поможет утилита lshw. Но её предварительно нужно установить с помощью следующей команды:
sudo apt install lshw
Эта утилита предназначена для определения железа вашего сервера. Например, с её помощью можно посмотреть какой на сервере процессор или оперативная память. Используя параметр -С network получим информацию только по сетевым устройствам:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ sudo lshw -C network *-network description: Ethernet controller product: Virtio network device vendor: Red Hat, Inc. physical id: 12 bus info: pci@0000:00:12.0 version: 00 width: 64 bits clock: 33MHz capabilities: msix bus_master cap_list rom configuration: driver=virtio-pci latency=0 resources: irq:11 ioport:e0a0(size=32) memory:fea52000-fea52fff memory:fe408000-fe40bfff memory:fea00000-fea3ffff -virtio2 description: Ethernet interface physical id: 0 bus info: virtio@2 logical name: ens18 serial: 2a:75:9e:4d:1d:fa capabilities: ethernet physical configuration: autonegotiation=off broadcast=yes driver=virtio_net driverversion=1.0.0 ip=172.28.90.31 link=yes multicast=yes |
Из этого вывода вы можете получить следующую информацию:
Из этого вывода вы можете получить следующую информацию:
- logical name: ens18 — имя сетевого интерфейса;
- serial: 2a:75:9e:4d:1d:fa — mac-адрес;
- ip=172.28.90.31 — ip-адрес;
- и другое.
Утилита lshw в основном используется, чтобы узнать имя и возможности сетевой карты. А для получения информации о mac и ip адресах нужно использовать другую утилиту — ip. Эта утилита командной строки не так проста, команда ip имеет множество подкоманд, которые мы изучим в этой статье. И первая подкоманда это address — она означает, что работать мы будем с ip-адресами. У подкоманды address, тоже есть свои подкоманды, например подкоманда show покажет информацию о назначенных ip-адресах. В самом конце команды можно указать имя сетевого интерфейса, чтобы получить информацию только по нему, а не по всем сетевым интерфейсам в системе.
Все эти подкоманды можно сокращать, например address = addr, show = sh. Но пока не будем этого делать, так как вначале нужно их запомнить.
Для того чтобы посмотреть, какие настройки использует сетевой интерфейс ens18 выполним команду
|
1 |
ip address show ens18 |
|
1 2 3 4 5 6 7 8 |
$ ip address show ens18 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 2a:75:9e:4d:1d:fa brd ff:ff:ff:ff:ff:ff altname enp0s18 inet 172.28.90.31/20 brd 172.28.95.255 scope global dynamic ens18 valid_lft 258476sec preferred_lft 258476sec inet6 fe80::2875:9eff:fe4d:1dfa/64 scope link valid_lft forever preferred_lft forever |
Здесь мы также видим mac и ip адрес с маской подсети. Этот ip адрес был получен по dhcp.
Настройка IP адреса
Чтобы изменить ip адрес на какой-нибудь другой, нужно отредактировать конфигурационный файл «/etc/network/interfaces». Но вначале глянем на него с помощью команды cat:
|
1 2 3 4 5 6 7 8 9 10 |
$ cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug ens18 iface ens18 inet dhcp |
Посмотрим внимательнее на блок настроек для интерфейса ens18:
-
- # The primary network interface — это комментарий, так как в начале строки стоит символ #. Он ни на что не влияет, просто подсказывает нам, что следующие за ним настройки редактируют основной сетевой интерфейс (ens18).
-
- allow-hotplug ens18 — разрешает горячее подключение для интерфейса ens18. То есть этот сетевой интерфейс будет включен при старте системы.
-
- iface ens18 inet dhcp — интерфейс ens18 будет получать настройки с помощью dhcp.
Чтобы назначить другой статический ip адрес нужно отредактировать этот блок в файле, например с помощью текстового редактора nano.
|
1 2 3 4 5 6 7 |
$ sudo nano /etc/network/interfaces ***** пропущу другие блоки настроек ***** # The primary network interface allow-hotplug ens18 iface ens18 inet static address 172.28.90.77/20 gateway 172.28.80.1 |
То есть меняем dhcp на static и ниже указываем адрес интерфейса (address) и адрес шлюза по умолчанию (gateway).
Дальше нужно перезагрузить сетевую подсистему чтобы применились изменения. Для этого можно воспользоваться следующими командами:
-
- $ sudo systemctl restart networking.service — перезагружает службу отвечающую за сеть на сервере, но если сетевых интерфейсов несколько, то все они на время окажутся недоступными. Также эта команда у меня не всегда срабатывала, то есть после перезапуска службы, интерфейс оказывался без назначенного ip адреса. Поэтому я не рекомендую этот способ.
-
- $ sudo ifdown ens18; sudo ifup ens18 — это две команды, которые выполнятся по очереди. Первая команда (ifdown ens18) отключит сетевой интерфейс, а вторая (ifup ens18) включит. Эта команда меня ещё не подводила.
-
- $ sudo reboot — эта команда перезагрузит сервер полностью. После чего сервер загрузится уже с новыми сетевыми настройками.
В любом случае вы отвалитесь от сервера, так как были подключены к нему по ssh по другому ip адресу. Вам придется заново подключиться к серверу, но использовать уже новый ip адрес.
Настройка DNS сервера
Чтобы указать серверу, какой ему использовать dns сервер, нужно редактировать конфигурационный файл /etc/resolv.conf. Давайте взглянем на него:
$ cat /etc/resolv.conf
nameserver 172.28.80.1
Этот адрес был получены от dhcp сервера. Но его можно изменить прям в этом файле:
$ sudo nano /etc/resolv.conf
nameserver 77.88.8.8
После редактирования этого файла ничего перезагружать не нужно, настройки подхватятся на лету. Проверить это можно с помощью команды nslookup, которая определит ip адрес по имени используя указанный dns сервер.
$ nslookup ya.ru
Server: 77.88.8.8
Address: 77.88.8.8#53
Non-authoritative answer:
Name: ya.ru
Address: 87.250.250.242
Name: ya.ru
Address: 2a02:6b8::2:242
Как видим, был использован dns от Яндекса — 77.88.8.8. Именно его мы внесли в конфиг /etc/resolv.conf.