Я ищу способ использовать определенные блоки 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 который в конечном итоге может предоставить механизм для этого.