LVS-DR и OpenVPN: возвращение пакетов, не маршрутизируемых в vpn

Я установил балансировщик нагрузки с помощью ldirectord и активно-пассивной службы mysql, которой он управляет, на двух дополнительных реальных серверах.

LVS работает в режиме прямой маршрутизации, поэтому клиентские запросы направляются напрямую на реальный активный сервер.

Реальный сервер ip: 192.168.3.41
Виртуальный IP: 192.168.3.100
IP-адрес клиента (моя рабочая станция): 192.168.100.117

Я также установил PvP-туннель OpenVPN между нашим локальным офисным шлюзом и балансировщиком нагрузки для удаленного управления хостами.

Балансировщик нагрузки VPN ip: 172.16.3.1
Конечная точка VPN на стороне клиента ip: 172.16.3.2

Это проблема: если я пытаюсь подключиться к MySQL, используя реальный IP-адрес, все работает нормально, но мне нужно иметь возможность подключиться также с использованием виртуального IP-адреса, и это не работает.

Устранены некоторые неполадки в сети, и кажется, что при вызове виртуального ip возвращаемые пакеты не маршрутизируются в туннель vpn, реальный сервер отвечает правильно, но поток пакетов останавливается при возврате к балансировщику нагрузки.

Запуск NetCat на клиенте, прослушивающем любой порт, и попытка соединения с реального сервера с использованием его реального ip в качестве исходного ip работает, но не используя виртуальный ip в качестве источника.

Кроме того, если я пытаюсь подключиться к службе (lighttpd на порту 80), работающей на самом балансировщике нагрузки, используя тот же виртуальный ip, это работает!

По этой причине я подозреваю что-то связанное с ldirectord, но не могу понять что!

Итак, подведем итог:

Клиент звонит 192.168.3.41 на порт 3306: работает.
Клиент звонит 192.168.3.100 через порт 80 (локальный lighttpd на балансировщике нагрузки): работает.
Клиент звонит 192.168.3.100 через порт 3306: НЕ работает, пакеты возвращаются в балансировщик нагрузки с реального сервера и не направляются в vpn.

Это мои конфигурации балансировщика нагрузки:

ПЕРЕДНЯЯ ЦЕПЬ:

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  95M   68G ACCEPT     all  --  *      *       192.168.3.0/24       0.0.0.0/0           
  58M 8719M ACCEPT     all  --  tun+   *       0.0.0.0/0            0.0.0.0/0           
  17M   16G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0               state RELATED,ESTABLISHED 
    0     0 DROP  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

ЦЕПЬ РАЗМЕЩЕНИЯ:

Chain POSTROUTING (policy ACCEPT 1377K packets, 84M bytes)
 pkts bytes target     prot opt in     out     source               destination          
 862K   51M MASQUERADE  all  --  *      *       192.168.3.0/24       0.0.0.0/0           
 101K 6159K MASQUERADE  all  --  *      bond1   172.16.3.0/24        0.0.0.0/0           

БОНД 1 Интерфейс:

# ifconfig bond1
bond1     Link encap:Ethernet  HWaddr 00:22:19:d5:6d:da  
          inet addr:192.168.3.11  Bcast:192.168.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:28854406358 errors:0 dropped:356 overruns:0 frame:0
          TX packets:27339806726 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:11071114840327 (10.0 TiB)  TX bytes:6071397046829 (5.5 TiB)

TUN 0 Интерфейс:

# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:172.16.3.1  P-t-P:172.16.3.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:6047779884 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7219390246 errors:0 dropped:3234101 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:1060763811007 (987.9 GiB)  TX bytes:5651690621029 (5.1 TiB)

Таблица маршрутизации:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.3.2      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
192.168.100.0   172.16.3.2      255.255.255.0   UG    0      0        0 tun0
192.168.3.0     0.0.0.0         255.255.255.0   U     0      0        0 bond1
172.16.3.0      172.16.3.2      255.255.255.0   UG    0      0        0 tun0
0.0.0.0         xxx.xxx.xxx.xxx 0.0.0.0         UG    0      0        0 bond0

Параметры ядра:

# sysctl -a|grep forw
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth1.forwarding = 1
net.ipv4.conf.eth1.mc_forwarding = 0
net.ipv4.conf.eth2.forwarding = 1
net.ipv4.conf.eth2.mc_forwarding = 0
net.ipv4.conf.eth3.forwarding = 1
net.ipv4.conf.eth3.mc_forwarding = 0
net.ipv4.conf.bond0.forwarding = 1
net.ipv4.conf.bond0.mc_forwarding = 0
net.ipv4.conf.bond1.forwarding = 1
net.ipv4.conf.bond1.mc_forwarding = 0
net.ipv4.conf.bond2.forwarding = 1
net.ipv4.conf.bond2.mc_forwarding = 0
net.ipv4.conf.tun0.forwarding = 1
net.ipv4.conf.tun0.mc_forwarding = 0
net.ipv4.ip_forward = 1

# sysctl -a|grep arp
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_accept = 0
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.default.arp_accept = 0
net.ipv4.conf.lo.proxy_arp = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_accept = 0
net.ipv4.conf.eth0.proxy_arp = 0
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth0.arp_announce = 0
net.ipv4.conf.eth0.arp_ignore = 0
net.ipv4.conf.eth0.arp_accept = 0
net.ipv4.conf.eth1.proxy_arp = 0
net.ipv4.conf.eth1.arp_filter = 0
net.ipv4.conf.eth1.arp_announce = 0
net.ipv4.conf.eth1.arp_ignore = 0
net.ipv4.conf.eth1.arp_accept = 0
net.ipv4.conf.eth2.proxy_arp = 0
net.ipv4.conf.eth2.arp_filter = 0
net.ipv4.conf.eth2.arp_announce = 0
net.ipv4.conf.eth2.arp_ignore = 0
net.ipv4.conf.eth2.arp_accept = 0
net.ipv4.conf.eth3.proxy_arp = 0
net.ipv4.conf.eth3.arp_filter = 0
net.ipv4.conf.eth3.arp_announce = 0
net.ipv4.conf.eth3.arp_ignore = 0
net.ipv4.conf.eth3.arp_accept = 0
net.ipv4.conf.bond0.proxy_arp = 0
net.ipv4.conf.bond0.arp_filter = 0
net.ipv4.conf.bond0.arp_announce = 0
net.ipv4.conf.bond0.arp_ignore = 0
net.ipv4.conf.bond0.arp_accept = 0
net.ipv4.conf.bond1.proxy_arp = 0
net.ipv4.conf.bond1.arp_filter = 0
net.ipv4.conf.bond1.arp_announce = 0
net.ipv4.conf.bond1.arp_ignore = 0
net.ipv4.conf.bond1.arp_accept = 0
net.ipv4.conf.bond2.proxy_arp = 0
net.ipv4.conf.bond2.arp_filter = 0
net.ipv4.conf.bond2.arp_announce = 0
net.ipv4.conf.bond2.arp_ignore = 0
net.ipv4.conf.bond2.arp_accept = 0
net.ipv4.conf.tun0.proxy_arp = 0
net.ipv4.conf.tun0.arp_filter = 0
net.ipv4.conf.tun0.arp_announce = 0
net.ipv4.conf.tun0.arp_ignore = 0
net.ipv4.conf.tun0.arp_accept = 0

заранее благодарю за помощь.

0 ответов

Другие вопросы по тегам