...

вторник, 18 февраля 2014 г.

[recovery mode] Аналог ip unnumbered в Mikrotik RouterOS

Сразу скажу, что на написание поста меня вдохновила аналогичная статья, опубликованная на Хабре еще в 2009 году. Поэтому я не буду пересказывать ее содержимое и приводить конфигурацию Cisco-девайсов.

Сегодня, когда IPv4-адреса стали еще большим дефицитом, чем автомобиль «Москвич» во времена СССР, выделять клиенту сеть /30 или /31 — это преступление. В Cisco для обхода этих проблем есть режим «ip unnumbered», позволяющий назначить клиенту единственный адрес, не расходуя адреса впустую. Давайте посмотрим как это делается в Mikrotik RouterOS. Представим такую (сильно упрощенную) схему:



Наш шлюз (provider-gw) подключен интерфейсом ether1 к интернету посредством BGP (или другим способом, это не важно) и у нас есть собственная «большая» публичная сеть, например — 123.45.60.0/22. Первый клиент подключен к VLAN-интерфейсу vlan100, который, предположим, заведён в ether2. Второй — к vlan200.



/interface vlan add disabled=no name=vlan100 vlan-id=100 interface=ether2 comment="Client 1"

/interface vlan add disabled=no name=vlan200 vlan-id=200 interface=ether2 comment="Client 2"


Маршрутизатор должен иметь IP-адрес из нашей публичной сети. Допустим, 123.45.60.1 с маской /22. Этот адрес нужно назначить на любой свободный интерфейс или vlan, даже если они потом никак не будут использоваться. Пусть это будет vlan1000:


/interface vlan add disabled=no name=vlan1000 vlan-id=1000 interface=ether2

/ip address add interface=vlan1000 address=123.45.60.1/22


Теперь сделаем настройки на маршрутизаторе для наших клиентов. Для этого выделим им любые свободные IP из диапазона нашей публичной сети, допустим 123.45.60.5 и 123.45.60.6. Добавим статические маршруты для этих адресов, ведущие в соответствующие клиентские VLAN. При этом желательно указать preffered source адрес нашего маршрутизатора.


/ip route add dst-address=123.45.60.5 gateway=vlan100 pref-src=123.45.60.1 comment="Static route to Client 1"

/ip route add dst-address=123.45.60.6 gateway=vlan200 pref-src=123.45.60.1 comment="Static route to Client 2"


Настраиваем клиента №1:

IP: 123.45.60.5

Маска: 255.255.255.252 (или /22; да, тут мы указываем маску нашей «большой» публичной сети)

Шлюз: 123.45.60.1


Настраиваем клиента №2 аналогичным образом. Меняется только IP-адрес.

IP: 123.45.60.6

Маска: 255.255.255.252 (или /22)

Шлюз: 123.45.60.1


Всё. Этого достаточно. После этого IP клиентов будут доступны из интернета, без лишней траты адресов. Остальные клиенты включаются аналогичным образом, каждый — в свой VLAN. Но в данном случае у нас возникает такая ситуация: допустим, клиент №1 хочет передать ip-пакет клиенту №2. Поскольку адрес клиента №2 попадает под маску сети /22, клиент №1 считает что №2 находится с ним в одном широковещательном домене и попытается отправить пакет не через маршрутизатор, а напрямую, для чего попытается выяснить его MAC-адрес посредством протокола ARP. Само собой, у него это не выйдет, поскольку клиенты находятся в разных VLAN и не могут передавать друг другу ARP-запросы.


Если вам нужно изолировать клиентов друг от друга — можно оставить всё как есть, хотя с точки зрения интернета это неправильно (каждый узел должен иметь связь с другим узлом по протоколу IP). Решается такая ситуация включением proxy-arp на клиентских VLAN:


/interface vlan set vlan100 arp=proxy-arp

/interface vlan set vlan200 arp=proxy-arp


Теперь маршрутизатор будет отвечать на arp-запросы клиентов, подставляя свой MAC-адрес в ответе и клиенты смогут обмениваться IP-трафиком, словно находятся в одном сегменте.


Как вы могли догадаться, аналогичным образом можно назначать в один клиентский VLAN несколько IP-адресов или даже подсетей, просто создавая статические маршруты с соответствующим dst-address.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий