Задача

Отдать с хоста 2 на хост 1 информацию о том, что хост 2 имеет роут до сети 192.168.39.0/24

Задач по безопасности и правильности перед нами не стоит.

Хост 1

[root@ospf1 ~]# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    inet 127.0.0.1/8 scope host lo
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    inet 127.0.0.1/32 scope host venet0
    inet 10.50.4.101/32 brd 10.50.4.101 scope global venet0:0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    inet 192.168.37.1/24 brd 192.168.37.255 scope global eth1

/etc/quagga/zebra.conf

hostname ospf1
log file /var/log/quagga/zebra.log
ip forwarding
line vty

/etc/quagga/ospfd.conf

hostname ospf1
log file /var/log/quagga/ospfd.log
router ospf
 ospf router-id 192.168.37.1
 network 192.168.37.0/24 area 0.0.0.1
line vty

Хост 2

[root@ospf2 ~]# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    inet 127.0.0.1/8 scope host lo
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    inet 127.0.0.1/32 scope host venet0
    inet 10.50.4.102/32 brd 10.50.4.102 scope global venet0:0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    inet 192.168.37.2/24 brd 192.168.37.255 scope global eth1
    inet 192.168.39.2/24 scope global eth1
[root@ospf2 ~]# cat /etc/quagga/zebra.conf
hostname ospf2
log file /var/log/quagga/zebra.log
ip forwarding
line vty
[root@ospf2 ~]# cat /etc/quagga/ospfd.conf
hostname ospf2
log file /var/log/quagga/ospfd.log
router ospf
 ospf router-id 192.168.37.2
 redistribute connected
 network 192.168.37.0/24 area 0.0.0.1
line vty

Примечания

redistribute connected - означает распространять маршруты к сетям, к которым маршрутизатор подключен напрямую. Если вам необходимо распространять добавленные через конфигурацию zebra статические маршруты - используйте redistribute static, если вы добавляете маршруты внешними средствами - redistribute kernel.

Советы

  • проверьте доступность хостов между друг другом с помощью ping
  • проверьте, что оба высылают OSPF Hello с помощью tcpdump или tshark
  • проверьте, что оба хоста получают высланные друг другом OSPF Hello
    • тут есть нюанс, это multicast, так что прилетать будет src=ip-отправителя dst=224.0.0.x
  • проверить, что маршрут прилетел можно с помощью ip r
  • включить дебаг можно, добавив в конфиг ospf debug ospf events
  • могу мешать файрволы - iptables разрешает ospf правилом iptables -I INPUT -p ospf
  • zebra тоже должна быть запущена (без неё не будет отображаться area в show ip ospf