Управление IP-адресацией в Linux

CompTIABeginner
Практиковаться сейчас

Введение

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

Далее вы изучите динамическую настройку IP-адресации, освободив статический адрес и используя команду dhclient для автоматического получения нового IP-адреса от DHCP-сервера. В завершение лабораторной работы вы используете команды arp и traceroute для дальнейшей проверки и верификации вашей сетевой конфигурации, убедившись, что все компоненты работают корректно.

Проверка сетевых интерфейсов с помощью ip a

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

Современная и стандартная команда для просмотра и управления сетевыми интерфейсами в Linux — это ip. Мы будем использовать ее с аргументом a (или address) для отображения всех сетевых интерфейсов и назначенных им IP-адресов.

  1. Откройте терминал. Вы должны уже находиться в каталоге ~/project.

  2. Чтобы вывести список всех сетевых интерфейсов и их текущих конфигураций, выполните следующую команду:

    ip a

    Вы увидите вывод, похожий на следующий. Точные детали, такие как имена интерфейсов (eth0, enp0s5), IP-адреса и MAC-адреса, будут отличаться при каждом запуске новой лабораторной среды.

    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
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159972sec preferred_lft 1892159972sec
    3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
        link/ether 02:42:bb:cb:56:62 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
           valid_lft forever preferred_lft forever

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

  • 1: lo: Это loopback-интерфейс (интерфейс обратной связи), виртуальный интерфейс, который система использует для связи с самой собой. Он всегда имеет IP-адрес 127.0.0.1.
  • 2: eth0: Это ваш основной Ethernet (проводной) интерфейс. Ваш интерфейс может иметь другое имя или показывать altname (альтернативные имена), такие как enp0s5. Это интерфейс, с которым мы будем работать.
  • 3: docker0: Вы можете увидеть другие интерфейсы, такие как docker0, который используется движком контейнеров Docker. Для целей этой лабораторной работы вы можете его проигнорировать.
  • inet 172.16.50.11/24: Это IPv4-адрес, назначенный вашему интерфейсу. Отображаемый адрес будет отличаться. Это адрес, который позволяет вам подключиться к этой удаленной лаборатории.
  • link/ether ...: Это MAC-адрес интерфейса, уникальный идентификатор оборудования.

Теперь, когда вы можете идентифицировать свой основной сетевой интерфейс (eth0), вы готовы научиться его настраивать.

Настройка дополнительного статического IP-адреса

На этом этапе вы вручную назначите дополнительный статический IP-адрес вашему сетевому интерфейсу. Статический IP-адрес полезен для серверов, которые должны быть постоянно доступны по одному и тому же адресу.

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

  1. Назначьте новый статический IP-адрес 192.168.1.10 с маской подсети /24 интерфейсу eth0. Если ваш интерфейс имеет другое имя, используйте его.

    sudo ip addr add 192.168.1.10/24 dev eth0

    Эта команда добавляет новый адрес, не затрагивая существующий. При успешном выполнении она не выводит никакого сообщения.

  2. Наконец, проверьте, был ли назначен новый IP-адрес. Снова используйте команду ip a, указав интерфейс eth0.

    ip a show eth0

    Теперь вы должны увидеть оба IP-адреса: исходный динамический и новый статический, перечисленные для интерфейса eth0.

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159595sec preferred_lft 1892159595sec
        inet 192.168.1.10/24 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe0f:23a5/64 scope link
           valid_lft forever preferred_lft forever

    Обратите внимание, что второе поле inet теперь показывает 192.168.1.10/24. Вы успешно добавили временный статический IP-адрес, сохранив при этом ваше соединение.

Установка шлюза по умолчанию и проверка подключения с помощью ping

На этом этапе вы настроите шлюз по умолчанию и проверите сетевое подключение. Шлюз по умолчанию — это маршрутизатор, которому ваша система отправляет трафик, когда пункт назначения находится в другой сети (например, в Интернете).

В вашей системе уже есть шлюз по умолчанию, предоставленный лабораторной средой. Его изменение или удаление нарушит ваше соединение. Чтобы безопасно попрактиковаться с этой командой, мы добавим новый, второй маршрут по умолчанию с более высоким метрическим значением. Более высокое метрическое значение означает более низкий приоритет, поэтому система не будет использовать его для реального трафика, сохраняя наше соединение в безопасности.

  1. Добавим маршрут шлюза по умолчанию для сети 192.168.1.0/24. Мы установим IP-адрес шлюза 192.168.1.1 и присвоим ему метрическое значение 200.

    sudo ip route add default via 192.168.1.1 dev eth0 metric 200
    • default: Указывает, что это маршрут по умолчанию.
    • via 192.168.1.1: IP-адрес маршрутизатора шлюза.
    • dev eth0: Маршрут доступен через интерфейс eth0.
    • metric 200: Делает этот маршрут менее предпочтительным, чем основной существующий маршрут (который имеет более низкое метрическое значение).
  2. Проверьте, был ли добавлен маршрут, отобразив таблицу маршрутизации.

    ip route

    Вывод будет сложным и может отличаться, но он должен содержать две строки, начинающиеся с default. Ваш исходный шлюз будет иметь более низкое метрическое значение (например, 100), а наш новый — метрическое значение 200.

    default via 172.16.50.253 dev eth0 proto dhcp src 172.16.50.11 metric 100
    default via 192.168.1.1 dev eth0 metric 200
    172.16.50.0/24 dev eth0 proto kernel scope link src 172.16.50.11 metric 100
    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
    ... (могут присутствовать другие маршруты)
  3. Теперь протестируем подключение с помощью ping. Эта команда отправляет ICMP-запрос "echo request" на хост, чтобы проверить, доступен ли он. Попробуем пропинговать шлюз, который мы только что настроили для нашей воображаемой сети.

    ping -c 3 192.168.1.1

    Ожидаемый результат: Эта команда должна завершиться неудачно. Поскольку мы добавили IP-адрес 192.168.1.10/24 к eth0, система предполагает, что 192.168.1.1 находится в той же локальной сети. Она попытается достичь его напрямую, но устройства с таким адресом не существует, поэтому вы увидите сообщение "Destination Host Unreachable" (Хост назначения недоступен).

    PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
    From 192.168.1.10 icmp_seq=1 Destination Host Unreachable
    From 192.168.1.10 icmp_seq=2 Destination Host Unreachable
    From 192.168.1.10 icmp_seq=3 Destination Host Unreachable
    
    --- 192.168.1.1 ping statistics ---
    3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2039ms

    Это правильный и ожидаемый результат. Вы научились добавлять маршрут по умолчанию и использовать ping для тестирования.

Возврат к динамическому IP-адресу с помощью dhclient

На этом шаге вы удалите созданные вами статические конфигурации, а затем используете dhclient для обновления аренды динамического IP-адреса от DHCP-сервера.

Во-первых, инструмент dhclient, который является частью пакета isc-dhcp-client, может быть не установлен по умолчанию. Убедимся, что он доступен.

  1. Обновите список пакетов вашей системы и установите DHCP-клиент:

    sudo apt-get update
    sudo apt-get install -y isc-dhcp-client

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

  2. Удалите статический IP-адрес из eth0:

    sudo ip addr del 192.168.1.10/24 dev eth0
  3. Удалите добавленный нами статический маршрут по умолчанию:

    sudo ip route del default via 192.168.1.1 dev eth0

    Теперь ваша сетевая конфигурация вернулась в исходное состояние. Чтобы продемонстрировать работу dhclient, давайте запросим обновление IP-адреса от DHCP-сервера.

  4. Сначала освободите текущую аренду DHCP.

    sudo dhclient -r eth0
  5. Затем запросите новую аренду у DHCP-сервера.

    sudo dhclient eth0

    Вы можете увидеть сообщение RTNETLINK answers: File exists. Это нормально. Оно просто означает, что dhclient пытается добавить маршруты, которые уже существуют, поэтому изменения не требуются. Ваше соединение останется стабильным.

  6. Проверьте свою конфигурацию, снова просмотрев интерфейс eth0.

    ip a show eth0

    Теперь вывод должен показывать только ваш исходный динамический IP-адрес, вероятно, в диапазоне 172.16.x.x или 172.17.x.x. Статический IP-адрес 192.168.1.10 должен исчезнуть.

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159460sec preferred_lft 1892159460sec
        inet6 fe80::216:3eff:fe0f:23a5/64 scope link
           valid_lft forever preferred_lft forever

    Вы успешно очистили статическую конфигурацию и обновили аренду динамического IP-адреса.

Проверка конфигурации сети с помощью arp и traceroute

На этом заключительном этапе вы научитесь использовать arp и traceroute для проверки вашей сетевой конфигурации.

Сначала убедимся, что необходимые инструменты установлены. arp входит в состав net-tools, а traceroute — в собственный пакет.

  1. Установите net-tools и traceroute:

    sudo apt-get update
    sudo apt-get install -y net-tools traceroute

Использование arp для просмотра ARP-кэша

Протокол разрешения адресов (ARP) сопоставляет IP-адрес с физическим MAC-адресом в локальной сети. Результаты хранятся в ARP-кэше.

  1. Чтобы заполнить ваш ARP-кэш, сначала найдите IP-адрес вашего шлюза по умолчанию из таблицы маршрутизации.

    ip route | grep default

    Вывод покажет вам IP-адрес шлюза. Обратите внимание, что IP-адрес будет отличаться.

    default via 172.16.50.253 dev eth0
    default via 172.16.50.253 dev eth0 proto dhcp src 172.16.50.11 metric 100
  2. Теперь отправьте ping на этот IP-адрес шлюза (например, 172.16.50.253 в приведенном выше примере), чтобы сгенерировать трафик.

    ping -c 1 <your-gateway-ip>
  3. Отобразите ARP-кэш с помощью arp -a.

    arp -a

    Вы увидите IP- и MAC-адрес вашего шлюза. Вы также можете увидеть запись <incomplete> для адреса 192.168.1.1, который мы пытались пропинговать ранее, что является нормальным.

    ? (192.168.1.1) at <incomplete> on eth0
    _gateway (172.16.50.253) at ee:ff:ff:ff:ff:ff [ether] on eth0

    Это подтверждает, что ваша система успешно разрешила IP-адрес шлюза в MAC-адрес.

Использование traceroute для отслеживания сетевых путей

Команда traceroute показывает последовательность маршрутизаторов ("хопов"), которые пакеты проходят для достижения пункта назначения.

  1. Отследим маршрут до общедоступного домена, такого как google.com.

    traceroute google.com

    Команда выведет путь. Примечание: Во многих облачных средах первый хоп, показанный traceroute, может быть внутренним IP-адресом и не совпадать с шлюзом по умолчанию в вашей таблице маршрутизации. Это нормальное поведение.

    traceroute to google.com (142.250.189.174), 30 hops max, 60 byte packets
     1  10.220.9.2 (10.220.9.2)  0.345 ms  ...
     2  11.73.5.1 (11.73.5.1)  1.978 ms ...
     3  ...
     8  sfo03s24-in-f14.1e100.net (142.250.189.174)  3.001 ms ...
    • Первый хоп — это маршрутизатор внутри сети поставщика услуг лаборатории.
    • Последующие хопы показывают путь через Интернет к конечному пункту назначения.
    • Звездочки (* * *) могут появляться, если маршрутизатор на пути не отвечает на запросы traceroute, что может быть связано с брандмауэром или другой сетевой политикой.

Поздравляем! Теперь вы научились проверять, статически и динамически настраивать IP-адресацию в системе Linux, а также использовать ключевые инструменты, такие как ping, arp и traceroute, для проверки и устранения неполадок в вашей сети.

Резюме

В этой лаборатории вы освоили основные навыки управления IP-адресацией в среде Linux. Вы начали с проверки сетевых интерфейсов и их текущих конфигураций с помощью команды ip a для идентификации целевых интерфейсов, таких как eth0. Затем вы отработали ручное назначение статического IP-адреса и маски подсети с помощью ip addr add, после чего настроили шлюз по умолчанию с помощью ip route add для обеспечения связи с внешними сетями. В отличие от ручной настройки, вы также узнали, как автоматически получать IP-адрес, маску подсети и шлюз от DHCP-сервера с помощью команды dhclient.

Кроме того, вы изучили основные инструменты для проверки и устранения неполадок сети. Вы использовали команду ping для подтверждения базовой сетевой связности как с шлюзом по умолчанию, так и с внешними хостами. Чтобы получить более глубокое представление об уровне сети, вы изучили кэш протокола разрешения адресов (ARP) с помощью команды arp, чтобы увидеть сопоставления IP-адресов с MAC-адресами. Наконец, вы использовали traceroute для пошагового отслеживания сетевого пути к пункту назначения, проверяя вашу конфигурацию маршрутизации.