Я пытаюсь настроить тестовую настройку VPN для маршрутизации эхо-запросов на общедоступный IP-адрес экземпляра. Корпоративный поставщик, к которому мы подключаемся, зарезервировал все личное пространство на своей стороне. Я не уверен, какие правила NAT мне нужны, чтобы получать трафик от экземпляра VPN-маршрутизатора на нашей стороне для перенаправления трафика на соответствующий экземпляр, находящийся за ним, на основе его общедоступного адреса, а не частного.
У меня топология вроде
A-сервер <-> A-VPN <--internet-> B-VPN <-> B-сервер.
VPN-туннель установлен, и я могу без проблем пинговать любую сторону через частный IP. Пинг общедоступного IP-адреса действительно попадает на виртуальную машину VPN на «другой» стороне, но останавливается на этом (я думаю, это видно по активности в «$ ip xfrm monitor»?).
Оба экземпляра VPN имеют публичный IP-адрес A-Server / 32 в разрешенных подсетях слева и справа, где это возможно.
Следование правилам NAT в экземпляре A-VPN, похоже, не работает, и я не уверен, неправильно ли я их использую или как отлаживать дальше.
iptables -t nat -A POSTROUTING -s <A-Server PRIVATE IP>/32 -d <B-Server PRIVATE IP>/32 -j SNAT --to-source <A-Server PUBLIC IP>
iptables -t nat -A PREROUTING -s <B-Server PRIVATE IP>/32 -d <A-Server PUBLIC IP>/32 -j DNAT --to-destination <A-Server PRIVATE IP>
Текущие правила A-VPN:
# iptables-save
# Generated by iptables-save v1.4.21 on Fri Feb 15 11:12:15 2019
*nat
:PREROUTING ACCEPT [2:168]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [21:1848]
:POSTROUTING ACCEPT [23:2016]
-A PREROUTING -s 172.31.24.75/32 -d <A-Server PUBLIC IP>/32 -j DNAT --to-destination 10.0.10.15
-A POSTROUTING -s 10.0.0.34/32 -d 172.31.24.75/32 -j SNAT --to-source <A-Server PUBLIC IP>
COMMIT
# Completed on Fri Feb 15 11:12:15 2019
# Generated by iptables-save v1.4.21 on Fri Feb 15 11:12:15 2019
*filter
:INPUT ACCEPT [104381:64450743]
:FORWARD ACCEPT [189:13956]
:OUTPUT ACCEPT [89586:3506732]
COMMIT
# Completed on Fri Feb 15 11:12:15 2019
После некоторого чтения и поддержки мне удалось решить проблему.
Предпринятые шаги:
<unallocated EIP>
в левые подсети файла A-VPN .conf.<unallocated EIP>
-j DNAT - пункт назначения <A-Server PRIVATE IP>
<B-Server PRIVATE IP>
-j SNAT - к источнику <unallocated EIP>
<unallocated EIP>
в правые подсети файла B-VPN .conf.<unallocated EIP>
пройти через B-VPN.На этом этапе tcpdump на всех машинах показывает правильную маршрутизацию и перезапись IP на всех машинах при пинге с B-сервера на A-Server через общедоступный IP-адрес. <unallocated EIP>