Hem TCP hem de UDP bağlantı noktalarını dinlemek için OpenVPN nasıl yapılır


13

Etrafımda aradım ve bulduğum tek şey, "evet, OpenVPN TCP üzerinden bağlantıları destekliyor" , ancak aynı anda her iki protokol için aynı bağlantı noktasını dinlemek için openvpn sunucusunu zorlamak için herhangi bir yol bulamadım . Dokunma arayüzleri oluşturma veya aynı yapılandırmaya aynı anda çalışan sunucunun başka bir örneğine sahip olma konusunda bazı çok eski kılavuzlar buldum . Birincisi basit bir şey için çok karmaşık görünüyor ve daha sonra eskimiş görünüyor.

Yanıtlar:


11

Aynı openvpn işlemi UDP ve TCP soketlerini aynı anda dinleyemez.

İki iyi seçeneğiniz var:

  1. openvpn için iki kademe arayüzü kullanın. Her bir dokunma arabirimi için bir tane olmak üzere iki openvpn sunucusu işlemi yapın; biri UDP'yi, diğeri TCP'yi dinlemelidir. Bu iki dokunma arabirimini sunucuda köprü haline getirin.

  2. iki ayar arayüzü kullanın. Bunlar köprülenemez, bu nedenle IP alanını TCP ve UDP istemcileri arasında paylaşmak istiyorsanız learn-address, http://thomas.gouverneur.name/2014/02/openvpn- adresindeki gibi bir komut dosyası kullanmanız gerekir. tun-on-tcp-ve-udp-with-tun / (ancak, bu belirli komut dosyası / tmp symlink saldırısına karşı savunmasızdır, bu nedenle kullanıyorsanız / tmp günlüğünü kaldırın).

Üçüncü seçenek, yalnızca iki openvpn örneği çalıştırmak ve her ikisine de ayrı istemci IP alanı atamaktır (örneğin, her biri aynı / 24 alt ağdan bir / 25). Bu, köprülemeyi ve bir öğrenme adresi betiği ihtiyacını önler.

EDIT: böyle bir öğrenme adresi betiğe ihtiyacım olduğu için bir tane yazdım. Bunu kamusal alana yerleştiriyorum.

#!/bin/sh
#
# This script allows an openvpn server with several openvpn instances that
# use tun interfaces to share client IP space by adjusting the routing table
# to create entries towards specific clients as needed

action="$1"
addr="$2"
cn="$3" # not used, but it's there; you could e.g. log it

case "$action" in
        add)
                echo "sudo ip ro add $addr/32 dev $dev" >&2
                exec sudo ip ro add $addr/32 dev $dev
                ;;
        delete)
                echo "sudo ip ro del $addr/32 dev $dev" >&2
                sudo ip ro del $addr/32
                exit 0 # ignore errors
                ;;
        update)
                echo "sudo ip ro change $addr/32 dev $dev" >&2
                exec sudo ip ro change $addr/32 dev $dev
                ;;
esac

Bu komut dosyası, openvpn günlüğüne bitmesi gereken stderr'a oturum açar.


4

OpenVPN sunucunuzun UDP bağlantı noktası yerine bir TCP bağlantı noktasını dinlemesini istiyorsanız proto tcp, proto udp(OpenVPN'in hem UDP hem de TCP bağlantı noktasını dinlemesini istiyorsanız, iki ayrı OpenVPN örneği çalıştırmanız gerekir) yerine kullanın.

Bu sayfa eski mi demek istiyorsun?

Sanırım iki OpenVPN sunucusu (biri TCP, diğeri UDP için) çalıştırabilir ve her birini bir TUN ile bağlayabilir ve ardından TUN'ları bağlayabilirsiniz.


1
tunarabirimlerin bir MAC katmanı yoktur ve bu nedenle bir köprünün üyesi olamazlar. Köprüleme yapmak istiyorsanız, taparayüzler kullanmanız gerekir .
András Korn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.