Aynı openvpn işlemi UDP ve TCP soketlerini aynı anda dinleyemez.
İki iyi seçeneğiniz var:
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.
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.
tun
arabirimlerin bir MAC katmanı yoktur ve bu nedenle bir köprünün üyesi olamazlar. Köprüleme yapmak istiyorsanız,tap
arayüzler kullanmanız gerekir .