Debian настройка сети ipv6

Обновлено: 29.06.2024

В этой статье я опишу простую настройку сети для сервера под управлением ОС Debian 9 (Stretch). Эта статья является переработкой моей более ранней статьи «Настройка сети в Debian». Она была справедлива для версий старше Debian 9. В Debian 9 многое изменилось в настройке и диагностике сети. Те, кто перешёл сюда со старой статьи, уже знают, в чём дело. Но я повторюсь для тех, кто сразу попал на эту статью.
Во-первых, в Debian 9 изменилась система именования сетевых интерфейсов. Если раньше, например для Ethernet, имена интерфейсов были следующими: eth0, eth1, eth2 и т. д. То сейчас используются номера интерфейсов в BIOS, а также номера слотов PCI. Это называется stateless persistent network interface names (имена постоянных сетевых интерфейсов без отслеживания состояния) Т. е. имя может быть enp0s3, или ens30, или wlp3s0 для wi fi. При желании можно переименовать сетевые интерфейсы, вернуться к прежней системе, но это материал для отдельной статьи.

Во-вторых, раньше для настройки и диагностики сети использовались утилиты из пакета net-tools. При установке Debian этот пакет устанавливался по умолчанию вместе с системой. Теперь он просто присутствует в репозиториях и вместо него по умолчанию устанавливается пакет iproute2, При желании можно установить старый пакет (net-tools) и пользоваться прежними утилитами. Но мы этого делать не будем, и в этой статье будет описано использование программ из нового пакета.

В-третьих, изменилась система инициализации – Debian перешёл на systemd. Это значит, что сервисы надо перезапускать по-другому.

И так начнём. Обычно первичная настройка сети происходит ещё на этапе установки. Об этом можно прочесть в моей статье «Установка Debian на сервер». Если по какой-то причине это не было сделано при установке, то мы с вами попытаемся решить проблемы с сетью и настроить наш сервер.

Установка сетевой карты

В первую очередь нужно убедиться, что сетевые карты установлены, а если они интегрированы в материнскую плату, то включены в BIOSе, а так же подключены сетевые кабели. Проверим, видит ли система наши сетевые карты (интерфейсы). Для этого дадим следующую команду:

$ sudo ip link show

Видим на экране примерно следующее:

1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:90:45:38 brd ff:ff:ff:ff:ff:ff

Это список всех установленных интерфейсов. Первый блок описывает интерфейс локальной петли (link/loopback), а второй описывает интерфейс Ethernet (link/ether) с именем enp0s3.

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

Некоторые флаги состояния (подробнее в man netdevice(7)):

  • LOOPBACK — интерфейс является локальным и не может взаимодействовать с другими узлами в сети;
  • UP — устройство подключено;
  • DOWN — устройство отключено;
  • NO-CARRIER — нет связи (не подключен кабель).
  • BROADCAST — устройство способно отправлять широковещательные фреймы;
  • POINTTOPOINT — соединение типа "точка-точка"
  • PROMISC — устройство находится в режиме "прослушивания" и принимает все фреймы.
  • NOARP — отключена поддержка разрешения имен сетевого уровня.
  • ALLMULTI — устройство принимает все групповые пакеты.

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

И так, наше оборудование функционирует нормально. Нам нужно настроить статический IP-адрес со следующими параметрами: IP-адрес 192.168.123.254, маска подсети 255.255.255.0, основной шлюз 192.168.123.1. Посмотрим вывод команды ip addr:

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

1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
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 pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:90:45:38 brd ff:ff:ff:ff:ff:ff
inet 192.168.123.254/24 brd 192.168.123.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe90:4538/64 scope link
valid_lft forever preferred_lft forever

Некоторая часть информации нам уже знакома. Смотрим информацию об интерфейсе Ethernet (второй в списке). Первое, что мы видим - тип адреса: inet – адрес IPv4, inet6 – адрес IPv6. Мы настраиваем сеть по протоколу IP четвёртой версии, поэтому смотрим на третью строку. Далее следует ip-адрес (192.168.123.254) с указанием маски подсети в битовом виде (/24). Затем идёт широковещательный (brd) адрес (192.168.123.255) подсети. Завершается строка областью видимости (scope global - действителен везде, scope link - только для данного устройства, scope host - для данного узла) и именем интерфейса (enp0s3).

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

1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
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

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

interface enp0s3 not configured

Тогда, для начала, проверяем существование файла /etc/network/interfaces. Если он не существует, то создаём его, если существует, то редактируем текстовым редактором:

Для сервера с одним сетевым интерфейсом у нас должно получиться следующее:

source /etc/network/interfaces.d/*

Остановимся на некоторых моментах:

  • auto – через пробел перечисляются имена сетевых интерфейсов, которые будут включаться при запуске операционной системы
  • allow-hotplugin – нужен, если возможна горячая замена сетевой карты, например, если она подключена через USB.
  • iface – ключевое слово, описывающее интерфейс. После него через пробел пишется имя этого интерфейса.
  • inet – тип ip адреса. inet – адрес IPv4
  • static – указывает на статический адрес
  • address – ip адрес
  • netmask – маска подсети
  • gateway – шлюз по умолчанию

В последней строке описания интерфейса идёт перечисление через пробел dns-серверов, у вас там, естественно должны быть адреса dns-серверов вашего провайдера или вашей сети. Сохраняем изменения (Ctr+O, затем Enter) и редактируем файл /etc/resolv.conf:

Он опять же должен содержать адреса dns-серверов вашего провайдера или вашей сети.

nameserver 213.177.96.1
nameserver 213.177.97.1

Сохраняем изменения и активируем сетевой интерфейс:

Если ошиблись при редактировании файлов, то тщательно проверяем и исправляем ошибки. Если всё заполнено правильно, перезапускаем сетевые службы:

Это по-старому. По-новому (с systemd) будет так:

Проверяем что у нас получилось, использую команду ip addr для своего интерфейса:

2: enp0s3: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:90:45:38 brd ff:ff:ff:ff:ff:ff
inet 192.168.123.254/24 brd 192.168.123.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe90:4538/64 scope link
valid_lft forever preferred_lft forever

Проверяем работу сети. Сначала проверяем локальный интерфейс (параметр -с 4 подразумевает отправку четырех пакетов):

$ ping 127.0.0.1 -с 4

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.036 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.044 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.043 ms

--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3078ms
rtt min/avg/max/mdev = 0.036/0.042/0.045/0.003 ms

Затем проверяем сетевой интерфейс («пингуем» сами себя):

$ ping 192.168.123.254 -с 4

PING 192.168.123.254 (192.168.123.254) 56(84) bytes of data.
64 bytes from 192.168.123.254: icmp_seq=1 ttl=64 time=0.027 ms
64 bytes from 192.168.123.254: icmp_seq=2 ttl=64 time=0.044 ms
64 bytes from 192.168.123.254: icmp_seq=3 ttl=64 time=0.046 ms
64 bytes from 192.168.123.254: icmp_seq=4 ttl=64 time=0.045 ms

--- 192.168.123.254 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3070ms
rtt min/avg/max/mdev = 0.027/0.040/0.046/0.010 ms

Теперь основной шлюз:

$ ping 192.168.123.1 -с 4

PING 192.168.123.1 (192.168.123.1) 56(84) bytes of data.
64 bytes from 192.168.123.1: icmp_seq=1 ttl=64 time=5.60 ms
64 bytes from 192.168.123.1: icmp_seq=2 ttl=64 time=0.986 ms
64 bytes from 192.168.123.1: icmp_seq=3 ttl=64 time=0.966 ms
64 bytes from 192.168.123.1: icmp_seq=4 ttl=64 time=0.975 ms

--- 192.168.123.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.966/2.132/5.602/2.003 ms

И какой-нибудь удалённый хост по имени:

На этом настройка статического IP-адреса для сервера с одним сетевым интерфейсом закончена.

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

В некоторых случаях сервер может получать динамический IP-адрес. Чаще всего это зарезервированный адрес или псевдо статический. Т. е. на DHCP-сервере производится привязка определённого mac-адреса к определённому ip-адресу (об этом читайте в статье «Настройка DHCP в Debian»). Такая ситуация может встретиться и в локальной сети, но чаще всего она встречается тогда, когда провайдер выдает ip-адреса динамически. В этом случае файл /etc/network/interfaces выглядит следующим образом:

После сохранения файла перезапустим сетевой сервис:

И посмотрим, что получилось:

2: enp0s3: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:90:45:38 brd ff:ff:ff:ff:ff:ff
inet 192.168.123.35/24 brd 192.168.123.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe90:4538/64 scope link
valid_lft forever preferred_lft forever

DHCP сервер моей сети выделил компьютеру ip адрес 192.168.123.35

Команда ip

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

Получить информацию по ip адресам:

Удалить ip адрес:

Назначить ip адрес вместо удалённого:

Получить информацию по маршрутам:

Добавить основной шлюз:

Добавить маршрут в сеть 192.168.111.0/24 через шлюз 192.168.123.2

Помните, что у нас вы можете не только купить готовый сайт или заказать его разработку, но и подобрать подходящий тариф поддержки сайта, заказать продвижение сайта в поисковых системах, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! Айтишник РУ

Об авторе:

Ещё статьи о Debian

Работаем с wget в Debian

Одна из самых частых задач при работе с любой операционной системой – это скачивание файлов. Существует несколько способов получения файлов с удаленного компьютера. В этой статье я расскажу, как решить задачу скачивания файлов в Debian с.

Настройка обновлений в Debian

После установки Debian Linux и настройки сети я рекомендую приступить к настройке обновлений. Для обновления и установки пакетов в Debian используются утилиты apt и aptitude. Независимо от того, какой из этих утилит Вы будете.

Генерация ключей SSH

Мы знаем, что при подключении с использованием аутентификации с ключом хоста открытый ключ сервера копируется на компьютер-клиент. А где находятся ключи на сервере? На сервере они лежат в директории /etc/ssh. В Debian при установке.

Насторйка OpenSSH

Настройки sshd находятся в файле /etc/ssh/sshd_config. Открываем этот файл для редактирования и изменяем его содержимое для наших нужд, не забывая при этом о безопасности. Первый параметр – Port. По умолчанию используется 22 порт.

Как обновить Debian 6 Squeeze до Debian 7 Wheezy

Прошло более двух месяцев с момента выхода новой стабильной версии операционной системы Debian GNU/Linux – Debian 7 (Wheezy). За это время были исправлены ошибки и даже вышла новая версия – 7.1. А это значит, что теперь можно и.

Настройка FTP сервера в Debian 5 (Lenny)

В этой статье я опишу настройку FTP сервера на базе Debian 5 (Lenny). Будем использовать vsftpd. VSFTPD (Very Secure FTP Daemon) — как следует из названия, очень защищённый демон FTP, с хорошей производительностью, поддерживаются: IPv6.

Настраивать будем Debian Squeeze. В Ubuntu в принципе то же самое.

Заходим на сайт Hurricane Electric, регистрируемся. Логинимся на сайте, и создаём туннель: вписываем свой IPv4 адрес и выбираем сервер поближе. Нам выделяют одну /64 подсеть, в которой будут находиться сервер и клиент как конечные точки туннеля.

В подсети /64 туннеля первый адрес — адрес сервера, второй — адрес клиента (то есть, наш).

Если у вас есть локальная сеть и вы хотите чтобы все машины в ней тоже получили IPv6 адреса, то запрашиваем ещё одну /64 подсеть («routed /64»). Если у вас 2 или более локальных сети за роутером, то запрашиваем /48 подсеть («routed /48»), которую будем нарезать на нужное количество /64. Все выделенные нам подсети будут маршрутизироваться через наш сервер.

Настраиваем туннель — интерфейс he-ipv6. Здесь используем подсеть /64 для туннеля. Вместо «переменных» вводим то, что получили на первом шаге.

Дописываем в конец /etc/network/interfaces

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address $CLIENT_IPv6
netmask 64
endpoint $SERVER_IPv4
local $CLIENT_IPv4
gateway $SERVER_IPv6
ttl 64

Таким образом, Google решил включать IPv6 в DNS в масштабе отдельных провайдеров. Hurricane Electric относится как раз к таким провайдерам. Они предоставляют DNS сервер 2001:470:20::2, через который все домены сервисов Google резолвятся в том числе и в IPv6 адреса.

Можно сразу вписать в /etc/resolv.conf этот сервер, а можно поднять локальный кеширующий bind и немного выиграть в скорости.

Есть два способа настройки: можно резолвить через этот сервер только адреса Google (но нужно знать их список), а можно резолвить вообще всё (и не использовать DNS серверы провайдера вообще). Предлагаю второй способ, он проще, и к тому же у меня нет списка всех адресов сервисов Google.

Правим файл /etc/bind/named.conf.options

acl mynetworks localhost;
192.168.0.0/16; // наша локальная сеть, если есть
2001:XXXX:XXXX:XXXX::/64; // наша IPv6 /64
2001:XXXX:XXXX::/48; // наша IPv6 /48, если есть
>;

options directory "/var/cache/bind";

Если всё хорошо, то можно использовать. Вписываем в /etc/resolv.conf

Если нет локальной сети — то всё готово :)

Для настройки машин в локальной сети предлагаю использовать stateless autoconfiguration. Это чем-то напоминает DHCP, но разница в том, что этот протокол staleless, то есть, сервер не хранит список выданных адресов. Принцип работы следующий: серверу выделяется одна /64, из которой он раздаёт адреса клиентам. Уникальность полученного IPv6-адреса обеспечивается тем, что в него включается MAC адрес клиента (немного преобразованный).

Пусть у нас на eth0 локальная сеть, а на eth1 — провайдер. Пока что IPv6 настроен только на интерфейсе he-ipv6. Поэтому eth0, смотрящий в локальную сеть должен получить статический IPv6-адрес для установки соединений с клиентами. Но мы не может назначить eth0 адрес из нашей туннельной /64, так как тогда получится что два интерфейса смотрят в одну и ту же подсеть. Можно разбить нашу /64 на две, но тогда не будет работать stateless autoconfiguration. Поэтому мы взяли себе ещё одну /64, из которой будем раздавать адреса в локальную сеть (важно подчеркнуть: это настоящие внешние IPv6 адреса). Пусть нам выдали 2001:XXXX:YYYY:ZZZZ::/64.

Если у нас несколько сетей за маршрутизатором, то мы взяли себе ещё и /48, из которой будем использовать необходимое количество подсетей /64. Пусть нам выдали 2001:XXXX:YYYY::/48. Дописываем ещё номер сети — будет занимать целых 2 байта и получаем: 2001:XXXX:YYYY:1::/64. Таким образом, у нас могло бы быть аж 65536 разных сетей. Адресом сервера будет 2001:XXXX:YYYY:1::1. Дальше пример с несколькими сетями не развиваю, думаю что довольно просто обобщить конфигурационные файлы на случай нескольких сетей.

Итак, у нас одна сеть за маршрутизатором, 2001:XXXX:YYYY:ZZZZ::/64. Дописываем в конец /etc/network/interfaces

iface eth0 inet6 static
address 2001:XXXX:YYYY:ZZZZ::1
netmask 64

interface eth0
AdvSendAdvert on;
MaxRtrAdvInterval 30;

prefix 2001:XXXX:YYYY:ZZZZ::1/64
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;
AdvValidLifetime 300;
AdvPreferredLifetime 120;
>;
>;

Включаем форвардинг:
/etc/sysctl.conf

Теперь все компьютеры из локальной сети должны автоматически получить IPv6 адреса и адрес шлюз. За процессом можно следить на сервере при помощи команды radvdump, а на клиентах проверять наличие адреса при помощи ip -6 a.

DNS-сервер придётся прописать клиентам вручную, stateless autoconfiguration этого не умеет.

Так как адреса клиентов основываются на MAC адресах, то в результате получаются адреса вида: 2001:528d:d4b6:1:215:f2ff:fe55:2d85. Работать с этим довольно тяжело, запомнить — невозможно. На помощь приходит multicast dns и его реализация в виде Avahi.

Проверяем наличие в /etc/avahi/avahi-daemon.conf строк:

Теперь все компьютеры в локальной сети получат имена вида hostname.local. Эти имена будут резолвиться по умолчанию в IPv4 адреса. Чтобы они резолвились по умолчанию в IPv6, правим строчку в /etc/nsswitch.conf.

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Теперь можно использовать имена hostname.local и по умолчанию будут устанавливаться IPv6 соединения.

Держите кеширующий прокси в локальной сети? Небольшая проблема: Squid получил полноценную поддержку IPv6 только в версии 3.1.0.x, которая сейчас находится в репозитории experimental. На самом деле ничего особо экспериментального, у меня нормально работает уже 4 месяца.

Устанавливаем squid3, в разрешающий ACL вписываем наши сети /64 и /48.

UPD. На linuxforum заметили, что Hurricane Electric выдаёт две /64, поэтому запрашивать /48 с одной локальной сетью не нужно. Обновил топик.

UPD2. В связи с появившимися копипастами напомнимаю, что перепечатка разрешена только с моего разрешения.

IPv6 является последней версией протокола IP, который используется для подключения в сети Интернет.

Примечание: В целом словосочетание «протокол IP» не совсем правильное, поскольку IP расшифровывается как «Internet Protocol» (межсетевой протокол), однако оно будет употребляться в этой статье для простоты.

Предыдущая версия протокола, IPv4, до сих пор используется во многих уголках сети, однако адресное пространство IPv4 потребляется очень быстрыми темпами.

Чаще всего на одном сервере используются оба протокола. Однако иногда возникает необходимость отключить IPv4 и полностью перейти на IPv6.

Данное руководство поможет выполнить такую настройку.

Примечание: В большинстве случаев полностью переходить на IPv6 нет необходимости.

При этом протокол IPv4 будет активен только для локального хоста, так как от него зависит работа некоторых программ.

Важно! Если вы подключены к серверу по IPv4, после отключения протокола подключение будет сброшено. После этого нужно подключиться к серверу либо по IPv6 (если его поддерживает локальная настройка), либо через консоль.

Временное отключение IPv4

Чтобы временно отключить IPv4, нужно просто отредактировать файл /etc/resolv.conf, настроить использование DNS-серверов IPv6 (если протокол IPv6 уже включен), а затем удалить правило, отвечающее за поддержку адресов IPv4. Эти изменения будут действительны до следующей перезагрузки сервера.

Чтобы отредактировать файл /etc/resolv.conf, введите:

sudo nano /etc/resolv.conf

Если параметр nameservers задаёт адреса IPv4, нужно изменить его значение на IPv6.

К примеру, чтобы настроить директивы на серверы имен IPv6 Google, отредактируйте файл следующим образом:

nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888
nameserver 209.244.0.3

Сохраните и закройте файл.

После этого нужно узнать префикс IPv4-адреса и маршрутизации CIDR:

ip -4 addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 128.199.175.162/18 brd 128.199.191.255 scope global eth0

Искомое значение выделено красным. После этого можно удалить его из активных сетевых соединений (замените выделенное красным значение своими полученными данными):

ip addr del 128.199.175.162/18 dev eth0

Примечание: Именно в этот момент соединение оборвётся, если сервер использует IPv4.

Полное отключение IPv4 в CentOS и Fedora

Чтобы полностью отключить работу IPv4, нужно отредактировать файлы интерфейса.

Откройте /etc/sysconfig/network. Если протокол IPv6 был включен на готовом сервере (а не при его создании), в файл нужно добавить одну строку.

sudo nano /etc/sysconfig/network

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

NETWORKING=yes
HOSTNAME=centafter
NETWORKING_IPV6=yes

После этого нужно отредактировать /etc/sysconfig/network-scripts/ifcfg-eth0.

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

Закомментируйте параметры IPv4, чтобы они не использовались при запуске сервера:

Затем нужно добавить параметры IPv6 (если протокол IPv6 был включен на готовом сервере).

IPV6INIT=yes
IPV6ADDR=public_ipv6_address/64
IPV6_DEFAULTGW=public_ipv6_gateway
IPV6_AUTOCONF=no

Примечание: Укажите в параметрах свои данные.

DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=209.244.0.3

После этого следуйте инструкциям предыдущего раздела.

Полное отключение IPv4 в Debian и Ubuntu

В системах Debian и Ubuntu настройка выполняется аналогичным образом.

Откройте файл /etc/network/interfaces:

sudo nano /etc/network/interfaces

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

iface eth0 inet6 static
. . .
iface eth0 inet static
. . .

Чтобы интерфейс IPv4 не был возобновлен после перезагрузки сервера, удалите или закомментируйте раздел inet для eth0. Тогда активным будет только раздел inet6.

Примечание: То же самое нужно сделать, если IPv6 был включен после создания сервер.

Потом нужно добавить настройки IPv6 в конфигурационный файл:

iface eth0 inet6 static
address public_ipv6_address
netmask 64
gateway public_ipv6_gateway
autoconf 0
dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888 209.244.0.3

Сохраните и закройте файл.

Теперь можно отключить IPv4. Инструкции можно найти в первом разделе руководства.

Заключение

Теперь сервер доступен только по IPv6.

Это может усложнить выполнение определенных процедур, но в некоторых обстоятельствах это необходимо. Вы можете легко вернуть поддержку IPv4; для этого просто замените настройки, описанные в руководстве, прежними параметрами.

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

В этой статье будет рассмотрена настройка сети Debian 9. Мы разберем как настроить имя хоста, сетевые интерфейсы и получить IP адреса для них. Эта инструкция подойдет как для обычных компьютеров, так и для серверов.

1. Имя компьютера

Чтобы посмотреть текущее имя хоста вы можете использовать команду hostname:


Установить новое имя хоста очень просто, для этого достаточно передать его команде hostname в качестве параметра:


После перезагрузки имя хоста не сохранится, поэтому вам нужно отредактировать файл /etc/hostname и добавить туда новое имя хоста, уже это имя останется даже после перезагрузки:


Осталось только связать новое имя хоста с локальным IP адресом, чтобы иметь возможность обращаться по нему к компьютеру. Для этого добавьте такую строку в файл /etc/hosts:

127.0.0.1 localhost debian-pc


2. Список сетевых интерфейсов

Перед тем как мы сможем настроить сеть нужно посмотреть какие сетевые интерфейсы подключены к вашей системе и какие имена им присвоены. Для этого наберите:


Также можно посмотреть только имена интерфейсов, в папке /sys/class/net:


3. Настройка сетевого интерфейса

Для настройки сетевых интерфейсов в операционных системах, основанных на Debian, используется файл /etc/network/interfaces. Здесь должно находится описание для каждого интерфейса, способ получения IP а другие параметры. В одном файле может быть настроено несколько интерфейсов. Описание каждого интерфейса начинается со слова auto после которого идет имя интерфейса.

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


Перед тем как рассматривать все более подробно, поговорим про опции, которые можно использовать:

  • pre-up - выполнить команду перед запуском интерфейса;
  • post-up - выполнить команду после запуска интерфейса;
  • up - выполнить команду при запуске интерфейса;
  • pre-down - команда перед отключением;
  • post-down - команда после отключения;
  • iface - указывает имя интерфейса;
  • inet - указывает
  • description - создать имя синоним для устройства;
  • address - устанавливает ip адрес для статического соединения;
  • netmask - установка маски сети;
  • broadcast - широковещательный адрес;
  • metric - приоритет для шлюза по умолчанию;
  • gateway - шлюз по умолчанию;
  • hwaddress - установить MAC адрес;
  • mtu - размер одного пакета.

Это далеко не все опции, которые можно использовать, но основные из них и уже с помощью этого можно настроить большинство из того, что нужно. Дальше рассмотрим различные варианты настройки интерфейсов, самый часто используемый на домашних компьютерах - это получение ip адреса по DHCP, в таком случае, ip адрес может меняться при каждом запуске. Рассмотрим его первым.

Настройка динамического IP

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

auto eth0
iface eth0 inet dhcp

Но если необходимо, то вы можете установить вручную ip адрес DNS сервера:

Для локального интерфейса настройка будет выполняться таким образом:

auto lo
iface lo inet loopback

Здесь мы не получаем адрес по DHCP, но присваиваем локальный адрес 127.0.0.1.

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

Если вы хотите установить именно статический IP, то здесь все будет немного сложнее. Нам нужно знать не только этот свободный IP адрес, но и шлюз, маску сети и DNS сервер. Для настройки используется такой набор строк:

iface eth0 inet static
address 192.168.1.15
netmask 255.255.255.0
gateway 192.168.1.1
broadcast 192.168.0.255
dns-nameserver 8.8.8.8


Здесь указывается, что мы будем использовать метод получения ip адреса static, а затем расписаны все параметры. Но это еще далеко не все, что можно сделать с помощью файла /etc/network/interfaces. Также вы можете создавать виртуальные интерфейсы.

Настройка виртуальных интерфейсов

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

auto eth0:0
iface eth0:0 inet static
address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8


Имя интерфейса, для которого создается виртуальный интерфейс должно совпадать с реальным.

Настройка мостов

Сетевые мосты между виртуальными интерфейсами в системе позволяют настроить полноценный доступ к интернету из виртуальных машин. Они могут применяться для KVM,qemu,XEN и других конфигураций. Для настройки моста используйте:

auto br0
iface br0 inet static
address 192.168.1.20
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0


Здесь мы указываем имя интерфейса br0, дальше выполняем стандартную настройку получения статического IP адреса, затем связываем этот мост с интерфейсом eth0.

Перезагрузка сети

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

sudo systemctl restart networking

Выводы

В этой статье мы рассмотрели как выполняется настройка сети Debian 9. Конечно, это еще далеко не все, что возможно настроить, но с помощью этих команд можно в большинстве случаев заставить работать сеть. настройка сети из консоли debian дело сложное, в графическом интерфейсе все делается намного проще, с помощью NetworkManager все настраивается автоматически. Надеюсь, эта информация была полезной для вас.

Команда ip используется для назначения адреса сетевому интерфейсу и/или конфигурирования параметров сетевого интерфейса в дистрибутивах Linux. Эта команда заменяет собой старую добрую и ныне устаревшую команду ifconfig в современных дистрибутивах Linux.

Команда ip может использоваться для следующих целей:

  • Узнать какие интерфейсы сконфигурированы в системе.
  • Запросить статус IP интерфейса.
  • Сконфигурировать локальный, Ethernet и другие интерфейсы.
  • Пометить интефейс как up или down.
  • Сконфигурировать или изменить статическую маршрутизацию или маршрутизацию по умолчанию.
  • Сконфигурировать туннель через IP.
  • Сконфигурировать содержимое ARP или NDISC кэша.
  • Назначить IP адресы, маршруты, подсети и другую IP информацию на интерфейс.

Синтаксис

Понимание синтаксиса OBJECTS в комманде ip

OBJECTS может быть одним из следующих и может записываться в полной или сокращенной форме:

Объект Сокращенная форма Задача
link l Сетевое устройство.
address a, addr IP адрес на устройстве.
addrlabel addrl Управление метками для выбора адреса.
neighbour n, neigh Записи для ARP или NDISC кэшей.
route r Управление записямя таблицы маршрутизации.
rule ru Правила в базе политик маршрутизации.
maddress m, maddr Мультикаст адрес.
mroute mr Записи мультикастового кэша маршрутизации.
tunnel t Туннель через IP.
xfrm x Фреймворк для протокола IPsec.

Чтобы получить информацию о каждом из объектов используйте команду help следующим образом:

Предупреждение : команды описанные ниже должны выполняться с осторожностью, так как ошибка может привести к потере соединения с сервером. Вы должны быть особо аккуратны при работе в удаленной сессии по ssh.

Примеры использования команды ip

Не пугайтесь синтаксиса команды ip. Давайте сразу начнем с примеров.

Показать информацию обо всех сетевых интерфейсах

Введите следующую команду чтобы получить список всех ip адресов назначенных всем сетевым интерфейсам:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:8b:46:9a brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe8b:469a/64 scope link
valid_lft forever preferred_lft forever

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

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

Назначить интерфейсу IP адрес

Для того чтобы добавить IP адрес используется синтаксис следующего вида:

Чтобы назначить адрес 192.168.1.200/255.255.255.0 на интерфейс eth0, введите:

Добавить широковещательный адрес на интерфейс

По умолчанию, команда ip не задает какой-либо широковещательный адрес до тех пор, пока это будет недвусмысленно указано. Таким образом следующий синтаксис задает широковещательный адрес ADDRESS:

Существует возможность использовать специальные символы + и - вместо широковещательного адреса указывая хостовую часть адреса. В этом примере добавим адрес 192.168.1.50 с маской 255.255.255.0 (/24) со стандартным широковещательным адресом и зададим название eth0Work на интерфейс eth0:

Вы можете задать лупбек адрес на лупбек интерфейсе lo следующим образом:

Удалить IP адрес с интерфейса

Синтаксис для удаления IPv4/IPv6 адреса следующий:

Чтобы удалить 192.168.1.200/24 с интерфейса eth0, введите:

Сбросить ряд IP адресов с интерфейса

Вы можете удалять IP адреса с интерфейса по одному, как показано выше. Однако команда flush может удалить набор адресов с интерфейса по указанному признаку. Например, вы можете удалить все адреса из частной сети 192.168.2.0/24 с помощью команды:

2: eth0 inet 192.168.2.201/24 scope global secondary eth0
2: eth0 inet 192.168.2.200/24 scope global eth0
*** Round 1, deleting 2 addresses ***
*** Flush is complete after 1 round ***

Вы можете выключить IP адрес на всех ppp (Point-to-Point) интерфейсах:

Еще один пример для всех Ethernet интерфейсов:

Как изменить состояние интерфейса на UP или DOWN

К примеру, чтобы положить интерфейс eth1, используйте:

А чтобы поднять этот же интерфейс:

Как изменить txqueuelen устройства

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

В этом примере изменим txqueuelen со значения по умолчанию, равного 1000, на 10000 для интерфейса 10000:

Как изменить MTU устройства

Для гигабиных сетей вы можете установить максимальный размер блоков передачи (MTU) для лучшей производительности сети. Синтаксис следующий:

Например, установим MTU устройства eth0 на 9000:

2: eth0: mtu 9000 qdisc pfifo_fast state UP qlen 1000
link/ether 00:08:9b:c4:30:30 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1
inet6 fe80::208:9bff:fec4:3030/64 scope link
valid_lft forever preferred_lft forever

Показать соседей (arp кэш)

Пример вывода (часть информации скрыта):

74.xx.yy.zz dev eth1 lladdr 00:30:48:yy:zz:ww REACHABLE
10.10.29.66 dev eth0 lladdr 00:30:48:c6:0a:d8 REACHABLE
74.ww.yyy.xxx dev eth1 lladdr 00:1a:30:yy:zz:ww REACHABLE
10.10.29.68 dev eth0 lladdr 00:30:48:33:bc:32 REACHABLE
74.fff.uu.cc dev eth1 lladdr 00:30:48:yy:zz:ww STALE
74.rr.ww.fff dev eth1 lladdr 00:30:48:yy:zz:ww DELAY
10.10.29.65 dev eth0 lladdr 00:1a:30:38:a8:00 REACHABLE
10.10.29.74 dev eth0 lladdr 00:30:48:8e:31:ac REACHABLE

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

  • STALE - сосед существует, но, скорее всего недоступен, поэтому ядро попробует проверить это при первой ближайшей передаче.
  • DELAY - пакет был отправлен соседу в состоянии STALE и ядро ждет подтверждения.
  • REACHABLE - сосед существует и определенно доступен.

Добавить новую ARP запись

Например, добавить постоянную ARP запись для соседа 192.168.1.5 на устройстве eth0:

Состояние соседа Значение
permanent Состояние соседа занято навсегда и может быть удалено только администратором.
noarp Состояние соседа валидно. Попыток проверить состояние не будет, но может быть удалено, когда закончится время жизни.
stale Состояние соседа валидно, но подозрительно. Эта опция для ip neigh не меняет состояние соседа, если оно было валидно и адрес не был изменен этой командой.
reachable Состояние соседа валидно до окончания таймаута доступности.

Удалить ARP запись

Удалить запись для соседа 192.168.1.5 на интерфейсе eth1:

Изменить состояние на reachable для соседа 192.168.1.100 на устройстве eth1:

Очистить ARP запись

Команда flush или f очищает таблицы соседей или arp таблицы. Синтаксис:

ip route: команды управления таблицей маршрутизации

Используйте следующие команды для управления таблицей маршрутизации ядра.

Показать таблицу маршрутизации

Посмотреть таблицу маршрутизации:

Показать роутинг для 192.168.1.0/24:

192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10

Добавить новый маршрут

Добавить статический маршрут в сеть 192.168.1.0/24 через шлюз 192.168.1.254:

Чтобы маршрутизировать весь трафик через шлюз 192.168.1.254 подключенный через сетевой интерфейс eth0:

Читайте также: