डेबियन मशीन पर मुझे ओपन वीपीएन सर्वर से कनेक्ट करने में समस्या आ रही थी।
कनेक्शन स्थापित किया जा सकता है, केवल इस अर्थ में कि एक इंटरफ़ेस जोड़ा जाएगा और मुझे इसके लिए एक 10.130.xx आईपी सौंपा जाएगा, लेकिन मुझे वीपीएन के पार कोई ट्रैफ़िक नहीं मिल सकता है। सभी ट्रैफ़िक अभी भी मेरे मूल सार्वजनिक IP पते पर जाएंगे:
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
92.222.32.42
root@vps2:~# service openvpn start
[ ok ] Starting virtual private network daemon: myvpn.
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.130.3.137 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
92.222.32.42
root@vps2:~#
मेरे syslog में मैं संदेश देख पा रहा था NOTE: unable to redirect default gateway -- Cannot read current default gateway from system
। और कुछ खोज ने मुझे यह खोजने के लिए प्रेरित किया कि यह इसलिए था क्योंकि डिफ़ॉल्ट गेटवे स्पष्ट रूप से सेट नहीं किया गया था। मुझे लगता है कि दूरस्थ वीपीएन कुछ प्रकार की क्लाइंट स्क्रिप्ट का उपयोग कर रहा है जो स्पष्ट रूप से डिफ़ॉल्ट गेटवे सेट को खोजने की अपेक्षा नहीं करता है।
मैंने अपने डिफ़ॉल्ट गेटवे को स्पष्ट रूप से सेट करने के 2 तरीके आज़माए हैं। और दोनों काम करते हैं !
पहले मैंने अपना मूल सार्वजनिक IP पता डिफ़ॉल्ट गेटवे के रूप में सेट करने का प्रयास किया, जिसने काम किया:
route add default gw 92.222.32.42
root@vps2:~# route add default gw 92.222.32.42
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 92.222.32.42 0.0.0.0 UG 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~# service openvpn start
[ ok ] Starting virtual private network daemon: myvpn.
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
217.23.15.239
root@vps2:~#
लेकिन मेरे मूल सार्वजनिक आईपी को डिफ़ॉल्ट गेटवे के रूप में क्यों उपयोग करें? मुझे नहीं पता। इसलिए मैंने डिफ़ॉल्ट गेटवे के रूप में एक यादृच्छिक अनुरेखक से पहला हॉप सेट करके भी इसे आज़माया। एएनडी ने भी काम किया:
root@vps2:~# traceroute foo.com
traceroute to foo.com (121.232.122.233), 30 hops max, 60 byte packets
1 49.ip-92-222-50.eu (92.222.50.49) 0.039 ms 0.011 ms 0.012 ms
2 [......... I stop the traceroute when I see the first hop]
^C
root@vps2:~# route add default gw 92.222.50.49
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 92.222.50.49 0.0.0.0 UG 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~# service openvpn start
[ ok ] Starting virtual private network daemon: myvpn.
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
217.23.15.239
root@vps2:~#
हुर्रे! मुझे यह अपने दम पर मिला।
अब VPN से कनेक्ट करने के बाद, रूटिंग अपने आप बदल जाती है। यह अच्छा है और सभी है, लेकिन अब मैं अपने मूल सार्वजनिक आईपी पते के माध्यम से सभी कनेक्टिविटी खो देता हूं और मेरा एसएसएच कनेक्शन गिर जाता है, मेरा वेब सर्वर अब उपलब्ध नहीं है और यहां तक कि अन्य सेवाएं भी प्रदान करता है। मुझे लगता है कि यह इसलिए है क्योंकि आने वाले सभी कनेक्शनों की अब वीपीएन पर प्रतिक्रिया हो रही है। मैं बहुत सारे कनेक्शन देखूंगा जो मेरे मूल सार्वजनिक आईपी के माध्यम से आते हैं, उसी आईपी से प्रतिक्रियाएं प्राप्त करने के लिए। और वीपीएन का उपयोग केवल उन कनेक्शनों के लिए किया जाता है जो मेरा सर्वर बाहरी दुनिया की ओर शुरू करता है। मैंने अभी तक इस भाग का पता नहीं लगाया है।
वीपीएन से जुड़ने के बाद मेरी रूटिंग इस तरह दिखती है:
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.130.0.1 10.130.3.73 255.255.255.255 UGH 0 0 0 tun0
10.130.3.73 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
217.23.15.239 92.222.32.42 255.255.255.255 UGH 0 0 0 venet0
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 10.130.3.73 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.130.3.73 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 92.222.32.42 0.0.0.0 UG 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~#
तो मेरे सवाल हैं:
मुझे अपने डिफ़ॉल्ट गेटवे के रूप में क्या उपयोग करना चाहिए, क्योंकि दोनों विधियों ने काम किया है? मेरा मूल सार्वजनिक आईपी या अनुरेखक में पहला हॉप? या कुछ और भी पूरी तरह से अलग?
मैं इसे कैसे स्वचालित कर सकता हूं, इसलिए बूट करते समय गेटवे स्वचालित रूप से सेट हो जाता है? मेरा मतलब है कि अगर मैं एक डिफ़ॉल्ट गेटवे सेट को बूट करता हूं, तो सर्वर चेक करता है, और अगर नहीं तो यह मेरे सार्वजनिक आईपी या ट्रैसरआउट की पहली आशा को डिफ़ॉल्ट गेटवे के रूप में रखेगा ...
और आखिरकार ओपन वीपीएन से कनेक्ट होने के बाद, मैं मूल सार्वजनिक आईपी पते के माध्यम से कनेक्टिविटी को खोने से कैसे रोक सकता हूं, लेकिन फिर भी सभी आउटगोइंग कनेक्शन वीपीएन का उपयोग करते हैं?