Не так давно я столкнулся с проблемой аналога ip unnumbered на Linux, которая с легкостью реализовывается на оборудование Cisco.
При использование такого вида маршрутизации, не придется делить сеть глобально маршрутизируемых ip адресов на небольшие с маской /30 или /31. Достаточно присвоить, например, интерфейсу loopback сеть класса C ( /24 ), а клиентским интерфейсам указать на то, что вся обработка IP пакетов будет осуществляется с адресом присвоенным loopback interface. Тем самым вы получаете рациональное использование IP адресов.
Рассмотрим теперь выше сказанное на практике.
Входные данные
- Публичная сеть ip адресов класса C — 195.131.195.0/24 (маска подсети 255.255.255.0)
- Cisco router 2811 series, с двумя Fast Ethernet интерфейсами.
- Управляемый коммутатор L2, cisco catalyst 2950
- Router на базе Debian 2.6.18
- На Debian router, установлен пакет vconfig, который отвечает за создание VLAN. В качестве интерфейса, на котором будут создаватся VLAN выступает eth1
Постановка задачи
Необходимо создать 3 VLAN-а, для обслуживания трех абонентов и предоставить каждому по публичному IP адресу из сети 195.131.195.0/24.
Часть первая. Что бы вы сделали без ip unnumbered?
Чтобы мы сделали в таком случае, если бы не использовали ip unnumbered? Мы бы поделили нашу сеть на более мелкие, например, на сети с размерностью /30, тоесть маской подсети 255.255.255.252. И так, три клиента, три сети:
Сеть номер один: 195.131.195.0/30
Где: 195.131.195.0 – индификатор сети, 195.131.195.1 – IP, который выступает в роли шлюза для клиента, 195.131.195.2 – клиентский IP адрес и 195.131.195.3 – broadcast. По этой же аналогии разбиваем оставшиеся две сетки и получаем:
Сеть номер два: 195.131.195.4/30
Сеть номер три: 195.131.195.8/30
Теперь создаем конфиг на cisco router:
interface FastEthernet0/1.200 description Client-1 // описание интерфейса для первого клиента encapsulation dot1Q 200 // используем dot1Q выставляя таким образом VID для VLAN ip address 195.131.195.1 255.255.255.252 // присваиваем IP ! interface FastEthernet0/1.201 description Client-2 // описание интерфейса для воторого клиента encapsulation dot1Q 201 ip address 195.131.195.5 255.255.255.252 // присваиваем IP ! interface FastEthernet0/1.202 description Client-3 // описание интерфейса для первого клиента encapsulation dot1Q 202 // используем dot1Q выставляя таким образом VID для VLAN ip address 195.131.195.9 255.255.255.252 // присваиваем IP !
Конфиг для Cisco готов. Создадим похожую схему только уже на Debian router, для этого отредактируем файл /etc/network/interfaces
## Client 1 auto vlan200 iface vlan200 inet static address 195.131.195.1 netmask 255.255.255.252 vlan_raw_device eth1 ## Client 2 auto vlan201 iface vlan201 inet static address 195.131.195.5 netmask 255.255.255.252 vlan_raw_device eth1 ## Client 3 auto vlan202 iface vlan202 inet static address 195.131.195.9 netmask 255.255.255.252 vlan_raw_device eth1
Подготовим коммутатор, к которому будут подключены наши виртуальные клиенты:
1 порт на коуммутаторе будет стоять в режиме switchport access vlan 200
2 порт — switchport access vlan 201
3 порт — switchport access vlan 202
Все работает.
Часть вторая. Переводим нашу схему на ip unnumbered.
Для этого сделаем следующие изменения на cisco router. Повесим нашу публичную сеть на loopback 200, следующим образом:
interface Loopback200 ip address 195.131.195.1 255.255.255.0 no ip redirects
Теперь поправим клиентские интерфейсы
interface FastEthernet0/1.200 description Client-1 encapsulation dot1Q 200 ip unnumbered Loopback200 // указываем на loopback 200, где висит наша сеть ip virtual-reassembly // сбор фрагментов ! interface FastEthernet0/1.201 description Client-2 encapsulation dot1Q 201 ip unnumbered Loopback200 // указываем на loopback 200, где висит наша сеть ip virtual-reassembly // сбор фрагментов ! interface FastEthernet0/1.202 description Client-3 encapsulation dot1Q 202 ip unnumbered Loopback200 // указываем на loopback 200, где висит наша сеть ip virtual-reassembly // сбор фрагментов
И заключительный этап. Нам необходимо выдернуть всего один IP из нашей большой сети и предоставить клиенту. Сделаем это с помошью ip route:
ip route 195.131.195.2 255.255.255.255 FastEthernet0/1.200 // для клиента номер 1 ip route 195.131.195.3 255.255.255.255 FastEthernet0/1.201 // для клиента номер 2 ip route 195.131.195.4 255.255.255.255 FastEthernet0/1.202 //для клиента номер 3
Теперь для клиентов, необходимы настройки выходна в Internet: IP: 195.131.195.X, MASK: 255.255.255.0, а основной шлюз 195.131.195.1.
Почувствовали разницу? =)
А что же делать с нашим Debian router? Все просто. Изменим наш конфиг следующим образом. А вот что.
Создадим lo1 и повесим на него нашу публичную сеть.
auto lo1 allow-hotplug lo1 iface lo1 inet static address 195.131.195.1 netmask 255.255.255.0 network 195.131.195.0
Теперь поправим клиентские VLAN сделующим образом:
## Client 1 auto vlan200 iface vlan200 inet static address 0.0.0.0 netmask 0.0.0.0 vlan_raw_device eth1 ## Client 2 auto vlan201 iface vlan201 inet static address 0.0.0.0 netmask 0.0.0.0 vlan_raw_device eth1 ## Client 2 auto vlan202 iface vlan202 inet static address 0.0.0.0 netmask 0.0.0.0 vlan_raw_device eth1
И воспользуемся ip route:
ip ro add 195.131.195.2 dev vlan200 src 195.131.195.1 // Клиент номер 1 ip ro add 195.131.195.3 dev vlan200 src 195.131.195.1 // Клиент номер 2 ip ro add 195.131.195.4 dev vlan200 src 195.131.195.1 // Клиент номер 3
Вот и все.