एक ही Openvpn प्रक्रिया एक ही समय में UDP और TCP सॉकेट पर नहीं सुन सकती है।
आपके पास दो अच्छे विकल्प हैं:
Openvpn के लिए दो टैप इंटरफेस का उपयोग करें। दो ओपनवीएनपी सर्वर प्रक्रियाएं करें, प्रत्येक टैप इंटरफ़ेस के लिए एक; एक को UDP पर सुनना चाहिए, दूसरा TCP पर। सर्वर पर इन दो टैप इंटरफेस को ब्रिज करें।
दो ट्यून इंटरफेस का उपयोग करें। इन पर पाबंदी नहीं लगाई जा सकती, इसलिए यदि आप टीसीपी और यूडीपी ग्राहकों के बीच आईपी स्थान साझा करना चाहते हैं, तो आपको http://thomas.gouverneur.name/2014/02/openvpn-learn-address
पर एक स्क्रिप्ट का उपयोग करने की आवश्यकता होगी सुनिए-ऑन-tcp-and-udp-with-tun / (हालाँकि, यह विशिष्ट स्क्रिप्ट a / tmp symlink हमले के लिए असुरक्षित है, इसलिए यदि आप इसका उपयोग करते हैं तो लॉगिंग / tmp को हटा दें)।
तीसरा विकल्प सिर्फ दो ओपनवैप इंस्टेंस को चलाना है और दोनों के लिए अलग क्लाइंट आईपी स्पेस असाइन करना है (उदाहरण के लिए, एक ही / 25 एक ही / 24 सबनेट से)। यह ब्रिजिंग और सीखने-पता स्क्रिप्ट की आवश्यकता से बचा जाता है।
संपादित करें: जब से मुझे इस तरह की सीख-पता की स्क्रिप्ट की आवश्यकता थी, मैंने एक लिखा। मैं इसे पब्लिक डोमेन में रखता हूं।
#!/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
यह स्क्रिप्ट स्टैडर में लॉग इन करता है, जिसे ओपनवीएनएन लॉग में समाप्त होना चाहिए।
tun
इंटरफेस में MAC लेयर नहीं होती है और इस तरह यह एक ब्रिज का सदस्य नहीं हो सकता है। यदि आप ब्रिजिंग चाहते हैं, तो आपकोtap
इंटरफेस का उपयोग करने की आवश्यकता है ।