Настройка и управление сетевой подсистемой Linux (пакет iproute2)

14 декабря, 2011 Рубрики: Linux, основы Linux, Сети

настройка сети в linux ip routeДоброго времени, уважаемые гости и читатели Блога любителя экспериментов. Сегодня хочу затронуть такой вопрос, как управление сетевой подсистемой Linux с помощью программ из пакета iproute2. Для понимания того, о чем здесь пойдет речь обязательно необходимо ознакомиться со статьями Основные понятия сетей и Настройка сети в Linux, диагностика и мониторинг. Начну с небольшой предыстории…

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

В старых версиях ядер Linux (2.4 и ниже) существовали инструменты настройки сети из пакета net-tools, которые включали в себя такие команды, как ifconfig – для управления сетевыми интерфейсами, route – управление таблицей маршрутизации, arp – управление таблицей разрешения имен, netstat – сетевая статистика, mii-tool – статус сетевых устройств и др. В дистрибутивах, использующих современные ядра внедряется пакет iproute2 (иногда называется iproute) и net-tools оставлен, как некоторые утверждают, для совместимости. В пакет iproute входят 3 основных утилиты: ip – команда для просмотра параметров и настройки сетевых интерфейсов, IP-адресов, таблиц маршрутизации, правил маршрутизации, таблиц ARP преобразования, IP-туннелей и т.д. tc (traffic control) – команда для просмотра и настройки параметров управления трафиком (классификация трафика, дисциплины управления очереди для различных классов трафика), ss – команда для просмотра текущих соединений и открытых портов (аналог netstat).

Управление сетевыми интерфейсами в Linux

Сетевые интерфейсы в линух представляют собой физические устройства, которые взаимодействуют с ядром, а деле и с пользователем через соответствующий драйвер (например Ethernet-драйвера именуют интерфейсы как eth0, eth1 …). Чтобы сетевой интерфейс функционировал, на нем нужно задать настройки какого-либо протокола сетевого уровня (IP, IPX или др.). В современных сетях используется протокол IP. Для управления сетью используется команда ip. Давайте рассмотрим общие параметры команды ip, данные параметры отлично иллюстрирует википедия:

команда ip из iprouteпротоколы модели OSI

Настройка параметров сетевых интерфейсов

Давайте разберем некоторые аспекты данных команд. Начнем с аналога команды ifconfig – команда ip с параметром link управляет свойствами сетевого интерфейса: 

[proxy ~]# ip link show
 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
	link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
	qlen 1000 link/ether 00:1d:72:01:ab:93 brd ff:ff:ff:ff:ff:ff
 3: irda0: <NOARP> mtu 2048 qdisc noop state DOWN qlen 8
	link/irda 00:00:00:00 brd ff:ff:ff:ff
 4: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
	link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
 5: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UNKNOWN qlen 3
	link/ppp

Вывод данной команды содержит пронумерованный список интерфейсов, присутствующих в системе. Информация об интерфейсе содержит две строки: в первой указывается имя интерфейса (lo, eth0 и др.), установленные флаги состояния (в фигурных скобках < и >), MTU (Maximum Transmission Unit, максимально допустимый размер фрейма в байтах), тип и размер очереди фреймов; во второй строке — тип соединения, MAC-адрес, широковещательный адрес и т. п.

Некоторые флаги состояния:

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

Можно также вывести информацию о выбранном интерфейсе, задав его имя в параметре dev:

[proxy ~]# ip link show dev eth0

или просто:

[proxy ~]# ip link show eth0

Команда ip link также позволяет изменять свойства сетевого интерфейса. Для этого используется параметр set:

iproute:~# ip link show dev eth2
3: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 08:00:27:c9:00:f0 brd ff:ff:ff:ff:ff:ff
iproute:~# # установка значения MTU
iproute:~# ip link set mtu 1400 eth2
iproute:~# # установка MAC адреса
iproute:~# ip link set address 00:11:11:12:FE:09 eth2
iproute:~# # "поднятие" интерфейса
iproute:~# ip link set up eth2
iproute:~# ip link show dev eth2
3: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:11:11:12:fe:09 brd ff:ff:ff:ff:ff:ff
iproute:~# # отключение интерфейса
iproute:~# ip link set down eth2
iproute:~# ip link show dev eth2
3: eth2: <BROADCAST,MULTICAST> mtu 1400 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:11:11:12:fe:09 brd ff:ff:ff:ff:ff:ff

Указанные тут команды являются аналогами “классических” команд из пакета  net-tools:

# ifconfig eth2 mtu 1400
# ifconfig eth2 hw ether 00:11:12:13:14:15
# ifconfig eth2 up
# ifconfig eth2 down

Управление физическими параметрами интерфейса

Физические параметры (скорость, технология Ethernet, тип дуплекса) сетевого подключения зависят от используемого оборудования и обычно настраиваются автоматически при подключении компьютера к сети. Но иногда из- за несогласованной работы оборудования и драйверов адаптера параметры необходимо выставить вручную, используя утилиту ethtool. Данная утилита включена в стандартные репозитории Debian и устанавливается из пакетного менеджера. Пример использования утилиты:

iproute:~# ethtool eth2
Settings for eth2:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: umbg
        Wake-on: d
        Current message level: 0x00000007 (7)
        Link detected: no
iproute:~# ethtool -i eth2
driver: e1000
version: 7.3.21-k5-NAPI
firmware-version: N/A
bus-info: 0000:00:08.0

Настройка  параметров сетевых протоколов на физическом интерфейсе

Напомню, что протокол IP является маршрутизируемым протоколом без установления соединения. IP адрес представляет собой комбинацию номера сети и номера узла в данной сети. Количество бит, используемых для номера сети определяется по классу адреса или задается маской подсети. Итого, как я уже говорил, чтобы сетевой интерфейс начал функционировать в соответствии со своим прямым назначением, необходимо на нем задать параметры соответствующего сетевого протокола. Для протокола IP минимально необходимые параметры – это IP адрес и маска подсети. Для настройки параметров протокола IP на сетевом интерфейсе с помощью командной строки необходимо использовать команду ip address (она же ip addr).

user@nout:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 90:e6:ba:2f:c1:d4 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:25:d3:3f:3e:87 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.148/24 brd 192.168.1.255 scope global wlan0
    inet6 fe80::225:d3ff:fe3f:3e87/64 scope link
       valid_lft forever preferred_lft forever

Параметр show отображает текущую конфигурацию. Каждая запись о сетевом адресе может содержать информацию о типе адреса (inet — адрес IPv4, inet6 — IPv6 и т. д.), непосредственно адрес, маску подсети (количество сетевых бит), широковещательный адрес данной сети, область видимости (scope global — действителен везде, scope link — только для данного устройства, scope host — для данного узла, доступные области приведены в /etc/iproute2/rt_scopes) и имя логического интерфейса.

user@nout:~$ # добавление адреса выполняется параметром add
user@nout:~$ # при этом необходимо задать широковещательный адреc
user@nout:~$ # (параметр brd + задает автоматический рассчет широковещательного адреса)
user@nout:~$ # данная операция требует прав суперпользователя
user@nout:~$ ip address add 192.168.1.3/25 brd + dev eth0
RTNETLINK answers: Operation not permitted
user@nout:~$ sudo -s
[sudo] password for user:
nout:~# ip address add 192.168.1.3/25 brd + dev eth0
nout:~# ip address show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 90:e6:ba:2f:c1:d4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/25 brd 192.168.1.127 scope global eth0
nout:~# # удаление адреса производится параметром del
nout:~# ip address del 192.168.1.3/25 dev eth0
nout:~# ip address show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 90:e6:ba:2f:c1:d4 brd ff:ff:ff:ff:ff:ff

C помощью ip можно задать несколько IP адресов на одном интерфейсе:

nout:~# ip address add 192.168.1.11/25 brd + dev eth0
nout:~# ip address add 192.168.1.12/25 brd + dev eth0
nout:~# ip address show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 90:e6:ba:2f:c1:d4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.11/25 brd 192.168.1.127 scope global eth0
    inet 192.168.1.12/25 brd 192.168.1.127 scope global secondary eth0
nout:~# ip address del 192.168.1.11/25 dev eth0
nout:~# ip address show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 90:e6:ba:2f:c1:d4 brd ff:ff:ff:ff:ff:ff
nout:~# ip address add 192.168.1.12/25 brd + dev eth0
nout:~# ip address add 192.168.1.212/25 brd + dev eth0
nout:~# ip address show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 90:e6:ba:2f:c1:d4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.12/25 brd 192.168.1.127 scope global eth0
    inet 192.168.1.212/25 brd 192.168.1.255 scope global eth0

При добавлении адреса из той же сети, что и существующий, новый адрес становится дополнительным к существующему (secondary), и если удалить основной адрес, то будет удален и дополнительный. При этом, команда ifconfig не умеет отображать второй Ip:

nout:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 90:e6:ba:2f:c1:d4
          inet addr:192.168.1.12  Bcast:192.168.1.127  Mask:255.255.255.128
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:1
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:43

Возможно создать ifconfig – совместимую реализацию способа использования нескольких IP-адресов на одном сетевом интерфейсе. Для этого следует в команде ip addr add использовать параметр label:

nout:~# ip address add 192.168.12.212/25 brd + dev eth0 label eth0:newdev
nout:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 90:e6:ba:2f:c1:d4
          inet addr:192.168.1.12  Bcast:192.168.1.127  Mask:255.255.255.128
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:1
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:43 

eth0:newdev Link encap:Ethernet  HWaddr 90:e6:ba:2f:c1:d4
          inet addr:192.168.12.212  Bcast:192.168.12.255  Mask:255.255.255.128
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          Interrupt:43
nout:~# ip address show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 90:e6:ba:2f:c1:d4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.12/25 brd 192.168.1.127 scope global eth0
    inet 192.168.1.212/25 brd 192.168.1.255 scope global eth0
    inet 192.168.12.212/25 brd 192.168.12.255 scope global eth0:newdev
nout:~# ip address flush dev eth0
nout:~# ip address show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 90:e6:ba:2f:c1:d4 brd ff:ff:ff:ff:ff:ff

Как видно, параметр flush очищает все установленные на интерфейсе IP адреса.

Управление ARP-таблицей

В локальной сети текущий хост для определения физических адресов (MAC-адресов) по IP-адресам удаленных узлов использует протокол ARP и локальный ARP -кэш (ARP-таблицу). Управление ARP-таблицей осуществляется командой ip neigh. Каждый узел локальной сети (в том числе и хабы/свичи) содержат свою локальную ARP-таблицу (кэш), которая устанавливает соответствие между IP и MAC-адресами узлов подсетей, в которые входит данную сеть. В ARP-таблице имеются два вида записей:

  • Динамические записи, которые периодически обновляются с использованием протокола ARP (если запись “устаревает”, то она удаляется).
  • Статические записи, которые создаются пользователем с помощью соответствующих команд и существуют до тех пор, пока текущий узел не будет выключен/перезагружен.
nout:~# # отображение содержимого таблицы ARP
nout:~# ip neigh show
192.168.1.1 dev wlan0 lladdr bc:ae:c5:c3:c9:31 REACHABLE
nout:~# # добавление статической записи в ARP таблицу
nout:~# ip neigh add 192.168.1.100 lladdr 00:00:00:11:00:22 dev wlan0
nout:~# ip neigh show
192.168.1.100 dev wlan0 lladdr 00:00:00:11:00:22 PERMANENT
192.168.1.1 dev wlan0 lladdr bc:ae:c5:c3:c9:31 REACHABLE
nout:~# # удаление записи
nout:~# ip neigh del 192.168.1.100 dev wlan0
nout:~# ip neigh show
192.168.1.1 dev wlan0 lladdr bc:ae:c5:c3:c9:31 REACHABLE

Управление маршрутизацией с помощью iproute2

Из статьи Основные понятия сетей мы знаем, что если текущему узлу необходимо куда-либо отправить IP пакет, то сетевая подсистема ядра использует таблицу маршрутизации. Если пакет отправляется в ту же подсеть, которой принадлежит хост, то с помощью ARP определяется физический адрес хоста назначения и пакет отправляется напрямую хосту назначения. Если адрес назначения принадлежит не “локальной сети”, то пакет отправляется на шлюз (читай – направляется по маршруту), который указан в таблице маршрутизации для сети, которой принадлежит хост назначения. При этом, выбирается та сеть, в которой адрес сети наиболее заполнен (читай – меньше хостов в подсети). Если для хоста назначения не найден маршрут, то пакет отправляется на “шлюз по умолчанию”. Все шлюзы должны находиться в той же подсети, что и исходный хост.

Допустим, в локальной сети есть некоторый хост с адресом 192.168.1.100/24, а так же есть хост 192.168.1.1, который является шлюзом в глобальную сеть, а так же есть хост с адресом 192.168.1.2, который является связующим маршрутизатором с сетью 192.168.24.0/24 (то есть имеет еще один интерфейс  в сеть 192.168.24.0/24 и на нем включен форвардинг). Для того, чтобы хост с адресом 192.168.1.100/24 имел доступ в сеть Интернет и к локальной сети 192.168.24.0/24, необходимо внести в таблицу маршрутизации соответствующие записи, например с помощью команды ip route add:

# ip route add default via 192.168.1.1
# ip route add 192.168.24.0/24 via 192.168.1.2
# ip route show
192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.100
192.168.24.0/24 via 192.168.1.2 dev eth1
default via 192.168.1.1 dev eth

Первая команда добавляет маршрут по умолчанию (default) через узел 192.168.1.1 (параметр via ). Вторая команда устанавливает маршрут на сеть 192.168.24.0/24 через узел 192.168.1.2.

Для вывода на экран содержимого таблицы маршрутизации используется команда ip route show. В данном случае в таблице маршрутизации три записи: первая о том, что сеть 192.168.1.0/24 доступна непосредственно на интерфейсе eth1 (запись добавляется автоматически), и две записи, добавленные пользователем: альтернативный маршрут и маршрут по умолчанию.

Добавление постоянного статического маршрута при инициализации сети

О настройке сети через конфигурационные файлы я рассказывал в статье  Настройка сети в Linux, диагностика и мониторинг, в сегодняшней статье я немного дополню эту информацию. С помощью файла /etc/network/interfaces есть возможность задать постоянные маршрута при поднятии интерфейса и удаление маршрута при выключении интерфейса. Это делается с помощью параметра up и down соответственно. Нижеприведенная конфигурация позволяет задать маршрут до сети 192.168.100.0/24 через шлюз 192.168.1.1:

iface eth1 inet static
      address 192.168.1.100
      netmask 255.255.255.0
      up ip route add 192.168.100.0/24 via 192.168.1.1
      down ip route del 192.168.100.0/24
      gateway 192.168.1.3

Выводы

На этом, данную заметку заканчиваю. Подведу краткие итоги. Для управления физическими интерфейсами применяется команда ip link из пакета iproute. Для настройки свойств физического подключения (скорость, технология, тип дуплекса используется команда ethtool. Для того, чтобы хост мог взаимодействовать с другими узлами подсети в рамках локального сегмента (широковещательного домена) на нем должен быть установлен IP-адрес и определена маска подсети. Для управления IP-адресами в Linux можно использовать команду ip addr. В локальной сети данный узел для определения физических адресов(MAC) по IP – адресам других узлов использует протокол ARP и локальный ARP -кэш (таблица). Управление ARP -таблицей осуществляется командой ip neigh. Для взаимодействия с удаленными подсетями на данном узле необходимо определить шлюз по умолчанию или/и альтернативные шлюзы. Все шлюзы должны находиться в той же подсети, что и исходный узел. Управление таблицей маршрутизации на узле может осуществляться командой ip route. У параметров команд пакета iproute2 есть сокращенный синтаксис, например, ip link show eth0 можно записать как ip l sh eth0.

Что почитать

man ip
man interfaces
Linux Advanced Routing & Traffic Control HOWTO

С Уважением, Mc.Sim!




Теги: , , , , ,

23 комментария к “Настройка и управление сетевой подсистемой Linux (пакет iproute2)”

  1. greenfox82
    17 декабря, 2011 at 23:32
    1

    хотя с этой темой я знаком, но не плохо было освежить в памяти основы =) Спасибо! Теперь я постоянный читатель вашего блога =)

    • 17 декабря, 2011 at 23:50
      2

      Пожалуйста!
      Приходите еще, буду рад новым визитам!

  2. Илья
    3 февраля, 2012 at 04:15
    3

    Как вводная статья очень даже хорошо.

    Каждый раз как дело касается iproute негодую. Все слишком неочевидно, зачем команду вывода Arp таблицы называть ip neigh (от слова “соседи”, выходит, хрен догадаешься), да и вывод не такой наглядный как у команды arp (легко запомнить, очевидное название).

    Всему этому не хватает дополнения по ? в конце, как в Cisco IOS. Это бы значительно упростило работу с нею

    • 3 февраля, 2012 at 10:54
      4

      На 100500% согласен со всем вышесказанным :)

      • 3 февраля, 2012 at 10:55
        5

        хотябы не по вопросу, а по Tab Tab, как в Linux :)

        P.S. Хотя есть же великий help, например:
        [root@proxy ~]# ip help
        Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
        ip [ -force ] [-batch filename
        where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
        tunnel | maddr | mroute | monitor | xfrm }
        OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
        -f[amily] { inet | inet6 | ipx | dnet | link } |
        -o[neline] | -t[imestamp] }
        [root@proxy ~]# ip neigh help
        Usage: ip neigh { add | del | change | replace } { ADDR [ lladdr LLADDR ]
        [ nud { permanent | noarp | stale | reachable } ]
        | proxy ADDR } [ dev DEV ]
        ip neigh {show|flush} [ to PREFIX ] [ dev DEV ] [ nud STATE ]
        Но это же блин жудко неудобно :(

        • Илья
          2 марта, 2012 at 04:58
          6

          Ага, неудобно, привыкаем))
          А статья очень годная, уже не первый раз к ней обращаюсь когда что то сделать нужно.

  3. Григорий
    9 февраля, 2013 at 08:24
    7

    При создании vlan через файл /etc/netwok/interfaces и установки опции gvrp on, команда /etc/init.d/networking start выполняется без ошибок и все интерфейсы поднимаются, в том числе и vlan’ы. Но вот опция gvrp не включается. Если после этого исполнить команду ip link set dev VLANNAME type vlan gvrp on – опция включается.

    Есть соображения по этому поводу??

    • 18 февраля, 2013 at 00:41
      8

      А чего за ядро? Вроде Debian эту “экзотику” поддерживает с 2.6.32-5.
      Если ядро новее, то думаю, что стоит опцию gvrp on заменить на
      up /bin/ip link set dev VLANNAME type vlan gvrp on
      и будет все ок… Наверно ))
      Если честно, не нашел ни водном мануале опцию gvrp on. Думаю, что такой опции просто нет…

      • Григорий
        18 февраля, 2013 at 07:50
        9

        Ну да, так и сделал… работает корректно

  4. Дмитрий
    19 августа, 2014 at 23:48
    10

    Классная статья!

    Хотелось бы нечто подобное увидеть по tc и ss, а также по ip rule, ip tunnel, ip xfrm.

    Ждем продолжения =)

  5. Дмитрий
    19 августа, 2014 at 23:52
    11

    В дополнение к предыдущему комментарию.

    Подскажите, не могу найти, как сохранить сделанные изменения через iproute, чтобы они не потерялись после перезагрузки?

    • 13 октября, 2014 at 21:04
      12

      Чтобы изменения сохранились, необходимо добавить команду iproute с соответствующими параметрами в файлы инициализации сети вашей системы. (например, в Debian – /etc/network/interfaces)

  6. Stas
    1 сентября, 2014 at 14:11
    13

    Допустим, в локальной сети есть некоторый хост с адресом 192.168.1.100/24, а так же есть хост 192.168.1.1, который является шлюзом в глобальную сеть, а так же есть хост с адресом 192.168.1.2, который является связующим маршрутизатором с сетью 192.168.24.0/24. Для того, чтобы хост с адресом 192.168.1.100/24 имел доступ в сеть Интернет и к локальной сети 192.168.24.0/24, необходимо внести в таблицу маршрутизации соответствующие записи, например с помощью команды ip route add:

    тут имеется ввиду что у 192.168.1.2 есть еще сетевой интерфейс который смотрит в сеть 192.168.24.0/24? Да?

    • 17 декабря, 2014 at 20:28
      14

      Все верно.

  7. Сергей Б
    3 декабря, 2014 at 12:41
    15

    Моё видение опции neigh в iproute2.
    В команде ip используется neigh для упрощения зоопарка терминов ipv4, ipv6 и использования единой терминологии в команде.
    Так как в ipv6 ARP не применим, а есть NDP (Neighbor Discovery Protocol) основанный на ICMPv6, то чтобы не выдумывать ещё названия сделали просто – neigh.

    P.S. А так да – cisco, juniper CLI оно конечно удобно))

    • 18 декабря, 2014 at 15:26
      16

      да, есть в ваших словах определенная логика.
      Спасибо.

  8. Шурик
    19 марта, 2015 at 21:28
    17

    Спасибо за статью и за весь блог, очень подробно и понятно, кроме одного момента. В самом конце в interfaces применены и up и down так и должно быть? Не получиться так что они сначала пропишут маршрут а затем следом уберут? Или это только как флаги, типо если eth1 поднят то прописывается маршрут, а стоит его выключить, он удаляется?

    • 7 июня, 2015 at 20:40
      18

      да, все верно. Это как указатели на действие при поднятии и выключении интерфейса.

  9. Игорь
    13 декабря, 2015 at 04:10
    19

    Хорошая статья, тут описывается как назначить ip интерфейсу, а как быть если надо по dhcp получить адрес? или это можно сделать только так dhclient -v eth0?

    • 3 августа, 2016 at 22:03
      20

      Вы сами спросили и сами ответили )

  10. Anton
    18 августа, 2018 at 10:03
    21

    Привет, кто подскажет
    В локальной сети есть компьютер (Debian) c usb wifi адаптерами подключенные к разным wifi сетям wlan0, wlan1 и т.д. под разными внешними ip.

    Например, если этот комп(Debian) в eth0 имеет ip 192.168.0.10 можно ли как то получать доступ в интерент через него по схеме:

    мой комп(192.168.0.2) -> eth0 192.168.0.10:3128 -> wlan0 (внешний ip 123.123.123.1)

    мой комп(192.168.0.2) -> eth0 192.168.0.10:3129 -> wlan1 (внешний ip 123.123.123.2)

    Я хочу использовать Debian в локалке, как прокси для смены внешнего ip, для парсинга сатйов.

    Установил прокси-сервер Squid на Debian (192.168.0.10), выход в интерент с внешним ip (eth0) происходит. Каким инструментом мне теперь завтсваить выходить в интеренет через этот squid через wlan0 хотя бы? Утилита ip мне поможет в этом?

    • 10 февраля, 2019 at 22:56
      22

      Если нужно только веб-трафик перенаправлять, то вы в правильном направлении идете.
      В squid нужно разрешить запуск на 2х портах (как у вас указано 3128 и 3129).
      Создать 2 acl, которые будут обрабатывать запросы по этим портам и задать исходящий интерфейс для этого acl с помощью параметра tcp_outgoing_address ipaddr [[!]aclname]

    • 10 февраля, 2019 at 22:57
      23

      Про squid я писал в соответствующих статьях: https://www.k-max.name/category/linux/squid/.

Написать комментарий