Skip to content


О режимах bonding-а в linux

Дано:
- есть сервер srv00 в одном датацентре, подключен к сети на скорости 1Gbit/sec
- есть сервер srv01 в другом датацентре, подключен к сети на скорости 10Gbit/sec, используется bonding.
Проблема: аномально низкая скорость:

[avz@srv00 ~]$ iperf3 -c srv01.my.zone
Connecting to host srv01.my.zone, port 5201
[  4] local xx.xxx.xx.xx port 27108 connected to yyy.yy.yy.yyy port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  5.21 MBytes  43.7 Mbits/sec   40    130 KBytes
[  4]   1.00-2.00   sec  2.45 MBytes  20.6 Mbits/sec    5   79.8 KBytes
[  4]   2.00-3.00   sec  2.02 MBytes  17.0 Mbits/sec    3   52.8 KBytes
[  4]   3.00-4.00   sec  1.96 MBytes  16.4 Mbits/sec    8   51.3 KBytes
[  4]   4.00-5.00   sec  1.96 MBytes  16.4 Mbits/sec    0   68.4 KBytes
[  4]   5.00-6.00   sec  1.53 MBytes  12.8 Mbits/sec    1   65.6 KBytes
[  4]   6.00-7.00   sec  1.96 MBytes  16.4 Mbits/sec    3   67.0 KBytes
[  4]   7.00-8.00   sec  1.53 MBytes  12.8 Mbits/sec    2   47.1 KBytes
[  4]   8.00-9.00   sec  1.47 MBytes  12.3 Mbits/sec    3   51.3 KBytes
[  4]   9.00-10.00  sec  1004 KBytes  8.22 Mbits/sec   14   31.4 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  21.1 MBytes  17.7 Mbits/sec   79             sender
[  4]   0.00-10.00  sec  20.1 MBytes  16.9 Mbits/sec                  receiver

Поскольку при тестах с другим соседним для srv01 сервером (в той же стойке) проблем со скоростью обнаружено не было, сразу возник вопрос а чем же они отличаются. Самым бросающимся в глаза отличием было то, что у srv01 bonding есть, а соседнего (у которого всё хорошо со скоростью) – bonding-а нету.

Смотрим текущий режим:

[root@srv01 ]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
 
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 1   
Up Delay (ms): 0
Down Delay (ms): 0
 
Slave Interface: enp2s0f0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:01:02:a3:78:c0
Slave queue ID: 0
 
Slave Interface: enp2s0f1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:01:02:a3:78:c4
Slave queue ID: 0
 
[root@srv01 ~]# ethtool bond0 | grep Speed
        Speed: 20000Mb/s

В конфиге

[root@srv01 ]# grep BONDING /etc/sysconfig/network-scripts/ifcfg-Bond_connection_1
BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=balance-rr"
BONDING_MASTER="yes"

Начинаем экспериментировать, меняем режим с balance-rr на active-backup:

[root@srv01 ]# grep BONDING /etc/sysconfig/network-scripts/ifcfg-Bond_connection_1
BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=active-backup"
BONDING_MASTER="yes"

Рестартим сеть, смотрим:

[root@srv01 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: enp2s0f0
MII Status: up
MII Polling Interval (ms): 1
Up Delay (ms): 0
Down Delay (ms): 0
 
Slave Interface: enp2s0f0
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:01:02:a3:78:c0
Slave queue ID: 0
 
Slave Interface: enp2s0f1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:01:02:a3:78:c4
Slave queue ID: 0

Примечательно, что скорость по данным ethtool изменилась с 20-ти на 10Гбит/сек:

[root@srv01 ~]# ethtool bond0 | grep Speed
        Speed: 10000Mb/s

что и логично, поскольку в этом режиме всегда активен только один сетевой интерфейс, а второй – "на подхвате".

Тестируем скорость еще раз:

[avz@srv00 ~]$ iperf3 -c srv01.my.zone
Connecting to host srv01.my.zone, port 5201
[  4] local xx.xxx.xx.xx port 27108 connected to yyy.yy.yy.yyy port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  94.5 MBytes   793 Mbits/sec    0   4.94 MBytes       
[  4]   1.00-2.00   sec   114 MBytes   954 Mbits/sec    0   4.94 MBytes       
[  4]   2.00-3.00   sec   112 MBytes   944 Mbits/sec    0   4.94 MBytes       
[  4]   3.00-4.00   sec   110 MBytes   923 Mbits/sec    8   2.56 MBytes       
[  4]   4.00-5.00   sec  81.2 MBytes   682 Mbits/sec    0   2.71 MBytes       
[  4]   5.00-6.00   sec  86.2 MBytes   724 Mbits/sec    0   2.83 MBytes       
[  4]   6.00-7.00   sec  88.8 MBytes   744 Mbits/sec    0   2.92 MBytes       
[  4]   7.00-8.00   sec  92.5 MBytes   776 Mbits/sec    0   2.99 MBytes       
[  4]   8.00-9.00   sec  92.5 MBytes   776 Mbits/sec    0   3.04 MBytes       
[  4]   9.00-10.00  sec  95.0 MBytes   797 Mbits/sec    0   3.07 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   967 MBytes   811 Mbits/sec    8             sender
[  4]   0.00-10.00  sec   959 MBytes   804 Mbits/sec                  receiver
 
iperf Done.

Красота, в десятки раз лучше.

Отсюда следует вывод – на стороне коммутатора режим был сконфигурен неправильно (не соответствовал конфигурации со стороны сервера).
Из официальной доки по linux-bonding-у:

The active-backup, balance-tlb and balance-alb modes do not require any specific configuration of the switch.

The balance-rr, balance-xor and broadcast modes generally require that the switch have the appropriate ports grouped together. The nomenclature for such a group differs between switches, it may be called an "etherchannel" (as in the Cisco example, above), a "trunk group" or some other similar variation. For these modes, each switch will also have its own configuration options for the switch's transmit policy to the bond. Typical choices include XOR of either the MAC or IP addresses. The transmit policy of the two peers does not need to match. For these three modes, the bonding mode really selects a transmit policy for an EtherChannel group; all three will interoperate with another EtherChannel group.

Posted in *nix.

Tagged with .


Критическая уязвимость в Cisco IOS в функциональности Smart Install

На конкурсе GeekPWN 2017 13 мая 2017 продемонстирировали эпичную уязивомсть в Smart Install Client, позволяющую получить получить доступ к устройству без прохождения аутентификации:

Smart Install – это plug-and-play функциональность для конфигурации и управления, которая обеспечивает быстрое развертывание новых устройств, автоматизируя процесс начальной конфигурации и загрузки образа операционной системы для нового коммутатора. То есть можно просто установить несконфигурированный коммутатор, подключить питание и всё. Данная технология также предоставляет возможность бекапа конфигураций. Сеть, использующая Smart Install включает в себя группу сетевых устройств в роли клиентов, которая обслуживаетя общим director-ом.

Smart Install Client запускает сервер на TCP-порту 4786 для взаимодействия со Smart Install Director. By design требуется, чтобы порт был открыт по умолчанию. Уязвимость связана c переполнением стека в коде Smart Install Client. Путем отправки специально оформленного сообщения ibd_init_discovery_msg на TCP-порт 4786 и можно получить доступ.

Если обновить софт возможности и/или желания нет, можно использовать простой workaround, просто отключив smart install. Под рукой как раз был такой дырявый Cisco Catalyst 3750G, решил на нем проверить.

Как видим, упомнятый порт у него открыт:

$ nmap -p T:4786 10.10.10.2
 
Starting Nmap 7.60 ( https://nmap.org ) at 2018-04-06 11:26 EEST
Nmap scan report for 10.10.10.2
Host is up (0.14s latency).
 
PORT     STATE SERVICE
4786/tcp open  smart-install
 
Nmap done: 1 IP address (1 host up) scanned in 0.37 seconds

Идем на коммутатор, смотрим включена ли фича:

sw1#show version | inc Model number  
Model number                    : WS-C3750G-24TS-E
 
sw1#show vstack config
 Role: Client (SmartInstall enabled)
 Vstack Director IP address: 0.0.0.0
 
 *** Following configurations will be effective only on director ***
 Vstack default management vlan: 1
 Vstack management Vlans: none
 Join Window Details:
         Window: Open (default)
         Operation Mode: auto (default)
 Vstack Backup Details:
         Mode: On (default)
         Repository:

Выключаем:

sw1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
sw1(config)#no vstack
sw1(config)#exi
 
sw1#show vstack config
 Role: Client (SmartInstall disabled)
 Vstack Director IP address: 0.0.0.0
 
 *** Following configurations will be effective only on director ***
 Vstack default management vlan: 1
 Vstack management Vlans: none
 Join Window Details:
         Window: Open (default)
         Operation Mode: auto (default)
 Vstack Backup Details:
         Mode: On (default)
         Repository:

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

$ nmap -p T:4786 10.10.10.2
 
Starting Nmap 7.60 ( https://nmap.org ) at 2018-04-06 11:46 EEST
Nmap scan report for 10.10.10.2
Host is up (0.12s latency).
 
PORT     STATE  SERVICE
4786/tcp closed smart-install
 
Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds

Примечательно, что исправление Cisco выпустила только 28-го марта 2018 г. В базе данных CVE уязвимости просвоен идентификатор CVE-2018-0171.

Posted in Cisco.


Влияние Agile-методологий на отделы маркетинга

Инфографику предоставила Wrike - Управление Временем Проекта

Влияние Agile-методологий на отделы маркетинга

Posted in Misc.

Tagged with , , .


Удобный способ узнать банк-эмитент карты по первым цифрам номера

Binlist.net запилили API, теперь можно удобно узнать банк, выпустивший карту, по её номеру (достаточно первых 6-ти цифр):

$ bin="536354" ; curl -s -H "Accept-Version: 3" "https://lookup.binlist.net/$bin" | jq "."
{
  "number": {},
  "scheme": "mastercard",
  "type": "credit",
  "brand": "New World",
  "country": {
    "numeric": "804",
    "alpha2": "UA",
    "name": "Ukraine",
    "emoji": "🇺🇦",
    "currency": "UAH",
    "latitude": 49,
    "longitude": 32
  },
  "bank": {
    "name": "COMMERCIAL BANK PRIVATBANK",
    "url": "old.privatbank.ua",
    "phone": "380 562 390 000"
  }
}
 

Частота запросов лимитирована, допускается не более 2 шт в секунду. В случае превышения лимитов сервер вернет код ответа HTTP 429. Если нужно чаще – можно запросить платный доступ.

Стоит отметить, что база у этого сервиса не совсем полная и актуальная. Например, по состоянию на март 2019-го по BIN-у 537541 (карта монобанка) он ничего не выдал, в то время как другой сервис всё показал правильно:

Банк-эмитент для карт с первыми цифрами 537541

Posted in Misc.