Как получить адрес паблика с интерфейсов, на которых есть ещё несколько приватных сетей на MikroTik?
есть цель сделать скрипт, который бы настраивал автоматом firewall filter для офиса.
на mikrotik настраивается на одном из портов паблик (/30), на этом же интерфейсе и на соседних могут быть адреса из 10.0.0.0/8, 192.168.0.0/16, 172.0.0.0/8.
Соответственно хочется чтоб появлялось при выполнении скрипта три файрвольных правила - разрешить порт 1701 udp и icmp на паблик, который висит на нашем микроте (из /30 ) и запретить весь остальной трафик на input чейне.
проблема в том, что не могу выгрести этот самый айпишник /30 среди всех частных айпишников.
ps: угадать на какой интерфейс повесят паблик невозможно, как рука местного инженера ляжет. не я это придумал, вот такой вот дизайн исторически сложился.
Obsession: прописывает руками инженер на удалённой площадке (на этой способностей хватает), обычно это один из ether интерфейсов. потому что так исторически сложилось. ну и опять же - может на одной интерфейсе быть не только паблик, но и серая сеть.
Obsession: для построения правил скриптом - прикрыть себя снаружи. условно человек на площадке может развесить айпишники и обеспечить доступность, дальше уже надо чтоб скрипт крутил правила файрвола сам (там скриптом много ещё что делается, но уперся я лишь в то, что надо понять какой у нас паблик висит и прикрыть его в input дропами на все ненужные интерфейсы, обеспечить в dst-address ip fir filter'а нужные паблики.
nimbo: чесно говоря тот ещё бардак рисуется, я думал смогу понять для чего весь этот паровоз строится, но чот не вкуриваю, нахрена рисовать левые адреса, нахрена рисовать правые адреса левым образом.
чтоб бы это рулить, я так понимаю, есть какойто центральный маршрутизатор - который и должен рулить раздачей такого рода хлама, да ещё и ограничивать доступы по портам и протоколам.
поправите если где не прав.
Николай:
это мы выгребаем просто /30 ) но вообще идея интересная) именно в сторону POSIX я и думал, но до конца не осилил понять с разбега. у меня получилось так:
[admin@] > /ip address print where address~"[0-9.]*/30"
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS NETWORK INTERFACE
0 10.1-/30 10.- ether1-gateway
1 80.2-/30 80.- ether1-gateway
2 172.1-/30 172.- vlan10-5
3 10.1-/30 10.- ether5-
4 172.1-/30 172.- ether2-
5 172.2-/30 172.- bridge_main
nimbo:
И сработает эта идея, только если один паблик с маской /30. А вот, если
рука местного инженера
навешает несколько ip с такой маской? Просто получить адрес паблика вернее будет через код выше, а чтобы построить гибкую и на мой взгляд более правильную схему следует воспользоваться советом Павел Вайс.