Я ищу решение «туннелирование приложений», которое ведет себя аналогично туннелю ssl или ssh, но через UDP. На стороне клиента OpenVPN предоставляет сетевой интерфейс. Я хочу, чтобы клиентская сторона просто слушала локальный порт и перенаправляла весь этот трафик через установленный туннель.
ПРИМЕЧАНИЕ: я использовал термин туннелирование приложений чтобы описать, как ведет себя туннелирование ssh и как ведет себя OpenVPN. С помощью ssh-туннеля сетевое приложение подключается к localhost: 12345. С OpenVPN сетевое приложение общается с удаленным IP-адресом, доступ к которому осуществляется через интерфейс tun. OpenVPN требует поддержки в ядре интерфейса tun / tap, модель туннеля приложения - нет. Если кто-то знает правильный термин для этого, дайте мне знать в комментариях.
OpenVPN можно использовать в конфигурации VPN типа "сеть-сеть". pfSense имеет самую простую реализацию из всех, что я видел; блок pfSense на одном конце действует как «сервер», а другой настроен как «клиент», но я помещаю их в «qoutes», потому что не имеет значения, на каком конце находятся другие хосты в сетях на каждом конец.
Если не настроено иное, OpenVPN по умолчанию использует порт UDP (1194).
Если вы ищете двусторонний обход nat без переадресации портов, промежуточных серверов, спуфинга или взлома DNS, вы можете посмотреть pwnat, на основе udptunnel. Пока не испортил, но выглядит очень интересно.
Я думаю ты ищешь Безопасность на транспортном уровне дейтаграмм. По сути, это SSL / TLS, но немного изменен, чтобы работать через UDP. Это примерно то же самое, что OpenVPN использует для своего шифрования, за исключением того, что OpenVPN предшествует DTLS, поэтому детали реализации, вероятно, несколько отличаются, но не сильно.
К счастью, новые выпуски продуктов, таких как OpenSSL, уже поддерживают DTLS, так что тяжелая работа была сделана за вас.