1 (02.01.2013 10:51:11 отредактировано Cruiser78)

Привет всем!

Получил полную загадку. А именно:
1. Операционная система RFR-17.1 со всеми последними патчами на двух серверах. Которые планируются к работе в кластере Pacemaker+Corosync. Локальная сеть - 192.168.43.0
2. Есть ремутные компьютеры, с которых должен быть доступ к этому кластеру по openVPN.
3. Поднимаем (кластерно) openVPN, на одной из нод. Соответственно там поднимается сетевой интерфейс tun0 c сетью 192.168.128.0.
4. На межсетевом экране на узлах кластера разрешено всё для сети 192.168.0.0/16 
5. Пытаемся поработать с ремутных компьютеров и видим засаду.
5.1 Ремутный компьютер (через openVPN) прекрасно видит узел кластера на котором развернут openVPN.  Узел получает из интерфейса tun0 пакеты от VPN-адреса 192.168.128.2 и откликается на них. Это хорошо.
5.2. Ремутный компьютер прекрасно видит остальные компьютеры в локальной сети  192.168.43.0. Они тоже его чуют и откликаются.
5.3 ЗАСАДА: второй узел кластера понимает только входящие пакеты из локальной сети. То есть посланные с адресов 192.168.43.0. Пакеты приходящие от сети 192.168.128.0, из VPN, этим узлом игнорируются полностью. Он не только на них никак не откликается, но даже нет и исходящего на них от узла трафика. Всё умирает в нём. 
6. Переводим openVPM на второй узел кластера. И видим ту же самую картину. Узел на котором живет openVPN открывается для доступа, а второй узел кластера становится доступным только из _локальной_ сети. На запросы из VPN не откликается и сам туда ничего слать не хочет.
7. Если с такой "закрывшейся" ноды попытаться попинговать ремутный (в openVPN) компьютер, то сама эта нода ответит: Destination Host Unreachable. Ответит сама, на сетевых интерфейсах узла, при этом нет никаких исходящих запросов. Однако такая закрывшаяся нода неплохо очень видит весь остальной интернет.

Знатоки, подскажите, где собака зарылась?

2 (01.01.2013 16:59:00 отредактировано afanasev.p)

/me не очень понимает в работе Pacemaker+Corosync (wtf?), но для того, чтобы объединить 2 сети в одну "нормальную" (имея при этом 2 маршрутизатора) - нужно правильно настроить маршрутизацию. либо делать нат (но это "на любителя")

И баба с воза, и волки сыты...

3 (02.01.2013 10:50:40 отредактировано Cruiser78)

afanasev.p пишет:

/me не очень понимает в работе Pacemaker+Corosync (wtf?), но для того, чтобы объединить 2 сети в одну "нормальную" (имея при этом 2 маршрутизатора) - нужно правильно настроить маршрутизацию. либо делать нат (но это "на любителя")

Маргрутизацию я могу как автомат Калашникова разбирать и собирать с закрытыми глазами. Проблема не в этом. Даже если маргрутизация настроена криво, но всё равно хост, с которого пытаемся что либо пропинговать, кинет соответствующий icmp echo-request на интерфейс, на котором определен хотя бы маршрут по умолчанию. Но не станет сам определять, что ремутный хост недоступен. У меня же на сетевых интерфейсах - полная тишина. То есть:
1. имеем (адрес узла 192.168.43.102):

 Консоль:
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default              192.168.41.1    0.0.0.0                 UG    0      0        0 em1
192.168.0.0     192.168.43.2    255.255.255.0   UG    0      0        0 em2
192.168.43.0    0.0.0.0               255.255.255.0   U      0      0        0 em2
192.168.53.0    192.168.43.2    255.255.255.0   UG   0      0        0 em2
192.168.128.0   192.168.43.2    255.255.255.0  UG   0     0        0 em2

Адрес 192.168.43.2 - это адрес шлюза. Сейчас он на соседнем компьютере, на другом узле кластера.
Сеть 43 - локальная, 53 - ремутная, 128 - openVPN.
2. Пингуем с этого хоста ремутный хост   192.168.53.1:
 Консоль:
# ping 192.168.53.1
PING 192.168.53.1 (192.168.53.1) 56(84) bytes of data.
From 192.168.43.102 icmp_seq=1 Destination Host Unreachable
From 192.168.43.102 icmp_seq=2 Destination Host Unreachable

То есть нам трафик режет не кто либо, а сам хост, с которого пингуем. При этом на его сетевых интерфейсах - полная тишина по icmp. О чем с готовностью нам сообщает tcpdump. Но если мы пингуем 8.8.8.8 - проблем нет никаких.
3. Теперь переходим на ремутный хост (192.168.53.1) и пингуем наш узел:
Собственно не получаем никакого ответа...
А вот на нашем хосту:
 Консоль:
# tcpdump -n -i em2 proto ICMP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em2, link-type EN10MB (Ethernet), capture size 65535 bytes
18:58:36.706387 IP 192.168.128.2 > 192.168.43.102: ICMP echo request, id 24002, seq 21, length 64
18:58:37.706553 IP 192.168.128.2 > 192.168.43.102: ICMP echo request, id 24002, seq 22, length 64
18:58:38.706518 IP 192.168.128.2 > 192.168.43.102: ICMP echo request, id 24002, seq 23, length 64
18:58:39.707339 IP 192.168.128.2 > 192.168.43.102: ICMP echo request, id 24002, seq 24, length 64

То есть - пакеты из openVPN на него приходят, но вот взад ответы не идут. Может быть запрещены ICMP?
Нет:
 Консоль:
# tcpdump -n -i em2 proto ICMP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em2, link-type EN10MB (Ethernet), capture size 65535 bytes
19:00:43.901730 IP 192.168.43.6 > 192.168.43.102: ICMP echo request, id 2147, seq 5, length 64
19:00:43.901779 IP 192.168.43.102 > 192.168.43.6: ICMP echo reply, id 2147, seq 5, length 64
19:00:44.699912 IP 192.168.128.2 > 192.168.43.102: ICMP echo request, id 24002, seq 149, length 64
19:00:44.901496 IP 192.168.43.6 > 192.168.43.102: ICMP echo request, id 2147, seq 6, length 64
19:00:44.901523 IP 192.168.43.102 > 192.168.43.6: ICMP echo reply, id 2147, seq 6, length 64

То, что ICMP разрешены - поверьте. Разрешены со всей огромной сети 192.168.0.0/16
4. Продолжаем эксперимент. Теперь переводим openVPN-сервер на нашу ноду. Маршруты несколько изменяются:
 Консоль:
# route -n
Kernel IP routing table
Destination     Gateway               Genmask         Flags Metric Ref    Use Iface
0.0.0.0                192.168.41.1     0.0.0.0                UG    0      0        0 em1
192.168.43.0     0.0.0.0                255.255.255.0   U      0      0        0 em2
192.168.53.0    192.168.128.2   255.255.255.0   UG    0      0        0 tun0
192.168.128.0  192.168.128.2   255.255.255.0   UG    0      0        0 tun0

То есть - 53-я и 128-я сети уходят на интерфейс tun0, в openVPN. При этом всё начинает работать.
 Консоль:
# tcpdump -n -i tun0 proto ICMP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
19:17:08.768907 IP 192.168.128.2 > 192.168.43.102: ICMP echo request, id 24086, seq 38, length 64
19:17:08.768946 IP 192.168.43.102 > 192.168.128.2: ICMP echo reply, id 24086, seq 38, length 64
19:17:09.770675 IP 192.168.128.2 > 192.168.43.102: ICMP echo request, id 24086, seq 39, length 64
19:17:09.770713 IP 192.168.43.102 > 192.168.128.2: ICMP echo reply, id 24086, seq 39, length 64
19:17:10.772002 IP 192.168.128.2 > 192.168.43.102: ICMP echo request, id 24086, seq 40, length 64
19:17:10.772037 IP 192.168.43.102 > 192.168.128.2: ICMP echo reply, id 24086, seq 40, length 64

Точнее - данный хост становится доступным через openVPM, а колом становится парный ему в кластере хост. Он теряет связь с ремутными по openVPN сетями, но вот с интернетом работает беспроблемно. То есть полностью повторяет поведение первого хоста.

С чем это связано - понять не могу.
=======================
Изменил процедуру создания сетевых алиасов, отказался от готовых шаблонов, написал простенькие скрипты с ifconfig up/down. Абсолютно то же самое поведение. Соседняя нода в кластере ремутно (через openVPN) недоступна.
******************************************************
Решил проблему. Оказалось, что работа сетевых интерфейсов очень чувствительна к тому, как поднимается и останавливается openVPN на алиасных (которые тоже синхронно с ним живут) виртуальных интерфейсах. Надо, чтобы это всё очень синхронно работало. Вначале поднимался интерфейс, затем - openvpn. Остановка в обратном порядке.
Всё решил в одном стартовом скрипте. В нем жестко задан порядок старта и останова служб (алиасного интерфейса, правил маршрутизации и openVPN). В результате перечень ресурсов pacemaker'а сократился, но, при этом, всё заработало как часы. Соседний хост виден постоянно за исключением нескольких секунд, в течение которых служба мигрирует на живую ноду и openvpn переинициализируется.