डुएल-स्टैक सिस्टम पर नेटवर्क मैनेजर का उपयोग करते हुए OpenVPN सर्वर से कनेक्ट करते समय IPv6 को कैसे निष्क्रिय करें?


20

मैं एक दोहरी स्टैक पर OpenVPN नेटवर्क प्रबंधक प्लगइन के माध्यम से OpenVPN क्लाइंट का उपयोग कर रहा हूं (मतलब IPv4 और IPv6 कनेक्टिविटी दोनों के लिए कॉन्फ़िगर किया गया) Ubuntu 13.10 वीपीएन (रीडायरेक्ट-गेटवे) के माध्यम से सभी ट्रैफ़िक को रीडायरेक्ट करने के लिए। यह आम तौर पर ठीक काम करता है।

हालांकि, इस तथ्य के कारण कि आईपीवी 6 सिस्टम द्वारा पसंद किया जाता है, वीपीएन "लीक" और जब आईपीवी 6 (जैसे Google, या विकिपीडिया) पर उपलब्ध साइटों से कनेक्ट होता है, तो ब्राउज़र सीधे कनेक्ट होता है।

IPv6 कनेक्टिविटी प्रदान करने के लिए OpenVPN सर्वर को कॉन्फ़िगर करने के लिए एक समाधान होगा। OpenVPN के साथ संभव है, नेटवर्क प्रबंधक के लिए प्लगइन वर्तमान में इसका समर्थन नहीं करता है।

चूंकि VPN पर IPv6 कनेक्टिविटी सख्ती से आवश्यक नहीं है, मैं OpenVPN सर्वर से कनेक्ट होने पर केवल क्लाइंट पर IPv6 को अक्षम करना चाहूंगा। क्या यह संभव है? यदि हां, तो मैं यह कैसे कर सकता हूं?


1
आपका वीपीएन IPv6 ट्रैफ़िक भी नहीं ले रहा है?
माइकल हैम्पटन


मेरा वीपीएन अच्छी तरह से IPv6 ट्रैफ़िक ले जा सकता है, लेकिन नेटवर्क प्रबंधक IPV6 कॉन्फ़िगरेशन का वर्तमान में OpenVPN के लिए समर्थन नहीं करता है जहाँ तक मैं बता सकता हूँ।
दमन टर्मिनल

1
बस रिकॉर्ड के लिए, यदि आपका वीपीएन प्रदाता इस तरह से लीक हो रहा है, तो आपको एक नए प्रदाता की आवश्यकता है। उनमें से बहुत सारे हैं जिन्हें यह अधिकार प्राप्त है। IPv6 दूर नहीं जा रहा है, और इसे अक्षम करना केवल आपको इंटरनेट के कुछ हिस्सों से काट देने वाला है।
माइकल हैम्पटन

1
@Michael Hampton, दुर्भाग्य से, यह मेरा सर्वर है। मैं इस मामले में प्रदाता हूं। यह IPv6 का समर्थन करता है, लेकिन केवल एक / 64 के साथ आता है, इसलिए मुझे पहले इसे अलग करने की आवश्यकता होगी जो थोड़ा दर्द होता है। इससे भी महत्वपूर्ण बात (उस समय, जब से मैंने जाँच नहीं की है) नेटवर्क मैनेजर को IPv6- इनेबल्ड OpenVPN कनेक्शन को संभालने में कुछ परेशानी हुई (IPv6, VPN पर टैप और ब्रिजित नेटवर्क सेटअप के साथ काम करता है, जो कि मैं अभी उपयोग करता हूं)।
डेमन टर्मिनल

जवाबों:


15

IPv6 को पूरी तरह से निष्क्रिय करने के लिए इसे अपने बूट लोडर में अपनी कर्नेल लाइन में जोड़ें :

ipv6.disable=1

यदि आप ग्रब का उपयोग कर रहे हैं (यदि आपने अपना बूट-लोडर स्थापित नहीं किया है, तो आप ग्रब का उपयोग कर रहे हैं), आपकी कर्नेल लाइन कुछ इस तरह दिखनी चाहिए:

linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff ipv6.disable=1

अनुशंसित लाइन को कर्नेल लाइन में कुछ जोड़ने के लिए, फ़ाइल GRUB_CMDLINE_LINUX_DEFAULTमें वांछित कर्नेल पैरामीटर को चर में जोड़ना है /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"

एक बार आपने उसे जोड़ दिया /etc/default/grub, तो अपने पुनर्जीवित करने के लिए निम्न कमांड चलाएं grub.cfg:

sudo grub-mkconfig -o /boot/grub/grub.cfg

वैकल्पिक रूप से, ipv6.disable_ipv6=1इसके बजाय जोड़ने से IPv6 स्टैक क्रियाशील रहेगा लेकिन आपके किसी भी नेटवर्क डिवाइस को IPv6 एड्रेस असाइन नहीं करेगा।

या

IPv6 को sysctl के माध्यम से निष्क्रिय करने के लिए, अपनी /etc/sysctl.confफाइल में निम्नलिखित को रखें :

net.ipv6.conf.all.disable_ipv6 = 1

अपनी /etc/hostsफ़ाइल में किसी भी IPv6 होस्ट की टिप्पणी करना न भूलें :

#::1        localhost.localdomain   localhost

ध्यान दें

एक रिबूट sysctl विधि के लिए आवश्यक हो सकता है, और एक रिबूट है निश्चित रूप से गिरी लाइन दृष्टिकोण के लिए की आवश्यकता है।

या

IPv6 को अस्थायी रूप से अक्षम करने के लिए :

sysctl -w net.ipv6.conf.all.disable_ipv6 = 1

इसे अस्थायी रूप से सक्षम करने के लिए:

sysctl -w net.ipv6.conf.all.disable_ipv6 = 0

इसलिए अगर आपको किसी दिए गए शर्त पर ipv6 को निष्क्रिय करने की आवश्यकता है , तो इन पंक्तियों के साथ कहीं भी एक bash स्क्रिप्ट लिखें:

#!/bin/bash
ipv6_disabled="$(sysctl net.ipv6.conf.all.disable_ipv6 | awk '{print $NF}')"
if (connected_to_vpn &> /dev/null); then
  (($ipv6_disabled)) || sysctl -w net.ipv6.conf.all.disable_ipv6=1
else
  (($ipv6_disabled)) && sysctl -w net.ipv6.conf.all.disable_ipv6=0
fi

ध्यान दें

आपको /etc/hostsइस विधि के लिए अपनी फ़ाइल में किसी भी ipv6 होस्ट को निष्क्रिय करने की आवश्यकता हो सकती है, जैसा कि मैंने पिछली विधि में सुझाया था।


5
हाँ ठीक है। लेकिन मैं नेटवर्क मैनेजर का उपयोग करके वीपीएन से कनेक्ट करते समय आईपीवी 6 को अक्षम करना चाहता हूं, न कि इसे पूरी तरह से मेरे सिस्टम पर मारता हूं। शायद मुझे इसे स्पष्ट करना चाहिए था।
डेमन टर्मिनल

@DamnTerminal, इसलिए आप इसे केवल तब अक्षम करना चाहते हैं जब आप अपने VPN से कनेक्ट हों, क्योंकि इसे अक्षम करने में सिस्टम-वाइड ठीक है, जब तक कि यह केवल तब होता है जब आप अपने VPN से कनेक्ट होते हैं?
अलेक्सज मगुरा

@DamnTerminal मैंने अपने जवाब को अपडेट किया कि कैसे bash स्क्रिप्ट का उपयोग करके ipv6 को अक्षम किया जाए जो एक शर्त की जांच करेगा। आप शायद NetworkManager के कमांड-लाइन इंटरफ़ेस का उपयोग कर सकते हैं: nmcliयह जांचने के लिए कि क्या आपका वीपीएन से जुड़ा है; यदि वह काम नहीं करता है, तो मुझे यकीन है कि वहाँ एक कमांड लाइन नेट उपयोगिता है जो उस जानकारी तक पहुंच प्रदान करेगा।
एलेक्सी मगुर

क्यों होता है पतन?
एलेक्सेज मगुरा

दुर्भाग्य से यह समाधान ( sysctl) ठीक से वाईफाई के लिए आईपीवी 6 को सक्षम नहीं करता है। इसे सक्षम करने के लिए आपको एक्सेस पॉइंट को फिर से कनेक्ट करना होगा।
इगोर मिकुश्किन

5

आप IPv6 विकल्प ipv6.method "को" सेट करके एक विशिष्ट नेटवर्क प्रबंधक कनेक्शन के लिए क्लाइंट स्तर पर ipv6 को अक्षम कर सकते हैं

// SOP: FIXED IP 192.168.0.95 का उपयोग कर ईथरनेट पर मेरे LAN कनेक्शन को फिर से बनाएँ। `` ``

nmcli connection delete lan-ethernet
nmcli connection add con-name lan-ethernet \
    ifname enp0s31f6 \
    type ethernet \
    ip4 192.168.0.95/24  gw4 192.168.0.1

nmcli connection modify lan-ethernet  ipv6.method "ignore"
nmcli connection modify lan-ethernet  ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection up lan-ethernet
sleep 1
nmcli device status
nmcli connection show
ifconfig enp0s31f6

`` ``


1
दुर्भाग्य से वीपीएन कनेक्शन के लिए इसका कोई प्रभाव नहीं है।
इगोर मिकुश्किन

0

मैं Ubuntu 16.04.03 LTS पर हूं, PiVPN के माध्यम से एक पाई-होल सर्वर से जुड़ रहा हूं।

नेटवर्क मैनेजर के माध्यम से वीपीएन से कनेक्ट करने पर मैंने IPv6 को स्वचालित रूप से चालू और बंद करने के लिए यही किया है:

  1. इसमें एक स्क्रिप्ट बनाएं /etc/NetworkManager/dispatcher.d:

    $ sudo vi /etc/NetworkManager/dispatcher.d/99vpn-ipv6-switch
    
  2. फ़ाइल में निम्न सामग्री जोड़ें (अपनी आवश्यकताओं के लिए सामग्री संशोधित करें):

    #!/bin/sh
    # Network Manager Dispatcher Hook:
    # enables/disables ipv6 on vpn-down/vpn-up respectively
    #
    # Copyright (c) 2017 ooknosi
    # Apache License 2.0
    
    # Args
    INTERFACE="$1"
    ACTION="$2"
    
    case $ACTION in
        vpn-up)
        # vpn connected; disable ipv6
        sysctl -w net.ipv6.conf.all.disable_ipv6=1
        ### UNCOMMENT AND EDIT BELOW IF NECESSARY
        ## add pi-hole nameserver
        #echo -n "nameserver 192.168.1.1" | /sbin/resolvconf -a "tun0.openvpn"
        ### UNCOMMENT AND EDIT ABOVE IF NECESSARY
        ;;
    
        vpn-down)
        # vpn disconnected; enable ipv6
        sysctl -w net.ipv6.conf.all.disable_ipv6=0
        ### UNCOMMENT AND EDIT BELOW IF NECESSARY
        ## remove pi-hole nameserver
        #/sbin/resolvconf -d "tun0.openvpn"
        ### UNCOMMENT AND EDIT ABOVE IF NECESSARY
        ;;
    esac
    
    exit 0
    
  3. स्क्रिप्ट को निष्पादन योग्य बनाएं:

    $ sudo chmod 755 /etc/NetworkManager/dispatcher.d/99vpn-ipv6-switch
    

बस। मुझे dnsmasqबग के कारण अपने पाई-होल डीएनएस को मैन्युअल रूप से जोड़ना पड़ा resolv.conf, जो सही ढंग से अपडेट होने से रोकता है, इसलिए यदि आप अपनी डीएनएस लीकिंग पाते हैं तो संकेतित लाइनों को संशोधित करें।


दुर्भाग्य से यह समाधान वाईफाई के लिए IPv6 को ठीक से पुन: सक्षम नहीं करता है। इसे सक्षम करने के लिए आपको एक्सेस पॉइंट को फिर से कनेक्ट करना होगा।
बजे इगोर मिकुश्किन

0

मुझे लगता है कि क्लाइंट फ़ाइल में ip6 को अक्षम करने के लिए कम घुसपैठ है (क्लाइंट_कानफिल / एडिलेव को संपादित करें) जो कर्नेल टीसीपी स्टैक को संशोधित करता है।

अपना conf_file.ovpn खोलें और फॉलो लाइन्स जोड़ें:

#disable ipv6
#https://community.openvpn.net/openvpn/ticket/849
pull-filter ignore "ifconfig-ipv6 "
pull-filter ignore "route-ipv6 "

मैंने इसे आजमाया और इसके बाद ipv6 गायब हो गया।

इससे पहले कि। मैं चलाता हूं ip a |grep globalऔर परिणाम है:

    inet 192.168.43.39/24 brd 192.168.43.255 scope global dynamic noprefixroute wlan0
    inet 10.8.0.6/24 brd 10.8.0.255 scope global tun0
    inet6 2a00:1630:66:16::1004/64 scope global

बाद। मैं चलाता हूं ip a |grep globalऔर परिणाम है:

    inet 192.168.1.14/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
    inet 10.8.0.7/24 brd 10.8.0.255 scope global tun0

0

NetworkManager में OpenVPN प्रोफ़ाइल संपादित करें, IPv6 टैब खोलें और मैन्युअल रूप से एक मार्ग जोड़ें:

पता: २००० उपसर्ग: ३ गेटवे: ०१०० :: १

2000 :: / 3 सभी सार्वजनिक रूप से निष्क्रिय IPv6 पतों को कैप्चर करता है। 0100 :: / 64 उपसर्ग ट्रैफ़िक को छोड़ने के लिए निर्दिष्ट एक विशेष उपसर्ग है। अनिवार्य रूप से आप सभी IPv6 ट्रैफ़िक को एक गेटवे पर भेजेंगे जो मौजूद नहीं है।

अपसाइड: आसान और पूरी तरह से स्वचालित।

डाउनसाइड: कुछ एप्स, अर्थात् कमांड-लाइन टूल्स, IPv4 पर जल्दी से वापस नहीं आ सकते हैं क्योंकि यह तरीका तब इस्तेमाल किया जाता है जब यह तरीका इस्तेमाल किया जाता है।


0

मैं OpenVPN सर्वर से कनेक्ट करते समय क्लाइंट पर IPv6 को निष्क्रिय करना चाहता हूं। क्या यह संभव है?

मेरी सीधी-सादी पटकथा को आज़माएँ, अभी-अभी मैंने इसे बनाया है,

  • पूरे इंटरफेस के साथ सौदा।
  • OpenVPN चालू होने पर IPv6 को अक्षम करें।
  • OpenVPN समाप्त होने पर ipv6 सक्षम करें।
  • NetworkManager तर्क के साथ बेहतर संगतता।

यदि कुछ इंटरफेस पर अभी भी ipv6 पता है, तो क्लाइंट अभी भी ipv6 रूटिंग की कोशिश करता है, लेकिन जैसा कि DNS UDP का उपयोग करता है, DNS लीक की संभावना है कि TCPwrapper निष्क्रिय करने का प्रबंधन नहीं कर सकता है।

यह स्क्रिप्ट अन्य इंटरफेस के साथ भी अच्छी तरह से काम करती है क्योंकि यह NetworkManager के तर्क पर अब निर्भर नहीं करती है, जैसे vpn-up vpn-down।

/etc/NetworkManager/dispatcher.d/ में एक निष्पादन योग्य फ़ाइल बनाएं

sudo vim /etc/NetworkManager/dispatcher.d/v6d

नीचे दिए गए कोड को पेस्ट करें

#!/bin/bash
IF=$1
STATUS=$2
if [ "$IF" = "tun0" ];
then
case "$2" in
up)
for v6 in $(sysctl -a |grep ipv6|grep disable|sed 's/ \= 0/=1/'); do
sysctl -w $v6
done
;;
down)
for v6 in $(sysctl -a |grep ipv6|grep disable|sed 's/ \= 1/\=0/'); do
sysctl -w $v6
done
;;
esac
fi

फिर इसे निष्पादन योग्य बनाएं

sudo vim /etc/NetworkManager/dispatcher.d/v6d

नेटवर्क मैनेजर के साथ PS OpenVPN कमांड लाइन संस्करणों से बहुत सारे OpenVPN लाभ विकल्प खो देता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.