Назад | Перейти на главную страницу

Как я могу сопоставить диапазон CIDR для записи хоста конфигурации SSH?

Я ищу способ использовать определенные блоки CIDR для сопоставления хостов в конфигурации клиента SSH (обычно ~/.ssh/config). Например, у меня есть запись для перенаправления всего трафика через хост-бастион, если IP-адрес попадает в определенный диапазон, скажем 10.1.0.0/16:

host 10.1.*
    proxycommand ssh -q bastion -W %h:%p

Это работает очень хорошо, но как насчет того, чтобы добавить несколько диапазонов, которые точно не соответствуют точечной нотации?

# doesn't work, unfortunately
host 10.2.0.0/18
    proxycommand ssh -q bastion-foo -W %h:%p
host 10.2.64.0/18
    proxycommand ssh -q bastion-bar -W %h:%p

Есть ли что-то в руководстве, которое я пропустил, или хитрый трюк со сценариями, который позволил бы сопоставить эти диапазоны IP-адресов хоста?

Сопоставление с шаблонами в файле ssh_config выполняется как базовое сопоставление с образцом, а не как сопоставление сети / CIDR. Так что использовать нотацию CIDR не получится.

В страница руководства объясняет, что:

Шаблон состоит из нуля или более непробельных символов, * (подстановочный знак, соответствующий нулю или более символов), или ? (подстановочный знак, соответствующий ровно одному символу).

Лучшее, что вы можете сделать, - это использовать список из более чем одного шаблона. Опять же, со страницы руководства:

Список шаблонов - это список шаблонов, разделенных запятыми. Шаблоны в списках шаблонов можно отменить, поставив перед ними восклицательный знак (!).

Итак, чтобы покрыть ваши две / 18 сети, вам нужно будет перечислить:

  • все хосты совпадают 10.2.?.* (например, 10.2.0.0–10.2.9.255)
  • все хосты совпадают 10.2.??.* (например, 10.2.10.0–10.2.99.255)
  • все хосты совпадают 10.2.10?.* (например, 10.2.100.0–10.2.109.255)
  • все хосты совпадают 10.2.11?.* (например, 10.2.110.0–10.2.119.255)
  • все хосты совпадают 10.2.12?.* ЗА ИСКЛЮЧЕНИЕМ совпадающих 10.2.128.* и 10.12.129.* (и помните, что на первом месте должно быть исключение!)

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

Host "10.2.?.*","10.2.??.*", "10.2.10?.*","10.2.11?.*","!10.2.128.*","!10.2.129.*","10.2.12?.*"

Следите за http://bugzilla.mindrot.org/show_bug.cgi?id=1169 который в конечном итоге может предоставить механизм для этого.