Основная задача протокола ospf — динамическая маршрутизация внутри PI/PA адресного пространства IP-сети. Актуальность протока высока при использовании туннелирования с динамическими IP-адресами туннелей при наличии нескольких серверов доступа. Может использоваться для конфигурирования сетей с маршрутизацией сегментов для сокращения работ по настройке маршрутизаторов верхнего уровня, энтузиасты также ухитряются строить с помощью ospf решения для резервирования.
В FreeBSD реализация протокола есть в порте quagga.
# cd /usr/ports/net/quagga # make install clean
Создаем файл лога:
# touch /var/log/ospfd.log # touch /var/log/zebra.log # chown quagga:quagga /var/log/ospfd.log # chown quagga:quagga /var/log/zebra.log
Естественно необходимо провести стандартные действия для автоматического запуска и добавляем в файл /etc/rc.conf строки:
quagga_enable="YES" quagga_daemons="zebra ospfd" quagga_flags="-d -A 127.0.0.1"
Запускаем демоны zebra и ospfd, который будет слушать на адресе 127.0.0.1 порты 2601 и 2604 соответственно.
Далее предположим, что у нас есть 2 хоста
- core_home с IP 192.168.0.254/24 на внутреннем интерфейсе;
- route1_home c IP 192.168.16.1/24 на внутреннем интерфейсе и 192.168.0.253 на внешнем
. По умолчанию для core_home существует direct маршрут
192.168.0.0/24 link#1 U 4 7350824 em0
На route1_home также существует дефолт
default 192.168.0.1 UGS 0 145852 fxp0
и direct маршрут
192.168.16.0/24 link#1 U 4 85344 fxp1
Необходимо, чтобы хост core_home знал, где искать адреса из сети 192.168.16.0/24 без явного указания статического маршрута. Конфиги /usr/local/etc/quagga/ospfd.conf выглядят следующим образом:
на core_home:
! hostname core_home password pass enable password pass log file /var/log/ospfd.log no banner motd ! router ospf ospf router-id 192.168.0.254 network 192.168.0.0/24 area 0.0.0.0 neighbor 192.168.0.253 default-information originate ! line vty !
а на route1_home:
! hostname core_home password pass enable password pass log file /var/log/ospfd.log no banner motd ! router ospf ospf router-id 192.168.0.253 redistribute connected network 192.168.0.0/24 area 0.0.0.0 neighbor 192.168.0.254 ! line vty !
Также создаем на обоих хостах файлы /usr/local/etc/quagga/zebra.conf следующего содержания:
! hostname core_home password pass enable password pass log file /var/log/zebra.log no banner motd ! ip forwarding ! line vty !
Запускаем демоны:
# /usr/local/etc/rc.d/quagga start
А теперь заходим в консоль ospfd на хосте core_home:
# telnet 127.0.0.1 2604 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.
User Access Verification
Password:
core_home> en
Password:
core_home# sh ip os ne
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
192.168.0.253 1 Full/DR 33.862s 192.168.0.253 em0:192.168.0.254 0 0 0
core_home# sh ip os ro
============ OSPF network routing table ============
N 192.168.0.0/24 [10] area: 0.0.0.0
directly attached to em0
============ OSPF router routing table =============
R 192.168.0.253 [10] area: 0.0.0.0, ASBR
via 192.168.0.253, em0
============ OSPF external routing table ===========
N E2 192.168.16.0/24 [10/20] tag: 0
via 192.168.0.253, em0
Как видно, хост получает маршрут ко всем сетям, которые присутствуют на маршрутизаторе route1_home. Это можно проконтролировать в демоне zebra:
# telnet 127.0.0.1 2601 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.
User Access Verification
Password:
core_home> en
Password:
core_home# sh ip ro
Codes: K — kernel route, C — connected, S — static, R — RIP, O — OSPF,
I — ISIS, B — BGP, > — selected route, * — FIB route
O>* 192.168.16.0/24 [110/20] via 192.168.128.22, em0, 00:31:42
O 192.168.0.0/24 [110/10] is directly connected, em0, 00:32:03
C>* 192.168.0.0/24 is directly connected, em0
Надеюсь идея понятна.
Источник http://myfreebsd.ru/network/ospf-osnovy-dinamicheskoj-marshrutizacii