Недавно я столкнулся с проблемой при настройке OpenVPN. Я могу подключиться к VPN-серверу и получить доступ к машинам, подключенным к локальной сети, но некоторые пакеты не могут найти свой путь обратно к устройствам за VPN.
Я запускаю приложение Java, которое действует как прокси-сервер и находится в той же локальной сети, что и (Linux) машина, на которой размещен VPN-сервер. Это приложение отправляет и получает различные пакеты на разных портах для мобильных приложений. Отправка пакета с телефона (подключенного к VPN) в приложение Java работает нормально, но при попытке отправить пакет обратно на телефон пакет не достигает места назначения. Он возвращается к машине, на которой размещен VPN-сервер, но никогда не достигает мобильного устройства, подключенного к VPN. Чтобы сделать проблему более проблемной c, некоторые пакеты проходят (SIP-пакеты на порту 35555, в то время как другие UDP-пакеты на порту 50000 не могут быть направлены обратно на устройство).
Вот файл конфигурации сервера (ключи удалены):
dev tun
proto udp
port 1194
topology subnet
server 10.8.0.0 255.255.255.0
push "dhcp-option DNS 192.168.0.1"
push "route 192.168.0.0 255.255.255.0"
client-to-client
keepalive 1800 3600
remote-cert-tls client
tls-version-min 1.2
tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0
И это базовый сценарий c:
Это работает (SIP-пакеты идут туда-сюда)
И это не так (UDP-пакеты поступают на компьютер, на котором размещено приложение Java, он отвечает другим пакетом, но пакет не достигает телефона)
192.168.0.102 - Linux машина с хостом VPN-сервера
192.168.0.105 - Linux машина с приложением Java
10.8.0.2 - Мобильный адрес с использованием VPN
И у меня это в iptables на Linux машине, на которой размещен VPN-сервер (пришлось добавить его, чтобы VPN-клиент мог получить доступ к машинам внутри локальной сети):
У меня нет большого опыта работы с настройкой VPN или сетью, поэтому я здесь не хватает чего-то очевидного.
Любая помощь будет принята.