Правильная настройка Quagga OSPF в Сети OpenVPN

во-первых, простая версия моей топологии сети.

                      [ hub ]
                         |
                      OpenVPN
                         |
10.77.1.0/24--[ base ]---|---[ mr0  ]--10.77.2.0/24
10.77.3.0/24--[ mr1  ]---|---[ mr2  ]--10.77.5.0/24
10.77.5.0/24--[ mr3  ]---| ...

hub является Ubuntu VPS работает сервер OpenVPN со статическим публичным IP. base это брандмауэр pfSense в моем доме, который имеет постоянное местоположение, но переменный IP. Каждый из mr# узлы - это мобильный маршрутизатор, который не имеет согласованного IP-адреса или местоположения и может или не может находиться за дополнительным брандмауэром NAT. Сетей, перечисленных подсети являются суперсети напрямую привязаны к своим маршрутизатор.

для чтения журналов, вот мои IP-адреса, идентификаторы маршрутизатора и операционные системы:

host  ip           ospf id        os
hub   10.77.0.254  10.77.255.254  ubuntu
base  10.77.0.253  10.77.255.253  pfsense
mr0   10.77.0.252  10.77.255.252  lede
mr1   10.77.0.251  10.77.255.251  pfsense
mr2   10.77.0.250  10.77.255.250  centos
mr3   10.77.0.249  10.77.255.249  vyos

на сервере-концентраторе у меня включен клиент-клиент и много routes и iroutes толкнул к различным клиентам. С этой настройкой я могу соединиться от любого узла до любого узла (в пределах правил межсетевого экрана). Но эта настройка не масштабируема, и я должен перезапускать клиентов и сервер каждый раз, когда изменяется маршрут, поэтому я работаю над заменой этой статической конфигурации Quagga ОСПП.

моя проблема выглядит https://serverfault.com/questions/189739/tough-routing-problem-with-linux-quagga-and-openvpnоднако, их принято решение было сделать все статической маршрутизацией, чего я пытаюсь избежать.

пока у меня динамический работает маршрутизация между мой роутер с Linux (mr2),hub, и случайный рабочий стол Linux, который я добавил к VPN для тестирования 3 маршрутизаторов OSPF. Мой VyOS и маршрутизаторы LEDE имеют вопросы по причинам, не связанным с этим вопросом. (edit: VyOS nightly works)


теперь вопрос:

мои два брандмауэра pfSense (один base и другое mr1) оба спама похожие лог сообщения:

2017/12/31 13:14:55 OSPF: Packet[DD]: Neighbor 10.77.255.250: Initial DBD from Slave, ignoring.
2017/12/31 13:15:00 OSPF: Packet[DD] [Slave]: Neighbor 10.77.255.254 packet duplicated.
2017/12/31 13:15:00 OSPF: *** sendmsg in ospf_write failed to 10.77.0.254, id 0, off 0, len 72, interface ovpnc1, mtu 1500: Network is unreachable
2017/12/31 13:15:00 OSPF: *** sendmsg in ospf_write failed to 10.77.0.254, id 0, off 0, len 108, interface ovpnc1, mtu 1500: Network is unreachable
2017/12/31 13:15:00 OSPF: Packet[DD]: Neighbor 10.77.255.250: Initial DBD from Slave, ignoring.
2017/12/31 13:15:00 OSPF: *** sendmsg in ospf_write failed to 10.77.0.250, id 0, off 0, len 52, interface ovpnc1, mtu 1500: Network is unreachable
2017/12/31 13:15:05 OSPF: Packet[DD] [Slave]: Neighbor 10.77.255.254 packet duplicated.

так как коробки pfSense не могут отправить свои ответы OSPF, это оставляет сеть в этом состоянии:

hub# sh ip os ne

    Neighbor ID Pri State           Dead Time Address         Interface            RXmtL RqstL DBsmL
10.77.255.250     1 Full/Backup       37.090s 10.77.0.250     tun0:10.77.0.254         0     0     0
10.77.255.251     0 ExStart/DROther   31.661s 10.77.0.251     tun0:10.77.0.254         0     0     0
10.77.255.253     0 ExStart/DROther   31.648s 10.77.0.253     tun0:10.77.0.254         0     0     0

так как он не может ничего отправить, узел pfSense получает застрял:

base# sh ip os ne

Neighbor ID     Pri State           Dead Time Address         Interface            RXmtL RqstL DBsmL
10.77.255.250     1 ExStart/Backup    36.505s 10.77.0.250     ovpnc1:10.77.0.253       0     0     0
10.77.255.251     0 2-Way/DROther     37.276s 10.77.0.251     ovpnc1:10.77.0.253       0     0     0
10.77.255.254     1 Exchange/DR       37.763s 10.77.0.254     ovpnc1:10.77.0.253       1     0     0

я честно не уверен, что это проблема конфигурации OpenVPN, проблема конфигурации Quagga, проблема конфигурации ОС или ошибка в одном или нескольких компонентах. Quagga, кажется, работает нормально, когда я просто использую Ethernet-ссылки (как это бывает, base,mr1 и mr3 все разделяют физическое местоположение на данный момент), поэтому кажется, что это ограничено использованием OSPF по OpenVPN.


редактировать 2018 JAN 06: На протяжении всего этого процесс, я заметил, что общим знаменателем было то, что каждый рабочий роутер на основе Linux. Прочесываю netstat результаты в миллионный раз я обнаружил, что мои коробки pfSense реализовали адаптер tun OpenVPN по-другому: в Linux адрес адаптера tun установлен с маской подсети, что позволяет подключенным к VPN узлам напрямую связываться "без" прыжка маршрутизатора. В FreeBSD, адаптер Тун подвергается как внутренняя "точка-точка" (что это, даже в Linux) и маршрута IPv4 добавлено, что карты для остальной сети. Не могу вспомнить, если я сделал это или это произошло автоматически, но цель я думаю сейчас: а) как я вам и FreeBSD/pfSense для создания Тун адаптер, который будет вести себя как Linux, позволяющий "прямые" соединения, или Б) как я могу получить Квагги, чтобы его пакеты будут маршрутизироваться?

pfSense:

[root@base ~]# ifconfig ovpnc1
ovpnc1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
    options=80000<LINKSTATE>
    inet6 fe80::20c:29ff:feac:faf4%ovpnc1 prefixlen 64 scopeid 0x16
    inet 10.77.0.253 --> 10.77.0.225  netmask 0xffffffe0
    nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
    groups: tun openvpn
    Opened by PID 27659
[root@base ~]# netstat -nr4 | grep -e ovpnc1 -e link#22
10.77.0.224/27     10.77.0.225        UGS      ovpnc1
10.77.0.225        link#22            UH       ovpnc1
10.77.0.253        link#22            UHS         lo0
...
[root@base ~]# ping -r -c 2 10.77.0.254
PING 10.77.0.254 (10.77.0.254): 56 data bytes
ping: sendto: Network is unreachable
ping: sendto: Network is unreachable

--- 10.77.0.254 ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss

Linux:

[root@mr2 ~]# ip a sh dev tun0
18: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/none
    inet 10.77.0.250/27 brd 10.77.0.255 scope global tun0
       valid_lft forever preferred_lft forever
[root@nl3-mr2 ~]# ip ro | grep tun0
10.77.0.224/27 dev tun0 proto kernel scope link src 10.77.0.250
...
[root@mr2 ~]# ping -r -c 2 10.77.0.254
PING 10.77.0.254 (10.77.0.254) 56(84) bytes of data.
64 bytes from 10.77.0.254: icmp_seq=1 ttl=64 time=51.1 ms
64 bytes from 10.77.0.254: icmp_seq=2 ttl=64 time=51.2 ms

--- 10.77.0.254 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 51.117/51.199/51.281/0.082 ms

сервер OpenVPN.conf:

port 1194
management localhost 1194
proto udp
dev tun

ca ca.crt
cert server.crt
dh dh2048.pem
tls-auth ta.key 0
key-direction 0

auth SHA256
cipher AES-256-CBC

mode server
tls-server
topology subnet
push "topology subnet"
ifconfig 10.77.0.254 255.255.255.224
push "route-gateway 10.77.0.254"
client-to-client
config ccd/routes.conf
push "route 10.77.4.0 255.255.255.0 10.77.0.254 250"
client-config-dir ccd

user nobody
group nogroup

persist-key
persist-tun

status openvpn-status.log

verb 4

пример ccd файла (это one is for base):

config ccd/routes_push.conf
ifconfig-push 10.77.0.253 255.255.255.224
iroute 10.77.1.0 255.255.255.0

ccd / маршруты.conf:

route 10.77.1.0 255.255.255.0 10.77.0.253 250
route 10.77.2.0 255.255.255.0 10.77.0.252 250
route 10.77.3.0 255.255.255.0 10.77.0.251 250
route 10.77.5.0 255.255.255.0 10.77.0.250 250
route 10.77.6.0 255.255.255.0 10.77.0.249 250

ccd / routes_push.conf:

push "route 10.77.1.0 255.255.255.0 10.77.0.253 250"
push "route 10.77.2.0 255.255.255.0 10.77.0.252 250"
push "route 10.77.3.0 255.255.255.0 10.77.0.251 250"
push "route 10.77.5.0 255.255.255.0 10.77.0.250 250"
push "route 10.77.6.0 255.255.255.0 10.77.0.249 250"

сокращенный запуск конфигурации на hub:

...
!
service advanced-vty
service password-encryption
!
debug ospf event
!
...
!
interface tun0
 description grandcentral-hub
 ip ospf network broadcast
 ipv6 nd suppress-ra
 no link-detect
!
router ospf
 ospf router-id 10.77.255.254
 log-adjacency-changes
 network 10.77.0.224/27 area 0.0.0.0
 network 10.77.4.0/24 area 0.0.0.0
 network 172.17.0.0/16 area 0.0.0.0
 area 0.0.0.0 range 10.77.4.0/24
!
ip forwarding
ipv6 forwarding
!
line vty
!
end

сокращенный запуск конфигурации на base, как порожденных pfSense:

...
!
interface ovpnc1
 ip ospf network broadcast
 ip ospf priority 0
!
...
!
router ospf
 ospf router-id 10.77.255.253
 log-adjacency-changes detail
 passive-interface em0.1
 network 10.77.0.224/27 area 0.0.0.0
 network 10.77.1.0/27 area 0.0.0.0
 network 10.77.1.192/26 area 0.0.0.0
 network 192.168.254.0/24 area 0.0.0.0
!
ip forwarding
ipv6 forwarding
!
line vty
!
end
22
задан computergeek125
20.03.2023 4:52 Количество просмотров материала 3633
Распечатать страницу

1 ответ

изменить 20 января 2018 17: 57 CST: as grawity указал (большое спасибо), просто используя устройства tap вместо tun исправляет все. Надо было подумать об этом раньше.

это, как говорится, я все еще ищу решение с tun, чтобы увидеть, возможно ли это. Я не знаю, действительно ли ~20 нечетных байтов из заголовка ethernet могут иметь значение для ссылки DSL, и наверняка журнал более непрозрачен, так как все MULTI: Learn: записи теперь виртуальные MAC-адреса вместо IP-адресов.


Похоже, что то, что я пытаюсь сделать, невозможно напрямую с tun. OpenVPN по своей природе является двухточечным интерфейсом, а реализация OpenVPN / TUN в Linux позволяет скрывать связь между клиентами в сетевом стеке.

В отличие от этого, FreeBSD предоставляет необработанный интерфейс точка-точка и устанавливает маршрут для обработки клиент-клиент (проверено на чистом FreeBSD 11.1-RELEASE).

кроме того, когда вы измените внутренний IP-адрес сервера OpenVPN, он по-прежнему назначает IP-адрес по умолчанию (самый низкий доступный IP в диапазоне) интерфейсам точка-точка.

Итак, чтобы исправить это, мне придется переосмыслить все как систему точка-точка (yay learning new things). Я обновлю этот ответ, когда получу его.

0
отвечен computergeek125 2023-03-21 12:40

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх