Сейчас мы подробно разберем все наиболее значимые нюансы сетевых настроек, которые могут пригодиться в повседневной работе. Первоначальная настройка сети начинается во время установки сервера. Если у вас есть сетевой интерфейс и dhcp сервер в сети, то сеть сконфигурируется автоматически на основе полученных настроек и будет готова к работе. Впоследствии вы можете выполнить настройку сети в Debian через консоль с помощью программ ip или ifconfig. Наиболее популярным и современным средством на текущий момент является ip, поэтому в дальнейшем рассмотрим вопрос конфигурации сетевых интерфейсов с её помощью. Про ifconfig тоже не забудем. Рассмотрим её в конце. Отдельно стоит такой инструмент управления сетевыми подключениями как Network Manager. В базовой версии сервера Debian минимальной конфигурации он не установлен. Его удобно использовать в сочетании с графическими оболочками, которых на сервере обычно нет, поэтому вопрос его настройки я не буду рассматривать.
Есть 2 различные возможности изменить сеть в Debian:
- Настройка сети из консоли с помощью указанных ранее консольных программ.
- С помощью редактирования конфигурационного файла сетевых интерфейсов /etc/network/interfaces.
Мы рассмотрим оба этих варианта. Вводная теоретическая часть окончена, приступаем к практике.
Настройка статического IP
Вы установили сервер и во время установки указали какие-то сетевые параметры, или не указали, не важно. Но сейчас вы решили, что вам нужно назначить статический ip (static ip) адрес. Воспользуемся для этого утилитой ip. Сначала посмотрим список всех сетевых интерфейсов:
# ip a
У меня в системе 1 сетевой интерфейс ens18 и он каким-то образом уже сконфигурирован. Назначим ему еще один статический адрес:
# ip addr add 192.168.1.35/24 dev ens18
Этот адрес будет добавлен к уже существующему адресу. Проверим это:
# ip a
Теперь сервер будет доступен по обоим адресам. Текущая настройка сохранится только до перезагрузки сервера. Чтобы она применялась во время загрузки, нужно либо каким-то образом добавить команду на изменение настроек в автозагрузку, например в /etc/rc.local или в /etc/crontab, но это будет костыль. Так сделать можно, но не нужно. Правильнее отредактировать файл, который отвечает за сетевые настройки в Debian – /etc/network/interfaces. Для того, чтобы назначить постоянный статический ip адрес, его нужно привести к следующему виду:
# mcedit /etc/network/interfaces
source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto ens18 iface ens18 inet static address 10.20.1.36 gateway 10.20.1.1 netmask 255.255.255.0
auto | указанный интерфейс необходимо запускать автоматически при загрузке системы |
iface | интерфейс ens18 находится в диапазоне адресов IPv4 со статическим ip |
address | статический ip адрес |
gateway | шлюз по умолчанию |
netmask | маска сети |
Отдельно задержусь на моменте с активацией интерфейса. Оно может выполняться двумя разными настройками:
- auto – интерфейс активируется при загрузке системы. Это подходящая настройка для статичного сетевого адаптера.
- allow-hotplug – интерфейс поднимается, когда подсистема udev обнаружит его. Это произойдёт и при загрузке системы, как в случае с auto, если сетевая карта будет подключена, и в случае подключения, отключения устройства. Например, если это usb сетевая карта или VPN туннель. Настройка больше подходит для динамических сетевых интерфейсов.
Для проверки перезагружаем сервер и смотрим, всё ли в порядке с настройкой статического ip адреса. Если вам нужно сменить ip адрес в Debian, то вы можете временно изменить его с помощью команды ip, либо постоянно, отредактировав параметр address в файле сетевых настроек interfaces.
Получение сетевых настроек по DHCP
Теперь рассмотрим вариант, когда вам необходимо получить динамический ip адрес в Debian. Здесь по аналогии с предыдущими настройками можно пойди двумя путями:
- Получить ip адрес по dhcp в консоли с помощью программы dhclient, который будет работать до перезагрузки.
- Отредактировать файл конфигурации сетевых интерфейсов.
Смотрим снова на текущую конфигурацию сети:
# ip a
Выполним команду на получение ip адреса по dhcp и проверим сеть:
# dhclient # ip a
В качестве второго ip мы получили адрес от dhcp сервера. Если у вас несколько сетевых интерфейсов, то необходимо добавлять название после команды, например вот так:
# dhclient eth0
Для того, чтобы сбросить адрес, нужно воспользоваться следующим ключом:
# dhclient -r
Обращаю внимание, что эта команда сбросит все ip адреса интерфейса, в том числе и статические. Выполнять её можно только будучи подключенным к консоли сервера напрямую, а не по сети. Чтобы снова запросить адрес, нужно выполнить предыдущую команду на получение ip. А чтобы вернуть статические настройки, надо перезапустить службу сети:
# systemctl restart networking
Все изменения, сделанные в консоли сервера после перезагрузки, исчезнут. Чтобы их сохранить, приведем файл /etc/network/interfaces к следующему виду:
# mcedit /etc/network/interfaces
source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto ens18 iface ens18 inet dhcp
Установка шлюза по умолчанию (default gateway)
Теперь разберемся со шлюзом по умолчанию. В предыдущих примерах со статическим ip адресом и настройками по dhcp у нас не было необходимости указывать отдельно default gateway. Мы его устанавливали вместе с остальными настройками. Чтобы посмотреть установленный по умолчанию шлюз в Debian, можно воспользоваться следующей командой в консоли:
# ip route
или ещё короче:
ip r
default via 10.20.1.1 dev ens18 onlink 10.20.1.0/24 dev ens18 proto kernel scope link src 10.20.1.66
Выделен шлюз по умолчанию (default gateway). Можно воспользоваться другими программами, которые на текущий момент признаны устаревшими, но от этого не переставшими выполнять свои функции:
# route # netstat -nr
Если получите ошибки:
-bash: route: command not found -bash: netstat: command not found
Значит у вас не установлен пакет net-tools. Установить его можно следующей командой.
# apt install net-tools
Сетевые инструменты из пакета net-tools объявлены устаревшими и не включены в состав базовой системы. Я иногда продолжаю пользоваться, потому что мне нравится их вывод больше, чем у команды ip. Netstat мне видится более информативным, хотя по сути, они все показывают одно и то же. Отказ в пользу утилиты ip идет по той причине, что она объединяет в себе все основные сетевые инструменты. Удобнее пользоваться только ей одной для настройки сети, нежели разными утилитами для разных целей. Если вы только изучаете Linux, то пользуйтесь сразу командой ip.
Если нам нужно сменить default gateway, то сначала надо удалить текущий шлюз, а потом назначить новый.
# ip route del default # ip route add default via 10.20.1.100
То же самое, только с помощью route:
# route del default gw 10.20.1.1 # route add default gw 10.20.1.100
Проверяем, что получилось:
# ip r
default via 10.20.1.100 dev ens18 10.20.1.0/24 dev ens18 proto kernel scope link src 10.20.1.66
Всё получилось. Эта настройка будет действовать до перезагрузки. Чтобы ее сохранить, либо меняйте конфигурационный файл /etc/network/interfaces, либо, при необходимости, придумывайте что-то ещё.
Как указать DNS сервер
Остался последний из основных сетевых параметров – dns сервер. С ним в Debian и Ubuntu есть определенная путаница. Традиционно в ОС на базе ядра Linux для установки dns серверов используется файл /etc/resolv.conf. Но в какой-то момент в этих дистрибутивах появилась программа resolvconf, которая стала управлять настройками dns в системе. В итоге, файл resolv.conf постоянно перезаписывается этой программой. Нужна она в первую очередь для систем, где dns сервера постоянно меняются. Она следит за их изменением и корректно передает информацию об изменении программам, для которых это важно. Я лично не знаю таких программ и мне не приходилось сталкиваться с ситуацией, когда это было необходимо. Если я не ошибаюсь, то в минимальной конфигурации Debian программа resolvconf не устанавливается, а вот в Ubuntu она стоит. Проверить наличие программы очень просто:
# dpkg -l | grep resolvconf
Если в выводе пусто, значит ее нет. Тогда все очень просто. Для того, чтобы указать dns сервер, достаточно его записать в файл /etc/resolv.conf в следующем виде:
# mcedit /etc/resolv.conf
nameserver 10.20.1.1 nameserver 77.88.8.1 nameserver 8.8.8.8 nameserver 1.1.1.1
10.20.1.1 | локальный dns сервер |
77.88.8.1 | публичный сервер Яндекса |
8.8.8.8 | публичный сервер Google |
1.1.1.1 | публичный сервер Cloudflare |
Я на всякий случай указал локальный сервер и 3 внешних. Если у вас стоит resolvconf, то в случае ненадобности, удалите его командой:
# apt-get remove resolvconf
После этого сервер надо перезагрузить и удалить сломавшуюся символьную ссылку /etc/resolv.conf, а вместо нее создать файл с нужным содержанием, которое я привел выше. Если же вам по какой-то причине необходима указанная выше программа, она у вас стоит и вы не хотите ее удалять, то адрес dns сервера необходимо указать в файле /etc/network/interfaces, добавив к параметрам интерфейса еще один:
dns-nameservers 10.20.1.1 77.88.8.1 8.8.8.8 1.1.1.1
Этот параметр нужно установить сразу после указания шлюза gateway. Несколько адресов разделяются пробелом.
Изменить hostname (имя хоста)
Во время установки Debian вы указывали имя хоста. Посмотреть его текущее значение можно в консоли:
# hostname debian
Это значение записано в файле /etc/hostname. Есть 2 способа изменить hostname в debian:
- Простой и быстрый с помощью консольной команды. Результат работает только до перезагрузки компьютера. Потом вернется старое имя.
- С помощью изменения конфигурационного файла результат сохраняется и после перезагрузки. Чтобы сразу применить изменение, потребуется выполнить системный скрипт.
Для первого способа достаточно в консоли ввести команду:
# hostname debian12
Теперь проверим, что получилось:
# hostname debian12
Имя хоста изменилось, но в файле /etc/hostname по-прежнему указано прошлое значение. После перезагрузки hostname снова примет старое значение. Чтобы сделать постоянное изменение, необходимо ввести новое значение в файл вручную:
# mcedit /etc/hostname debian12
Изменение вступит в силу после перезагрузки. Если воспользоваться командой:
# hostnamectl set-hostname debian12
то изменения применятся сразу же. Этот способ более правильный, рекомендую использовать именно его. Теперь проверьте текущее значение имени хоста. Оно изменится на то, что вы указали в команде.
2 и более IP на одном интерфейсе
Иногда возникают ситуации, когда необходимо назначить несколько ip на одном интерфейсе. Сделать это очень просто. В самом начале я показал, как быстро через консоль в Debian можно назначить несколько ip c помощью dhclient, когда уже указан статический адрес. Теперь сделаем так, чтобы эти настройки сохранялись после перезагрузки. Для этого редактируем наш любимый и ненаглядный /etc/network/interfaces:
# mcedit /etc/network/interfaces
source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto ens18 iface ens18 inet dhcp auto ens18:1 iface ens18:1 inet static address 10.20.1.66 netmask 255.255.255.0
С такими настройками я получу 2 ip адреса на сетевом интерфейсе:
- Первый от dhcp сервера.
- Второй адрес на этой же сетевой карте будет указан статически.
Вы таким образом можете добавить сколько вам необходимо адресов, используя различные параметры.
Как быстро узнать ip адрес сервера в Debian
Часто возникает вопрос, как в Debian быстро узнать или проверить ip адреса, назначенные серверу. Выше я уже приводил пример простой команды, которая показывает все сетевые параметры интерфейса. Сейчас рассмотрим несколько вариантов, которые наглядно покажут только ip адреса, без лишней информации. Для начала воспользуемся уже известной командой ip, немного подрезав ее вывод:
# ip a | grep inet | awk '{print $2}'
Вы узнаете все ip адреса сервера, в том числе и ipv6. То же самое, только без ipv6 можно увидеть другой командой:
# ifconfig | grep 'inet '
Если получите ошибку:
-bash: ifconfig: command not found
Значит у вас не установлен пакет net-tools. Установить его можно следующей командой:
# apt install net-tools
Если совсем заморочиться и обрезать все лишнее в выводе команды ifconfig, то можно вывести только список ip адресов:
# ifconfig | grep 'inet ' | awk '{ print $2}'
Можно убрать локальный интерфейс, чтобы глаза не мозолил, тогда вообще все наглядно:
# ifconfig | grep 'inet ' | awk '{ print $2}' | grep -v 127.0.0.1
То же самое для ip:
# ip a | grep 'inet ' | awk '{ print $2}' | grep -v 127.0.0.1
Думаю, этих вариантов достаточно, чтобы проверить все ip адреса, отрезав лишнее.
Static routes (статические маршруты)
Следующим важным элементом настройки сети является управление статическими маршрутами (static routes): добавление (route add) и удаление (route del). Это часто бывает нужно, когда на шлюзе настроены VPN соединения. К примеру, запросы в одну подсеть отправляем через один VPN интерфейс, в другую подсесть – через другой. Какие-то VPN сервисы умеют сами управлять своими статическими маршрутами, какие-то нет. Тогда это нужно сделать вручную.
Вновь воспользуемся консольной командой ip. Для того, чтобы добавить маршрут в Debian, достаточно ввести в консоли:
# ip route add 192.168.13.0/24 via 10.20.1.100
192.168.13.0 | адрес подсети, для которой создаём отдельный маршрут в обход шлюза по умолчанию |
/24 | маска подсети |
10.20.1.100 | адрес шлюза, который будет роутить трафик в указанную подсеть |
Проверяем таблицу маршрутов:
# ip r
Чтобы удалить маршрут, выполняем команду:
# ip route delete 192.168.13.0/24
После перезагрузки все маршруты, добавленные таким способом, исчезнут. Чтобы статический маршрут в Debian сохранялся после перезагрузки, опять редактируем interfaces, добавляя в описание того интерфейса, к которому будут относиться маршруты, следующие строки:
post-up route add -net 192.168.13.0 netmask 255.255.255.0 gw 10.20.1.100 post-up route add -net 192.168.15.0 netmask 255.255.255.0 gw 10.20.1.100 pre-down route del -net 192.168.13.0 netmask 255.255.255.0 gw 10.20.1.100 pre-down route del -net 192.168.15.0 netmask 255.255.255.0 gw 10.20.1.100
Мы добавили 2 статических маршрута. Перезагружаемся и проверяем.
Мой конфиг целиком стал выглядеть вот так:
source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto ens18 iface ens18 inet dhcp post-up route add -net 192.168.13.0 netmask 255.255.255.0 gw 10.20.1.100 post-up route add -net 192.168.15.0 netmask 255.255.255.0 gw 10.20.1.100 pre-down route del -net 192.168.13.0 netmask 255.255.255.0 gw 10.20.1.100 pre-down route del -net 192.168.15.0 netmask 255.255.255.0 gw 10.20.1.100 auto ens18:1 iface ens18:1 inet static address 10.20.1.66 netmask 255.255.255.0
С постоянными статическими маршрутами в Debian разобрались, ничего сложного. Идём дальше.
Как выполнить перезапуск сети
Если есть возможность перезагрузить сервер, чтобы проверить новые сетевые настройки, лучше это сделать. Это избавит вас от сюрпризов, которые могут возникнуть, если вы отложите перезагрузку и где-то ошибётесь. Не всегда это обязательно делать. Иногда достаточно просто перечитать сетевую конфигурацию. Для перезапуска сети в Debian можно воспользоваться командой:
# systemctl restart networking
или
# service networking restart
Они выполняются не мгновенно, обычно несколько секунд.
Несмотря на то, что в большинстве современных дистрибутивов на базе Linux внедрена система инициализации systemd, в директории /etc/init.d/ для совместимости остались рудименты от старой системы SysVinit. Выполнить перезагрузку сети можно с их помощью:
# /etc/init.d/networking restart [ ok ] Restarting networking (via systemctl): networking.service.
Команда делает то же самое, но есть некая обратная связь о том, как всё прошло. Если у вас всё в порядке на сервере и нет сетевых ошибок, то рестарт сети можно спокойно делать удаленно по ssh. Вас даже не отключит от текущей сессии. Но на всякий случай я не рекомендую это делать, если у вас нет доступа к консоли сервера. Всякое может случиться, я бы не рисковал лишний раз. Настройку сети, как и файрвола, лучше не делать, не имея прямого доступа к консоли сервера.
Настройка vlan в Debian
Для настройки vlan в Debian первым делом необходимо установить пакет vlan:
# apt install vlan
Теперь нужно разобраться с необходимым модулем ядра для vlan – 8021q. Проверим, загружен ли он в системе:
# lsmod | grep 8021q
Если в выводе пусто, а по умолчанию там будет пусто, модуль не загружен. Загрузим его и проверим:
# modprobe 8021q # lsmod | grep 8021q 8021q 40960 0 garp 16384 1 8021q mrp 20480 1 8021q
Всё в порядке, vlan модуль загрузился. Добавим его в автозагрузку:
# echo 8021q >> /etc/modules
Теперь этот модуль будет загружаться при старте сервера. Создадим виртуальный интерфейс с vlan с id 1500:
# ip link add link ens18 name ens18.1500 type vlan id 1500
Назначим адрес новому интерфейсу и запустим его:
# ip addr add 10.20.1.150/24 dev ens18.1500 # ip link set ens18.1500 up
Можно в одну команду, с помощью ifconfig:
# ifconfig ens18.1500 10.20.1.150 netmask 255.255.255.0 up
Смотрим, что получилось:
Мы выполнили настройку vlan интерфейса в Debian. Теперь сделаем так, чтобы после перезагрузки настройки сохранились. Для этого добавляем свойства vlan интерфейса в файл конфигурации сети, оставляя и не трогая то, что там уже есть:
# mcedit /etc/network/interfaces
auto ens18.1500 iface ens18.1500 inet static address 10.20.1.150 netmask 255.255.255.0 vlan_raw_device ens18
Перезагрузите сервер и проверьте, что получилось. Можно выполнить перезапуск сети, но если вы до этого все вручную через консоль сделали, то не поймете, сработали настройки из файла или нет. Таким образом очень просто и быстро настроить vlan на сервере с Debian.
Как отключить ipv6 в Debian
Пока еще эта версия протокола ip не получила широкого распространения в России. Если он вам специально не нужен, ipv6 можно отключить. Прежде чем отключать, необходимо узнать, какие сервисы в настоящее время его используют и перенастроить их, отключив у них ipv6. Если этого не сделать, то в работе этих программ могут возникнуть ошибки. Скорее всего некритичные, но всё равно, сделаем аккуратно и правильно. Сначала проверим, что у нас работает на ipv6:
# ss -tulnp | grep ::
На целевом сервере с Debian программы ssh, postfix и rpcbind используют ipv6. Отключим это. Начнем с ssh. Открываем файл /etc/ssh/sshd_config и раскомментируем параметр ListenAddress:
# mcedit /etc/ssh/sshd_config
ListenAddress 0.0.0.0
Перезапускаем ssh:
# systemctl restart sshd
Сделаем то же самое с postfix. Открываем файл конфигурации /etc/postfix/main.cf и меняем параметр:
# mcedit /etc/postfix/main.cf
inet_protocols = ipv4
Перезапускаем postfix:
# systemctl restart postfix
Отключаем ipv6 в rpcbind. Для этого нужно внести изменения в системный systemd unit:
# systemctl edit rpcbind.socket
Добавляем между сегментами с комментариями:
[Socket] ListenStream= ListenDatagram= ListenStream=0.0.0.0:111 ListenDatagram=0.0.0.0:111
Перечитываем настройки юнита и перезапускаем службу rpcbind:
# systemctl daemon-reload # systemctl restart rpcbind.socket
Проверяем, что у нас получилось:
# ss -tulnp | grep ::
В выводе пусто. Мы изменили настройки всех служб, которые использовали ipv6, отключив его.
Теперь полностью отключаем ipv6 в Debian на уровне системы:
# mcedit /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
Добавьте эти строки в любое место конфига, например, в самый конец. Отключим ipv6 на уровне GRUB. Открываем конфиг /etc/default/grub и в параметр GRUB_CMDLINE_LINUX нужно добавить значение ipv6.disable=1. Если там уже указаны другие значения, то перечислены они должны быть через пробел. Примерно так:
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet ipv6.disable=1"
После этого нужно обновить загрузчик:
# dpkg-reconfigure grub-pc
После запуска команды все параметры, которые предложит оболочка, можно оставить по умолчанию, ничего не меняя. Когда обновление загрузчика закончится, надо перезагрузить систему.
Проверяем свойства сетевых интерфейсов командами ip или ifconfig. Адресов ipv6 в их настройках быть не должно, мы полностью отключили этот протокол. Более подробно об отключении ipv6 в различных приложениях читайте в отдельной статье – как отключить ipv6.
Работа с файлом hosts
В папке /etc любого linux дистрибутива, в том числе Debian, есть файл hosts. Разберемся немного, что это за файл и для чего нужен. По умолчанию он выглядит следующим образом:
# cat /etc/hosts
Представим, что у нас в локальной сети есть некий сервер с именем server и ip 10.20.1.2. Мы хотим к нему обращаться по имени. Тогда добавляем запись в файл hosts в самый конец новой строкой:
10.20.1.2 server
Теперь мы можем обращаться к серверу просто по имени server.
Локальный сервер будет в первую очередь смотреть информацию в файле hosts, только потом в настроенном dns сервере. Например, если вы добавите в файл строку:
127.0.0.1 ya.ru
То обращаясь к адресу ya.ru будете попадать на localhost:
Эта функциональность может быть полезна для публикации в локальной сети каких-то внутренних сервисов, к которым доступ будет только в рамках ваших серверов. Если их будет немного, вам нет необходимости использовать dns сервер, с файлом hosts настройка делается гораздо быстрее. Например, с его помощью можно связать именами 3 сервера небольшого локального кластера. Так же правка файла hosts актуальна, если вы используете локальную копию сервиса webpagetest для тестирования скорости работы сайта на разных хостингах. Вы просто меняете ip адреса для домена и делаете тесты. Так можно наглядно и однозначно сравнивать быстродействие разных хостингов. Подробно об этом можно почитать в статье – ускорение сайта и аудит.
Настройка сетевой карты
Иногда возникают ситуации, когда необходимо настроить или изменить настройки сетевой карты. Сразу отмечу, что настраивать сетевую карту можно только на реальном железе. На виртуальном, скорее всего, ни одна из предложенных дальше команд не приведет к какому-нибудь результату. У виртуальных сетевых адаптеров просто нет настроек. Для начала посмотрим, какие сетевые карты есть на сервере:
# lspci | grep Eth 05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
В моем случае это единственная сетевая карта фирмы Realtek. Теперь установим утилиту ethtool для настройки сетевой карты:
# apt install ethtool
Посмотрим информацию о сетевой карте:
# ethtool enp5s0
Указана текущая скорость, на которой работает карточка. Ее можно сменить в случае необходимости:
# ethtool -s enp5s0 speed 100 duplex full
Этой командой можно изменить скорость сетевой карточки до 100Mb/s в случае, если там стояла другая скорость. Смотрим, что получилось:
# ethtool enp5s0 | grep Speed Speed: 100Mb/s
Показал просто для примера, вряд ли кому-то понадобится уменьшать скорость. Чаще нужно выполнить обратное преобразование. У меня была ситуация, когда сетевая карта упорно не хотела работать на скорость 1Gb/s, хотя поддерживала такую работу, и свитч был гигабитный. Долго бился и пробовал различные утилиты для изменения скорости. Оказалось, что патч корд был 4-х жильный из комплекта какого-то роутера. Им воспользовались для подключения и даже не обратили внимание на то, что он не поддерживает работу по гигабиту. У утилиты ethtool много параметров, с помощью которых можно настроить сетевую карту. Пример этих параметров можно посмотреть на сайте redhat.
Работа с утилитой ifconfig
В завершении сетевых настроек хотел немного поговорить об ifconfig. Ранее я упомянул, что более современным средством для настройки сети является утилита ip. В современных релизах Debian и CentOS ifconfig вообще исключили из базовой установки, ее приходится устанавливать отдельно. IP объединяет в себе две функциональности – настройка сетевых интерфейсов и маршрутизации. То есть по сути она заменяет ifconfig + route. В ней реализована функциональность обоих программ. Сам я начинал с ifconfig, так как она есть не только в Linux, но и в Freebsd и других системах Unix. Удобно использовать одно и то же средство во всех дистрибутивах. Но в последние несколько лет переучился на ip, так как надо идти в ногу со временем. Тенденция такова, что ip заменила ifconfig во всех современных дистрибутивах на базе Linux. Что касается удобства, лично я ничего не могу сказать, мне совершенно всё равно, какую команду использовать:
ip addr add 192.168.1.35/24 dev eth0
или
ifconfig eth0 192.168.1.35 netmask 255.255.255.0
Делают они одно и то же. Остальные команды по конфигурированию сетевых интерфейсов тоже не сильно отличаются, просто пишутся немного по-разному. Вот пример работы с маршрутами:
ip route add 192.168.100.0/24 dev eth2
или
route add -net 192.168.100.0/24 dev eth2
В случае с ip мы работаем с одной командой, а не двумя. Чем пользоваться вам, выбирайте сами. Если не привыкли к чему-то конкретному, рекомендую использовать ip. Мне было бы любопытно узнать, кто, что использует. Оставьте свой комментарий на эту тему. На этом я завершаю свой материал по теме настройки сети в Debian. Я рассмотрел все наиболее значимые и необходимые параметры, с которыми приходится сталкиваться во время конфигурирования сервера.