Настройка локальной сети в linux

Несколько IP-адресов на одной сетевой карте

На одной сетевой карте может быть несколько ip-адресов, это бывает необходимо, если в коммутатор идут два провода от разных сетей и один от компьютера. В этом случае можно настроить на компьютере адреса обоих сетей без использования дополнительной сетевой карты. Для этого необходимо идентифицировать так называемый алиас (alias) к определенному сетевому интерфейсу, и выглядеть это будет так: сетевой_интерфейс:1 или сетевой_интерфейс:2, т.е. eth0:1 или eth1:2. Идентифицировать его можно следующим образом:

Интересно то, что можно настроить основной интерфейс через dhcp (автоматически) dhclient eth0, а алиас eth0:1 в статику, чего я в альтернативных операционных системах не нашел.

Все это хорошо, но после перезагрузки все настройки слетают. В Ubuntu есть файл /etc/network/interfaces. В него можно прописать опции сетевых карт, которые будут устанавливаться при загрузке системы (благодаря скрипту /etc/init.d/networking, запускающемуся автоматически).

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

Синтаксис простой:

22 января 2012, 00:39
  
Александр

Linux

  
17455

Из этой категории

  • Установка LAMP-сервера и phpMyAdmin в Debian 10Установка XAMPP в Debian 10 (Ubuntu) LinuxОтключить пароль SUDO в LinuxBash-команды для экономии времениУстанавливаем Brackets в Debian 10Работа с пакетами при помощи dpkgНастройка Linux Debian 10Скачиваем сайты целиком — утилита wget15 специальных символов-команд, которые нужно знать для работы в Bash Linux42 команды Linux

Common Display Options

5.1. -a (all)

If we want to show all interfaces, regardless of whether they are active, we can add the -a flag:

This command returned both the ens33 interface as well as the lo interface.

We can see whether an interface is enabled or disabled by looking at the flags, in particular the UP and RUNNING keywords.

From what we can see here, it appears that the ens33 network interface is enabled and running, while the lo interface is disabled.

This command would display only the ens33 network interface if we were to run it without the -a option.

5.2. -s (short)

For a quick summary of the interfaces, with some brief network stats, we can use the -s option:

This command provides us with a shortened list of network interfaces.

We should note that these network interface names will likely vary from computer to computer.

5.3. -v (verbose)

We can use the -v option to see all active network interfaces with verbose error information:

While this output looks the same as the default output, it will also provide additional information if there are errors.

The world evolves

I regularly see “recommendations” to use ifconfig to get interface information in mailing list posts or bug reports and other places. I might even be guilty of it myself. Still, the world of networking has evolved quite a lot since ifconfig was the de-facto standard to bring up a device, check its IP or set an IP.

Following some improvements in the kernel and the gradual move to driving network things via netlink; ifconfig has been largely replaced by the ip command.

Running just ip yields the following:

I understand this may look complicated to some people, but the jist of it is to understand that with ip, you interact with objects, and apply some kind of function to it. For example:

ip address show

This is the main command that would be used in place of ifconfig. It will just display the IP addresses assigned to all interfaces. To be precise, it will show you the layer 3 details the interface: the IPv4 and IPv6 addresses, whether it is up, what are the different properties related to the addresses…

Another command will give you details about the layer 2 properties of the interface: its MAC address (ethernet address), etc; even if it is shown by ip address:

ip link show

Furthermore, you can set devices up or down (similar to ifconfig eth0 up or ifconfig eth0 down) simply by using:

ip link set DEVICE up or ip link set DEVICE down

As shown above, there are lots of other objects that can be interacted with using the ip command. I’ll cover another: ip route, in another post.

More information

The
«if» in ifconfig, and also
in ifup, ifdown, and ifstatus, is an
abbreviation of «interface». It is not related to the programming
conditional «if». You can get more information about this utility by
accessing its manpage, by entering man ifconfig at the command line.

Other
networking utilities of note include:

  • arp — This gives information about the address
    mapping cache, and allows you to manipulate it in various ways, such as
    clearing entries and adding them.
  • iptables — The
    iptables utility is actually a firewall
    configuration interface for the kernel’s packet filtering capabilities.
  • Netstat — This utility
    returns information about network connections, routing tables, interface
    statistics, and more.
  • Route — The route utility can be used
    to get information from the IP routing table on your machine, or to make
    changes to the routing table.

See
the manpages for any of these utilities to get more
information by entering «man utilityname»
at the command line. For instance, the manpage for
the arp
utility is accessed by entering man arp. You can get more information about
the man utility by entering man man.

Исправляем ошибку «ifconfig: команда не найдена»

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

Способ 1: Добавление утилиты ifconfig

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

  1. Для начала рекомендуем еще раз убедиться в том, что ifconfig недоступна. Запустите классический терминал любым удобным вариантом.

Присвойте постоянные права суперпользователя, написав .

Укажите пароль от рут-доступа и ожидайте появления новой строки ввода.

Здесь просто введите и нажмите на клавишу Enter.

Если по-прежнему появляется уведомление об отсутствии команды в системе, установите набор компонентов net-tools, введя .

Ожидайте завершения добавления и настройки новых библиотек.

По завершении инсталляции еще раз выполните , чтобы убедиться в успешности операции.

Узнать больше информации о правилах используемой утилиты поможет строка .

Теперь вы знакомы с методом возвращения ранее стандартной утилиты в операционную систему Debian 9. Однако стоит понимать, что ей на замену пришел более удобный инструмент, из-за чего есть смысл разобраться в управлении с ним и оставить старые привычки.

Способ 2: Использование команды ip

Существует ряд причин, по которым команда ifconfig была заменена на ip в стандартной комплектации ОС на ядре Linux. Во-первых, она не разрешала настраивать систему контроля трафика, некорректно работала с некоторыми устройствами, не отображала их аппаратный адрес и не позволяла генерировать сетевые устройства TUN/TAP. Все эти недочеты были исправлены и доработаны, но уже внесены в функциональность ip. Например, просмотреть основную информацию по интерфейсу можно, введя .

Выдача в «Терминале» после активации указанной выше команды будет соответствовать той, которая была бы показана при , но с некоторыми дополнительными данными. Дополнительные сведения по протоколу IPv4 получаются через , а по IPv6 — . Еще присутствует возможность получить данные по конкретному интерфейсу, для этого вводится , а список работающих интерфейсов отображается после .

Одной из главных задач при настройке сети всегда считалась процедура присвоения определенного локального адреса конкретному интерфейсу. При использовании старой утилиты выглядела строка ввода так: , но в новом варианте пользователю потребуется ввести i, обязательно указав при этом маску подсети

Обратить внимание следует и на возможное сокращение до

Если надобность в присвоении интерфейса для IP-адреса отпала, такая цепь достаточно легко удаляется. Всего-то нужно указать , а в случае необходимости очистки всего списка взаимосвязей лучше использовать сразу .

Команда ip также определяет управление таблицами маршрутизации. Таблицей маршрутизации называют список сетевых путей, которые предназначены для определения лучшего маршрута передачи сетевого пакета. Ознакомиться со всеми доступными таблицами позволяет строка .

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

Благодаря двум приведенным выше способам вы теперь знаете, как можно не только восстановить работу команды ifconfig в операционной системе Debian 9, но и какая есть достойная альтернатива этой устаревшей утилите. Использовать ли новый инструмент или вернуться к старому — решать только вам.

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Именование сетевых интерфейсов в CentOS

Классическая схема именования сетевых интерфейсов в Linux присваивает имена eth0, eth1 и так далее по порядку. Но эти имена не привязываются жестко к интерфейсам и после перезагрузки при наличии нескольких сетевых интерфейсов, эти имена могут поменяться. Это может доставлять некоторые проблемы, при настройке, например, межсетевого экрана через firewalld или iptables. В связи с этим начиная с RedHat 7 и CentOS 7, решено было назначать имена сетевых интерфейсов на основе иерархии различных схем именования. По умолчанию systemd будет поочередно применять схемы именования, остановившись на первой доступной и применимой. Имена присваиваются в автоматическом режиме, остаются неизменными даже если аппаратные средства добавлены или изменены. С другой стороны, такие имена интерфейсов менее читабельны, например, enp5s0 или ens3, чем традиционные eth0 и eth1.

Можно вернуться к стандартному имени интерфейса Linux с помощью следующих действий.

Отредактируйте файл /etc/default/grub:

В строку GRUB_CMDLINE_LINUX нужно добавить:

net.ifnames=0 biosdevname=0

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

GRUB_CMDLINE_LINUX="consoleblank=0 fsck.repair=yes crashkernel=auto nompath selinux=0 rhgb quiet net.ifnames=0 biosdevname=0"

Обновите конфигурацию grub:

Переименуйте конфигурационный файл сетевого интерфейса:

И заменить значение DEVICE:

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

Интерфейс теперь называется eth0.

MACVLAN

У любого интерфейса L2 может быть один и только один MAC-адрес. Что делать, если надо отправлять кадры с разным MAC-адресом с одного физического интерфейса?

У ядра Linux на это есть ответ, и тип таких интерфейсов называется . Создать и поднять его можно следующими командами:

1
2

$sudo ip link add name macvlan0 link eth0 type macvlan

$sudo ip link macvlan0 up

В опции мы указываем родительский физический интерфейс. По умолчанию используется случайный MAC-адрес, но ничто не мешает присвоить любой другой командой .

Посмотрим на статус нового интерфейса:

1
2
3

$ip li sh macvlan0

3macvlan0@eno1<BROADCAST,MULTICAST,UP,LOWER_UP>mtu1500qdisc noqueue state UP mode DEFAULTgroup defaultqlen1000

link/ether8a01128f1f7cbrd ffffffffffff

Если присвоить нашему виртуальному интерфейсу адрес из сети 203.0.113.0/24, можно увидеть, что весь трафик в эту сеть отправляется с MAC-адреса от macvlan0, а не родительского eth0.

1
2
3
4
5

$ip address add203.0.113.90/25dev macvlan0

$tcpdump-eni eth0 dst203.0.113.1

tcpdumpverbose output suppressed,use-vor-vv forfull protocol decode

listening on eth0,link-type EN10MB(Ethernet),capture size262144bytes

204921.9880458a01128f1f7c>Broadcast,ethertype ARP(0x0806),length42Request who-has203.0.113.1tell203.0.113.90,length28

Changing Interface Settings

By default, Linux assigns IP Addresses to most network interfaces via DHCP. This is generally recommended, but if we need to give a network interface a specific static IP Address, Subnet Mask, or Broadcast Address, we can use ifconfig.

7.1. Set Static IP Address

Let’s use ifconfig to set our interface to the static IP address 192.168.91.200:

Now, let’s have a look at the interface:

Here we see that the value of the IP Address was changed as expected.

7.2. Set Subnet Mask

When we change the IP Address of a network interface, it’s likely that we’ll also want to change the subnet mask to match.

We use the netmask option for this:

We can see that the above command has changed the netmask to 255.255.0.0.

7.3. Set Broadcast Address

The broadcast address often assigns itself, but if we wanted to specify a specific broadcast address, we could do so with the broadcast option:

As we can see, this command has changed the broadcast address to 10.2.255.255.

7.4. Set IP Address, Subnet Mask, and Broadcast Address in One Line

Specifying each of the networking parameters in individual commands would be inefficient if we needed to change them all.

However, ifconfig allows us to set them all at once:

If we run ifconfig again, we now see all of the network settings that we specified:

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

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