Я настроил сеть OpenVPN 10.8.0.0/24 (сеть A), работающую в Azure. IP-адрес виртуальной машины Linux - 10.1.0.4 в сети 10.1.0.0/24 в Azure (сеть B). Я также настроил маршрутизатор как клиент OpenVPN с собственной подсетью 192.168.1.0/24 (сеть C).
В Azure есть виртуальная машина Windows Server с IP 10.1.0.5. На удаленном роутере есть устройство с ip 192.168.1.223.
Итак, чтобы подвести итог, у меня есть эти сети:
И эти устройства:
Я настроил таблицы маршрутизации, чтобы устройство на IP 192.168.1.223 и виртуальная машина Windows Server на IP 10.1.0.5 могли взаимодействовать друг с другом. Это отлично работает.
Проблема возникает, когда я хочу отправить ловушки SNMP (UDP 162) с устройства на виртуальную машину Windows Server. Пакеты принимаются с исходным IP-адресом 10.8.0.3 (IP-адрес маршрутизатора в сети OpenVPN). Я хочу, чтобы пакеты SNMP приходили с исходным IP-адресом с устройства 192.168.1.223, которое является их фактическим источником.
Возможно ли это, используя некоторый набор правил POSTROUTING или конфигурацию в файле client.conf удаленного маршрутизатора?
Я смог решить эту проблему, просмотрев конфигурацию маршрутизатора. Я использую маршрутизатор Teltonika RT950, который основан на Linux и имеет встроенные правила трафика, позволяющие настраивать Source NAT, а также отличную поддержку OpenVPN.
Добавив правило для назначения IP-адреса SNAT 192.168.1.223 UDP-пакетам на порту 162, идущим из LAN в VPN (конфигурация клиента OpenVPN отображается как отдельная зона в маршрутизаторе), для пакетов, полученных Windows Server, теперь установлен IP-адрес источника. 192.168.1.223.