Настройка сетевого моста в ubuntu server 18.04/20.04

Установка имени хоста

Имя хоста — уникальное имя-идентификатор машины в сети. Имя хоста содержится в файле , описание которого и правила распознавания имён можно найти в справочных страницах и соответственно. В файле также может храниться доменное имя системы, если оно существует. Чтобы задать имя компьютера, добавьте в файл одну строку:

/etc/hostname
имя-хоста

В качестве альтернативы для задания имени компьютера можно воспользоваться утилитой :

# hostnamectl set-hostname имя-хоста

Утилита из пакета позволяет задать имя хоста временно, до первой перезагрузки:

# hostname имя-хоста

На странице справочного руководства можно найти информацию о том, как задать «красивое» имя машины и другие метаданные.

Разрешение имени хоста

Чтобы настроить файл , добавьте в него следующие строки:

127.0.0.1        localhost
::1              localhost
127.0.1.1        имя-хоста.localdomain        имя-хоста

Примечание: Порядок соответствующих IP-адресам имён компьютера и псевдонимов имеет значение. Сразу после IP-адреса следует «каноническое» имя хоста, к которому при неоходимости может присоединиться название родительского домена, отделенное от имени точкой (как, например, выше). Все последующие значения на той же строке считаются псевдонимами. Подробности можно найти на странице документации .

В результате система будет использовать оба варианта — и NSS, и файл :

$ getent hosts
127.0.0.1       localhost
127.0.0.1       localhost
127.0.1.1       имя-хоста.localdomain имя-хоста

Примечание: Если хосту присвоен статический IP-адрес, то этот адрес следует указать вместо .

Разрешение имён хостов локальной сети

Чтобы машина была доступна по локальной сети посредством имени хоста, следует выбрать один из вариантов:

  • отредактировать файл на каждом устройстве вашей локальной сети, см. ;
  • выбрать для разрешения вашего имени хоста и настроить все машины в локальной сети использовать его (например, посредством );
  • использовать сервис Zeroconf, осуществляющий автоматическое создание IP-сети без необходимости выполнения ручных настроек. Можно выбрать одну из двух реализаций:
    • NetBIOS. Разработан компанией Microsoft, входит в состав Samba. Всё, что необходимо — запустить . Машины с операционными системами Windows, macOS, или Linux и работающим смогут найти ваш компьютер в сети;
    • mDNS. Возможны два варианта использования: и systemd-resolved. Компьютеры с macOS или Linux, на которых запущен Avahi или systemd-resolved, смогут обнаружить ваш хост. Windows не имеет встроенного mDNS клиента или демона. Старый Win32 API не поддерживает mDNS, что может помешать старым приложениям Windows получить доступ к вашей системе.

Требования к системе

Для воспроизведения описанных в руководстве действий подходит любой вариант установки системы. Наличие графического пользовательского интерфейса не обязательно. Все действия необходимо выполнять в консоли. Подразумевается, что команды, начинающиеся с символа $ — необходимо выполнять от пользователя, а начинающиеся с # — от суперпользователя (root).

Прежде чем Вы начнете, убедитесь, что:

Для настроек вам обязательно потребуется имя вашего сетевого адаптера. Его можно узнать из вывода команды:

Она позволяет посмотреть подключенные сетевые устройства.

Пример вывода команды:

Обратите внимание на строку:

eth0 — это и есть искомое имя сетевого интерфейса.

Имя eth0 будет далее применяться для настройки именно данной сетевой карты. Где eth обозначает что используется Ethernet интерфейс, а 0 — номер устройства. Если у вас установлено несколько сетевых устройств, то, соответственно, им будут присвоены имена: eth0 , eth1 , eth2 и т.д.

Более подробно о наименовании сетевых интерфейсов в SystemD можно почитать тут (англ.).

Такое переименование можно отключить добавив в /etc/default/grub, в строку с переменной GRUB_CMDLINE_LINUX_DEFAULT строку net.ifnames=0. После этого нужно выполнить sudo update-grub

Ручная настройка конфигурационного файла сетевого интерфейса в CentOS

Выведем список доступных сетевых интерфейсов в системе:

Файлы конфигурации сети вашего сервера хранятся в каталоге /etc/sysconfig/network-scripts. Эти файлы создает демон NetworkManager для каждого сетевого интерфейса. В нашем случае файл конфигурации называется ifcfg-eth0 (у вас может отличаться в зависимости от схемы именования сетевого интерфейса).

Рассмотрим основные параметры:

  • DEVICE – имя сетевого адаптера, совпадает с именем в системе, у нас это eht0
  • BOOTPROTO – способ назначения IP-адреса (static — статическое значение, указываем в ручную. dhcp — получить адрес автоматически)
  • IPADDR – IP-адрес
  • NETMASK – маска подсети
  • GATEWAY – шлюз по умолчанию
  • DNS1 – Основной DNS-сервер
  • DNS2 — альтернативный DNS-сервер
  • ONBOOT — способ запуска сетевого интерфейса (yes – автоматически, no – вручную)
  • UUID – уникальный идентификатор сетевого интерфейса. Можно сгенерировать самостоятельно командой uuidgen.
  • IPV4_FAILURE_FATAL – отключение сетевого интерфейса с IP-адресом v4, если он имеет неверную конфигурацию (yes – отключить, no – не отключать)
  • IPV6_FAILURE_FATAL – отключение сетевого интерфейса с IP-адресом v6, если он имеет неверную конфигурацию (yes – отключить, no – не отключать)
  • IPV6_AUTOCONF – разрешает или запрещает автоконфигурирование Ipv6 с помощью протокола
  • IPV6_INIT – включение возможности использования адресации Ipv6(yes – адресация может использоваться, no – не используется)
  • PEERROUTES – устанавливает приоритет настройки шлюза по умолчанию, при использовании DHCP
  • IPV6_PEERROUTES — устанавливает приоритет настройки шлюза по умолчанию, при использовании DHCP для IPv6

Исходя из этой информации, настроим сетевой интерфейс.

Настройка статического IP адреса в CentOS

Откроем файл для редактирования:

В этом примере я указал статический IP адрес, маску подсети, шлюз и несколько DNS серверов. Включаем автозапуск интерфейса:

ONBOOT=”yes”

После всех модификаций, нужно выполнить рестарт сервиса network. Если все в порядке, вы получите такой листинг:

Restarting network (via systemctl): 

Также можно просто перезапустить все профили подключений :

Получение динамического IP адреса для интерфейса через DHCP

Если ваш сервер должен получить IP адрес от DHCP севера, откройте конфигурационный файл интерфейса и измените настройки:

То есть мы убрали все настройки, связанные с IP-адресами и маской, а так же поменяли способ назначения IP-адреcа на dhcp (BOOTPROTO=”dhcp”). После всех изменений, не забываем выполнять перезагрузку network.

Настройка сети в Linux

Перед тем, как приступать к настройке сетевого подключения в Линукс, надо начать с того, что посмотреть — какие настройки сети используются сейчас. Для этого надо воспользоваться командой ifconfig. В информационном режиме она доступна и без прав ROOT, хотя для её полноценного использования лучше получить привилегии суперпользователя, введя команду sudo ifconfig. Результатом её работы будет список имеющихся в системе сетевых подключений и их параметров.

В разных версиях Линукс имя сетевого интерфейса может быть сокращением от Ethernet — eth0, eth1, eth2 и т.п.

На интерфейс lo — сокращение от loopback — то есть локальная петля с адресом 127.0.0.1 . Для примера рассмотрим интерфейс Eth0. В строке inet addr отображается текущий IP-адрес компьютера в локальной сети, подключенной к этой сетевой карте. В примере это: 192.168.1.144 Bcast — это широковещательный адрес в сети, так называемый Бродкаст(Broadcast). Mask — это маска сети. HWaddr — это аппаратный адрес сетевой карты, он же MAC-адрес, используемый на канальном уровне.

Информацию о текущих подключения узнали, теперь рассмотрим настройку локальной сети в Linux. Сделать это можно тремя способами: 1 — Через графическую оболочку 2 — через команду ifconfig или инструмент Network Manager 3 — через конфигурационные файлы сетевого сервиса Netork или Networking.

На мой взгляд, последний способ — самый удобный и надёжный, а значит — правильный. Чтобы настроить сеть в Линукс надо открыть файл, содержащий конфиг интерфейса. Тут всё зависит от того, какой дистрибутив Linux используется.

Вариант 1. В дистрибутивах, основанных на Debian (Ubuntu, Kubuntu и т.п.)

Файл с параметрами сетевого подключения:

Для того, чтобы изменить в linux настройки сети, файл его надо с правами root любым текстовым редактором. Например, через nano:

Для автоматического получения адресов от DHCP-сервера надо пописать следующее:

Если адрес надо прописать статически, то указываем следующее:

В этом конфиге рассмотрен пример обычной домашней сети, где адрес компьютера будет 192.168.1.2, адрес шлюза и DNS-сервера (их фукнции обычно выполняет wifi-роутер)- 192.168.1.1.

Вариант 2. RedHat-based дистрибутивы (Fedora, OpenSuse, CentOS)

Файл с настройками сети Linux:

Открываем его так же через nano или vim:

В случае автоматического получения настроек от DHCP-сервера:

IP-адреса DNS-серверов в этом случае прописываются в файле

вот пример для публичных DNS-серверов от Google:

Настройка сети в Линукс завершена. Остаётся только перезапустить сеть командой:

В качестве постскриптума расскажу как включить и выключить сеть в Linux. Делается это через всё ту же команду ifconfig. Выключить сетевую карту eth0:

Включить сетевую плату в Линуксе обратно:

Полностью остановить работу всех сетевых интерфейсов.

Файлы конфигурации

Общие файлы конфигурации

# cat /etc/hosts
127.0.0.1       localhost

172.16.1.X      server.corpX.un server
# apt remove resolvconf

# cat /etc/resolv.conf
nameserver 172.16.1.254
search corpX.un

Файлы конфигурации Debian/Ubuntu16

Статическая настройка параметров

# cat /etc/hostname
server.corpX.un
# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet static
        address 172.16.1.X
        netmask 255.255.255.0
        gateway 172.16.1.254

# apt install resolvconf
#        dns-nameservers 172.16.1.254
#        dns-search corpX.un


### Alias example ###
# auto eth0:0
# iface eth0:0 inet static
#         address 192.168.1.10
#         netmask 255.255.255.0

### Bridge example ###
### http://bwachter.lart.info/linux/bridges.html ###
# apt install bridge-utils

# auto br0
# iface br0 inet static
#         address 172.16.1.X
#         netmask 255.255.255.0
#         gateway 172.16.1.254
#         bridge_ports eth0 eth1
#         bridge_stp off
#         bridge_maxwait 5
#         post-up /sbin/brctl setfd br0 0

### 802.1q example ###
# apt install vlan

# auto vlan2
# iface vlan2 inet static
#         address 192.168.100+X.1
#         netmask 255.255.255.0
#         mtu 1500
#         vlan_raw_device eth0

### UP iface without ip example ###
# auto eth1
# iface eth1 inet manual
#         up ip link set eth1 up

Динамическая настройка параметров

client1# cat /etc/hostname
client1
client1# :> /etc/resolv.conf
client1# cat /etc/hosts
127.0.0.1     localhost

Без GUI

# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
  • С GUI

  • Инсталяция системы в конфигурации Desktop

# apt install network-manager

Файлы конфигурации Ubuntu18

Без cloud-init

cat /etc/cloud/cloud.cfg
...
preserve_hostname: true
...
# hostnamectl set-hostname ubuntu.corpX.un
# echo 'network: {config: disabled}' > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

ubuntu18# rm /etc/netplan/50-cloud-init.yaml

ubuntu20# rm /etc/netplan/00-installer-config.yaml

# cat /etc/netplan/01-netcfg.yaml
network:
    version: 2
    ethernets:
        enp0s3:
            addresses: [172.16.1.200+X/24]
            gateway4: 172.16.1.254
            nameservers:
                addresses: 

Файлы конфигурации CentOS/SL/RHEL

# cat /etc/hostname
centos.corpX.un
# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
# HWADDR=00:0C:29:C0:F8:54
DEVICE=enp0s3
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.1.100+X
NETMASK=255.255.255.0
DNS1=172.16.1.254
DOMAIN=corpX.un
GATEWAY=172.16.1.254
# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3:0
DEVICE=enp0s3:0
BOOTPROTO=static
ONBOOT=yes
# HWADDR=00:0C:29:C0:F8:54
IPADDR=10.N.M.100+X
NETMASK=255.255.255.0

Для Centos 6

# cat /etc/sysconfig/network
# NETWORKING=yes
# NETWORKING_IPV6=no
# HOSTNAME=centos.corpX.un
# GATEWAY=172.16.1.254

Файлы конфигурации Gentoo

# cat /etc/conf.d/hostname
hostname="server.corpX.un"
# cd /etc/init.d
# ln -s net.lo net.enp0s3
# cat /etc/conf.d/net
config_enp0s3="172.16.1.X/24"
routes_enp0s3="default via 172.16.1.254"
# rc-update add net.enp0s3 default

Управление разрешением имен (getaddrinfo)

root@nessus.isp.un:~# host ru.archive.ubuntu.com
ru.archive.ubuntu.com is an alias for mirror.yandex.ru.
mirror.yandex.ru has address 213.180.204.183
mirror.yandex.ru has IPv6 address 2a02:6b8:0:201::1
root@nessus.isp.un:~# cat /etc/gai.conf
...
precedence 2a02:6b8::/32   0
...

The resolv.conf configuration file

The configuration file resolv.conf at /etc/resolv.conf contains information that allows a computer connected to a network to resolve names into addresses. (Note: Do not confuse this configuration file with the program resolvconf, which unfortunately has a nearly identical name.)

The resolv.conf file typically contains the IP addresses of nameservers (DNS name resolvers) that will attempt to translate names into addresses for any node available on the network. There will be a line or lines that look like this:

nameserver 12.34.56.78
nameserver 12.34.56.79

In this example, the system is using nameservers at the IP addresses 12.34.56.78 and 12.34.56.79. Simply edit the file and enter the IP addresses of the nameservers you need to use after each nameserver. Add more nameserver lines if you have more nameservers. Don’t use this method if you have the resolvconf program installed.

The resolv.conf configuration file has many other options for defining how resolver looks up names. See man resolv.conf for details.

Сетевой мост (bridge)

Сетевой мост позволяет пропускать сетевой трафик через другой сетевой адаптер. Это можно применить, например, для организации хоста виртуальных машин (для трансфера трафика к виртуальным машинам KVM через единственный сетевой интерфейс сервера).

Пример настройки:

network:
    version: 2
    renderer: networkd
    ethernets:
        ens2f0: {}
    bridges:
        br0:
            macaddress: ce:ce:ce:45:45:45
            interfaces:
                — ens2f0
            addresses:
                — 192.168.1.15/24
            gateway4: 
            nameservers:
                addresses:
                    — 77.88.8.8
                    — 8.8.8.8
            mtu: 1500
            parameters:
                stp: true
                forward-delay: 4
            dhcp4: false
            dhcp6: false

* где:

  • bridges — настройки для интерфейсов bridge.
  • bridges br0 — настройка интерфейса br0.
  • macaddress — физический адрес (MAC) интерфейса. Настройка важна для некоторых провайдеров VPS — без нее бридж может не заработать.
  • interfaces — перечисление интерфейсов, из которых собираем мост. В данном примере ens2f0.
  • addresses, gateway4, nameservers — сетевые настройки (IP-адрес, шлюз, сервер имен).
  • mtu — одноименный параметр. Для сетей ethernet обычно равен 1500.
  • parameters stp — включает или отключает устранение петель в сети. В данном примере включено.
  • parameters forward-delay — время в секундах в течение которого мост будет оставаться в состояниях «Listening» и «Learning».
  • dhcp4, dhcp6 — включает или отключает автоматическое получение IP-адреса. В нашем случае, отключает.

Подробнее про настройку сетвого моста для KVM в инструкции .

/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto bond0
iface bond0 inet manual
        up ifconfig bond0 0.0.0.0 up
        slaves eth1 eth0
auto vlan10
iface vlan10 inet static
        address 10.10.10.12/24
        vlan-raw-device bond0
        gateway 10.10.0.1
        dns-search hup.hu
        dns-nameservers 10.10.0.2
auto vlan20
iface vlan20 inet static
        address 10.20.10.12/24
        vlan-raw-device bond0
auto vlan30
iface vlan30 inet static
        address 10.30.10.12/24
        vlan-raw-device bond0
  • In Debian Buster, you must use interface names for VLANs in the form of: bond0.10, bond0.20, and bond0.30 instead of vlan10, vlan20, vlan30

  • https://www.kernel.org/doc/Documentation/networking/bonding.txt — Linux kernel documentation on bonding

  • https://www.dm.unibo.it/~donatini/admin/rete/bonding.html — Bonding on Linux 2.6

Настройка TCP/IP в Linux для работы в сети Ethernet

Для работы с сетевыми протоколами TCP/IP в Linux достаточно наличие только петлевого интерфейса, но если необходимо объединить хосты между собой, естественно, необходимо наличие сетевого интерфейса, каналов передачи данных (например витая пара), возможно, какого-либо сетевого оборудования. Так же, необходимо наличие установленных (, и др.), обычно поставляемые в . Так же необходимо наличие конфигурационных файлов для сети (например /etc/hosts) и поддержку сети ядром Linux.

Параметры сети

Начнем понимание сетевых механизмов Linux с ручного конфигурирования сети, то есть со случая, когда IP адрес сетевого интерфейса статичен. Итак, при настройке сети, необходимо учесть и настроить следующие параметры:

IP-адрес — как уже говорилось в первой части статьи — это уникальный адрес машины, в формате четырех десятичных чисел, разделенных точками. Обычно, при работе в локальной сети, выбирается из частных диапазонов, например: 192.168.0.1

Маска подсети — так же, 4 десятичных числа, определяющие, какая часть адреса относиться к адресу сети/подсети, а какая к адресу хоста. Маска подсети является числом, которое складывается (в двоичной форме) при помощи логического И, с IP-адресом и в результате чего выясняется, к какой подсети принадлежит адрес. Например адрес 192.168.0.2 с  маской 255.255.255.0 принадлежит подсети 192.168.0.

Адрес подсети — определяется маской подсети. При этом, для петлевых интерфейсов не существует подсетей.

Широковещательный адрес — адрес, используемый для отправки широковещательных пакетов, которые получат все хосты подсети. Обычно, он равен адресу подсети со значением хоста 255, то есть для подсети 192.168.0 широковещательным будет 192.168.0.255, аналогично, для подсети 192.168 широковещательным будет 192.168.255.255. Для петлевых интерфейсов не существует широковещательного адреса.

IP адрес шлюза — это адрес машины, являющейся шлюзом по-умолчанию для связи с внешним миром. Шлюзов может быть несколько, если компьютер подключен к нескольким сетям одновременно. Адрес шлюза не используется в изолированных сетях (не подключенных к глобальной сети), потому что данным сетям некуда отправлять пакеты вне сети, то же самое относиться и к петлевым интерфейсам.

IP-адрес сервера имен (DNS — сервера) — адрес сервера преобразующего имена хостов в IP адреса. Обычно, предоставляется провайдером.

Bridging

Bridging multiple interfaces is a more advanced configuration, but is very useful in multiple scenarios. One scenario is setting up a bridge with multiple network interfaces, then using a firewall to filter traffic between two network segments. Another scenario is using bridge on a system with one interface to allow virtual machines direct access to the outside network. The following example covers the latter scenario.

Configure the bridge by editing your netplan configuration found in :

Now apply the configuration to enable the bridge:

The new bridge interface should now be up and running. The brctl provides useful information about the state of the bridge, controls which interfaces are part of the bridge, etc. See for more information.

Настройка сети для pc-1, pc-2 и server

Сначала для виртуальной машины . Смотрим, как называются сетевые интерфейсы в системе:

$ ls /sys/class/net
enp0s3  lo

Открываем на редактирование файл :

$ sudo nano /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network
  version 2
  renderer networkd
  ethernets
    enp0s3
      dhcp4 no
      addresses 192.168.30.2/24
      gateway4 192.168.30.1
      nameservers
        addresses 8.8.8.8, 8.8.4.4

Применяем настройки и смотрим сетевые интерфейсы:

$ sudo netplan apply # применить настройки из YAML-файла к работающей системе
$ sudo netplan generate # сохранить текущие настройки в файл конфигурации networkd
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:28:be:b7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.30.2/24 brd 192.168.30.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe28:beb7/64 scope link 
       valid_lft forever preferred_lft forever

Для виртуальных машин и все будет аналогично, так что не буду описывать подробно. Для примера — виртуальной машине мы назначили ip-адрес :

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:28:b0:4b brd ff:ff:ff:ff:ff:ff
    inet 192.168.30.3/24 brd 192.168.30.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe28:b04b/64 scope link 
       valid_lft forever preferred_lft forever

Настройка сети в Linux

08.10.2015

Linux

Перед тем, как приступать к настройке сетевого подключения в Линукс, надо начать с того, что посмотреть — какие настройки сети используются сейчас. Для этого надо воспользоваться командой ifconfig. В информационном режиме она доступна и без прав ROOT, хотя для её полноценного использования лучше получить привилегии суперпользователя, введя команду sudo ifconfig. Результатом её работы будет список имеющихся в системе сетевых подключений и их параметров.

В разных версиях Линукс имя сетевого интерфейса может быть сокращением от Ethernet — eth0, eth1, eth2 и т.п. 

На интерфейс lo — сокращение от loopback — то есть локальная петля с адресом 127.0.0.1.
Для примера рассмотрим интерфейс Eth0.
В строке inet addr отображается текущий IP-адрес компьютера в локальной сети, подключенной к этой сетевой карте. В примере это: 192.168.1.144Bcast — это широковещательный адрес в сети, так называемый Бродкаст(Broadcast).Mask — это маска сети.HWaddr — это аппаратный адрес сетевой карты, он же MAC-адрес, используемый на канальном уровне.

Информацию о текущих подключения узнали, теперь рассмотрим настройку локальной сети в Linux. Сделать это можно тремя способами:
1 — Через графическую оболочку
2 — через команду ifconfig или инструмент Network Manager
3 — через конфигурационные файлы сетевого сервиса Netork или Networking.

На мой взгляд, последний способ — самый удобный и надёжный, а значит — правильный. Чтобы настроить сеть в Линукс надо открыть файл, содержащий конфиг интерфейса. Тут всё зависит от того, какой дистрибутив Linux используется.

Вариант 1. В дистрибутивах, основанных на Debian (Ubuntu, Kubuntu и т.п.) 

Файл с параметрами сетевого подключения:

/etc/network/interfaces

Для того, чтобы изменить в linux настройки сети, файл его надо с правами root любым текстовым редактором. Например, через nano:

sudo nano /etc/network/interfaces

Для автоматического получения адресов от DHCP-сервера надо пописать следующее:

allow-hotplug eth0
iface eth0 inet dhcp

Если адрес надо прописать статически, то указываем следующее:

allow-hotplug eth0
iface eth0 inet static
address 192.168.1.2  
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1

В этом конфиге рассмотрен пример обычной домашней сети, где адрес компьютера будет 192.168.1.2, адрес шлюза и DNS-сервера  (их фукнции обычно выполняет wifi-роутер)- 192.168.1.1.

Вариант 2.  RedHat-based дистрибутивы (Fedora, OpenSuse, CentOS)

Файл с настройками сети Linux:

/etc/sysconfig/network-scripts/ifcfg-eth0

Открываем его так же через nano или vim:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

В случае автоматического получения настроек от DHCP-сервера:

DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00-1C-1B-11-F6-07
ONBOOT=yes

Статический IP-адрес:

DEVICE=eth0
HWADDR=00-1C-1B-11-F6-07
IPADDR=192.168.1.2
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
ONBOOT=yes

IP-адреса DNS-серверов в этом случае прописываются в файле

/etc/resolv.conf

вот пример для публичных DNS-серверов от Google:

nameserver 8.8.8.8
 nameserver 8.8.4.4

Настройка сети в Линукс завершена. Остаётся только перезапустить сеть командой:

service network restart

или

/etc/init.d/network restart

Собственно всё.

В качестве постскриптума расскажу как включить и выключить сеть в Linux. Делается это через всё ту же команду ifconfig. Выключить сетевую карту eth0:

sudo ifconfig eth0 down

Включить сетевую плату в Линуксе обратно:

sudo ifconfig eth0 up

Полностью остановить работу всех сетевых интерфейсов.

service network stop

Или:

/etc/init.d/network stop

Включить всё назад:

service network start

Или:

/etc/init.d/network restart

centos настройка сети, ip linux, linux сети, локальная сеть линукс, настроить сеть ubuntu

Машиночитаемый вывод информации

Если вы все еще парсите вывод ifconfig в скриптах и при этом нецензурно ругаетесь, у меня для вас хорошие новости: у iproute2 имеются опции, которые позволят вам и вашим коллегам наконец взять детей на работу.

Можно получить вывод либо в традиционном для UNIX формате из полей с разделителями, либо в JSON.

Опция () идеальна для разбора с помощью или и отлично подойдет для применения в традиционных скриптах Shell:

1
2
3
4
5

$ip—brief link show macvlan0

macvlan0@eth0 UP8a01128f1f7c<BROADCAST,MULTICAST,UP,LOWER_UP>

$ip—brief address show macvlan0

macvlan0@eth0 UP203.0.113.90/25fe80880112fffe8f1f7c/64

Если адресов у интерфейса несколько, они все будут выведены через пробел после состояния интерфейса, сначала IPv4, затем IPv6.

Вывод в JSON

Если вы решили порвать с прошлым и пишете скрипты, к примеру, на Python, вывод в JSON может быть предпочтительнее.

Эта возможность в iproute2 появилась недавно (с версии 4.13) и имеет ряд особенностей, граничащих с багами. Надеюсь, их исправят в следующих версиях.

Важный момент: опции и не взаимоисключающие. Их можно указать одновременно, в этом случае вывод будет менее детальным.

Посмотрим на пример вывода для :

1 $ip—json—brief address show macvlan0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

{},{},

{

«link»»eth0»,

«ifname»»macvlan0»,

«operstate»»UP»,

«addr_info»

{

«local»»203.0.113.90»,

«prefixlen»25

},

{

«local»»203.0.113.91»,

«prefixlen»25

},

{

«local»»fe80::8801:12ff:fe8f:1f7c»,

«prefixlen»64

}

},

{},{},{},{},{},{}

Несколько неудобно, что мы получаем не ассоциативный массив с именем интерфейса в качестве индекса, а обычный массив с объектами внутри. Более того, если отфильтровать вывод, указав имя интересующего интерфейса, на месте непоказанных интерфейсов будут пустые значения, которые придется отфильтровывать самому.

Тем не менее вывод не подвержен ошибкам разбора, предоставляет большое количество информации (особенно без ) и не слишком сложен в работе, хотя простор для улучшений явно есть.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector