Как правильно добавить порт в существующий vlan на коммутаторе mikrotik?

Обсуждение ПО и его настройки
Ответить
Myr4ik
Сообщения: 17
Зарегистрирован: 31 окт 2017, 14:32

Интересует самый оптимальный и правильный способ добавления порта в сущ. vlan из cli.

Делаю так (если что, «vlan-filtering=no», просто процесс обучения работы с vlan`ами через cli):

Код: Выделить всё

/interface bridge vlan
add bridge=bridge tagged=ether2 vlan-ids=222
add bridge=bridge tagged=ether3 vlan-ids=333
ether2 – с тэгом 222
ether3 – с тэгом 333

Все вроде бы ок:

Код: Выделить всё

[test@test] /interface bridge vlan> print detail
Flags: X - disabled, D - dynamic
 0   bridge=bridge vlan-ids=222 tagged=ether2 untagged="" current-tagged=""
     current-untagged=""

 1   bridge=bridge vlan-ids=333 tagged=ether3 untagged="" current-tagged=""
     current-untagged=""
Теперь, я бы хотел добавить ether4 в vlan 222.
Первое, что пришло в голову:

Код: Выделить всё

/interface bridge vlan
add bridge=bridge tagged=ether4 vlan-ids=222
failure: vlan already added
Ну ок, нужно было внимательней читать мануал, наверное.

Сделал так:

Код: Выделить всё

/interface bridge vlan
edit [find vlan-ids=222] value-name=tagged
и получил окно текстового редактора, куда благополучно добавил нужный мне ether4 к уже имеющемуся ether2:
ether2,ether4

C-c quit C-o save&quit C-u undo C-k cut line C-y paste F5 repaint
Сделал "C-o save&quit" и получил желаемое:
[test@test] /interface bridge vlan> print detail
Flags: X - disabled, D - dynamic
0 bridge=bridge vlan-ids=222 tagged=ether2,ether4 untagged=""
current-tagged="" current-untagged=""

1 bridge=bridge vlan-ids=333 tagged=ether3 untagged="" current-tagged=""
current-untagged=""
Вопрос: как сделать все тоже самое с ether4, но одной строкой и без открытия текстового редактора (и без winbox, разумеется)?


KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

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

Код: Выделить всё

interface bridge vlan print
Наблюдаем что нужный влан под номером 0.
А дальше существует команда по редактированию правил - set, поэтому мы делаем следующее

Код: Выделить всё

interface bridge vlan set numbers=0 tagged=ether2,ether4
И на этом все, правило изменено, без всяких доп. окошек и т.д.

Но с маленьким но, вы при этом точно должны знать что это правило содержит, потому что если сделать просто

Код: Выделить всё

interface bridge vlan set numbers=0 tagged=ether4
то в правиле пропадет интерфейс ether2, т.е. set заменит вам данную строчку тем, что вы описали, удалив то что там было и вписав то что вы ей сказали.
Получается что надо обязательно делать "print detail", иначе вы не узнаете есть ли в правиле уже нужный интерфейс или нет.
Сам по себе "print" лично мне не очень удобен, гораздо удобней export, он покажет все содержимое правила, но на беду не покажет его номер, поэтому тут палка о двух концах, т.к. получается что сначала нужно сделать

Код: Выделить всё

interface bridge vlan export
Глянуть что данный влан уже используется и с какими интерфейсами и в каком виде, а дальше уже

Код: Выделить всё

interface bridge vlan print
что бы посмотреть номер правила и только теперь

Код: Выделить всё

interface bridge vlan set numbers=0 tagged=ether2,ether4
Как итог, телодвижений примерно столько же, сколько в вашем варианте.


Myr4ik
Сообщения: 17
Зарегистрирован: 31 окт 2017, 14:32

KARaS'b писал(а): 15 май 2020, 00:33 ...нам нужно узнать есть у нас такой влан или нет и если есть под каким номером он у нас записан, поэтому сначала делаем

Код: Выделить всё

interface bridge vlan print
Наблюдаем что нужный влан под номером 0.
Тут есть беда с id записями о vlan`ах, если их довольно-таки много (1000 штук, например).

Вот скажем у меня такой вывод (тут не 1000, конечно, но пример будет понятен, я думаю):
 

Код: Выделить всё

[test@test] /interface bridge vlan> print
Flags: X - disabled, D - dynamic
 #   BRIDGE                          VLAN-IDS  CURRENT-TAGGED                        CURRENT-UNTAGGED
 0   bridge                          222
 1   bridge                          223
 2   bridge                          224
 3   bridge                          225
 4   bridge                          226
 5   bridge                          227
 6   bridge                          228
 7   bridge                          229
 8   bridge                          230
 9   bridge                          231
10   bridge                          232
11   bridge                          233
12   bridge                          234
13   bridge                          235
14   bridge                          236
15   bridge                          237
16   bridge                          238
17   bridge                          239
18   bridge                          240
Вместо того чтобы просматривать весь список vlan`ов в поисках нужного, я бы воспользовался чем-то таким:

Код: Выделить всё

[test@test] /interface bridge vlan> print where vlan-ids=231
Flags: X - disabled, D - dynamic
 #   BRIDGE                          VLAN-IDS  CURRENT-TAGGED                        CURRENT-UNTAGGED
 0   bridge                          231
Но тут проблема, т. к. вместо того чтобы узнать id записи о vlan`e 231, которое должно быть равно 9 (см. спойлер выше), я вижу отфильтрованный список по нужному мне vlan-ids=231, в котором id вместо 9 уже 0...
Возможно, есть иной способ отфильтровать вывод, чтобы id отображалось корректно?

С set`ом я игрался, как Вы и предложили:

Код: Выделить всё

interface bridge vlan set numbers=0 tagged=ether2,ether4
"set" неудобен тем, что требуется делать "export" в выводе которого id строк уже отсутствуют (как Вы и сказали):

Код: Выделить всё

/interface bridge vlan
add bridge=bridge tagged=ether2,ether4 vlan-ids=222
add bridge=bridge tagged=ether2 vlan-ids=223
add bridge=bridge tagged=ether2 vlan-ids=224
add bridge=bridge tagged=ether2 vlan-ids=225
add bridge=bridge tagged=ether2 vlan-ids=226
...
А он то нам нужен + есть неплохой такой риск при copy-paste упустить уже добавленный порт в vlan, и вместо добавления ether4 к ether2 , заменить ether2 на ether4.

В общем, именно из-за этих неудобств и нахожусь в поиске лучших решений, чем те, что уже перечислены здесь.


Аватара пользователя
Kostetyo
Сообщения: 205
Зарегистрирован: 21 окт 2013, 21:52

Ребята, с удовольствием слежу за темой, интересно решение. Сам использую винбокс, но оч интересно решение в cli.


Ответить