Я пытаюсь настроить тестовую настройку VPN для маршрутизации эхо-запросов на общедоступный IP-адрес экземпляра. Корпоративный поставщик, к которому мы подключаемся, зарезервировал все личное пространство на своей стороне. Я не уверен, какие правила NAT мне нужны, чтобы получать трафик от экземпляра VPN-маршрутизатора на нашей стороне для пересылки трафика соответствующему экземпляру за ним на основе его публичного адреса, а не частного.
У меня есть топология вроде
A- Сервер <-> A-VPN <--internet-> B-VPN <-> B-Server.
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
После некоторого чтения и поддержки мне удалось решить проблему.
Предпринятые шаги:
к левым подсетям файла A-VPN .conf. <нераспределенный EIP>
-j DNAT --to-destination <ЧАСТНЫЙ IP-адрес A-сервера>
<ЧАСТНЫЙ IP-адрес B-сервера>
-j SNAT --to-source <нераспределенный EIP>
<нераспределенный EIP>
в правые подсети файла B-VPN .conf. <нераспределенный EIP>
для прохождения через B-VPN. В этот момент tcpdump на всех машинах показывает правильную маршрутизацию и перезапись IP на всех машинах при эхо-запросе с B-сервера на A-сервер через общедоступный IP-адрес <нераспределенный EIP>