Использование открытых интерфейсов на сервере, подключенном через туннель GRE
Я довольно плохо знаком с сетью, поэтому, пожалуйста, простите любые терминологические ошибки.
У меня есть 2 сервера, связанные с туннелем GRE.
Сервер1 (10.0.0.1) ----> Сервер2 (10.0.0.2)
Я хочу иметь возможность привязывать к общедоступным IP-адресам на Server2 с помощью Server1. Для этого я настроил виртуальные интерфейсы с общедоступными IP-адресами Server2 на Server1, а затем использовал правила маршрутизации на Server1 для маршрутизации пакетов через туннель GRE.
На сервере1:
ip rule add from [Server2's first public IP] table gre
ip rule add from [Server2's second public IP] table gre
ip route add default via 10.0.0.2 dev gre1 table gre
Это прекрасно работает, и я вижу пакеты, поступающие через GRE на Server2. Я вижу пакет, выходящий из туннеля на устройстве gre1 Server2, как показано:
С сервера1: ping -I [Server2's public ip] google.com
tcpdump из туннельного устройства GRE Server2 сервера:
12:07:17.029160 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
[Server2's public ip] > 74.125.225.38: ICMP echo request, id 6378, seq 50, length 64
Это именно тот пакет, который я хочу. Тем не менее, я не вижу его вообще на eth0:0 (с которым связан публичный IP-адрес Server2).
Я попытался использовать правила маршрутизации для получения пакетов, поступающих с общедоступного IP-адреса Server2 (который будет выходить из dev gre1), для прохождения через dev eth0 на общедоступном шлюзе по умолчанию, и это тоже не работает.
Я в растерянности, спасибо всем, кто может помочь.