Çift yığınlı bir sistemde Ağ Yöneticisi'ni kullanarak bir OpenVPN sunucusuna bağlanırken IPv6 nasıl devre dışı bırakılır?


20

OpenVPN istemcisini OpenVPN Ağ Yöneticisi eklentisi üzerinden çift yığın üzerinde kullanıyorum (yani hem IPv4 hem IPv6 bağlantısı için yapılandırılmış anlamında) Ubuntu 13.10, VPN (yönlendirme-ağ geçidi) üzerinden tüm trafiği yönlendirmek için. Genelde iyi çalışıyor.

Bununla birlikte, IPv6'nın sistem tarafından tercih edilmesinden dolayı VPN "sızıntı yapar" ve IPv6 üzerinden de kullanılabilen sitelere (Google veya Wikipedia gibi) bağlanırken, tarayıcı doğrudan bağlanır.

Çözümlerden biri, OpenVPN sunucusunu IPv6 bağlantısı sağlayacak şekilde yapılandırmak olacaktır. OpenVPN ile mümkün olsa da, Network Manager eklentisi şu anda desteklememektedir.

VPN üzerinden IPv6 bağlantısı kesinlikle gerekli olmadığından , OpenVPN sunucusuna bağlanırken istemcideki IPv6'yı devre dışı bırakmak istiyorum. Mümkün mü? Eğer öyleyse, nasıl yapabilirim?


1
VPN'iniz IPv6 trafiğini de taşımıyor mu?
Michael Hampton


VPN'im IPv6 trafiğini taşıyor olabilir, ancak Network Manager şu anda OpenVPN için söyleyebileceğim kadarıyla IPv6 yapılandırmasını desteklemiyor.
Lanet Terminal

1
Sadece kayıt için, VPN sağlayıcınız bu şekilde sızdırıyorsa, yeni bir sağlayıcıya ihtiyacınız vardır. Bunu doğru yapan birçok kişi var. IPv6 uzaklaşmıyor ve devre dışı bırakmak sizi yalnızca İnternet bölümlerinden kesecek.
Michael Hampton,

1
@ MichaelHampton Ne yazık ki, bu benim sunucum. Bu durumda sağlayıcı benim. IPv6'yı destekliyor, ancak yalnızca bir / 64 ile geliyor, bu yüzden önce biraz acı verici bir şekilde eklemem gerekecek. Daha da önemlisi (o zamandan beri kontrol etmedim) ağ yöneticisinin IPv6 etkin OpenVPN bağlantılarını kullanmada bazı sıkıntıları vardı (VPN üzerinden IPv6, şu anda kullandığım ağ bağlantısı ve köprülü ağ kurulumuyla çalışıyor).
Lanet Terminal

Yanıtlar:


15

Sizin için bu ekle çekirdek hattı tamamen devre dışı IPv6 için önyükleme yükleyicisi in:

ipv6.disable=1

Grub kullanıyorsanız (kendi önyükleyicinizi kurmadıysanız, Grub kullanıyorsunuzdur), çekirdek hattınız şöyle görünmelidir:

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

Çekirdek satırına bir şey eklemek için önerilen yaklaşım, dosyadaki GRUB_CMDLINE_LINUX_DEFAULTdeğişkene istenen çekirdek parametresini eklemektir /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"

Bunu ekledikten sonra /etc/default/grub, komutunuzu yeniden oluşturmak için aşağıdaki komutu çalıştırın grub.cfg:

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

Alternatif olarak, ipv6.disable_ipv6=1bunun yerine ekleme IPv6 yığınını işlevsel tutar, ancak ağ aygıtlarınızın hiçbirine IPv6 adresleri atamaz.

VEYA

IPv6'yı sysctl ile devre dışı bırakmak için aşağıdakileri /etc/sysctl.confdosyanıza yerleştirin:

net.ipv6.conf.all.disable_ipv6 = 1

/etc/hostsDosyanızdaki herhangi bir IPv6 ana bilgisayarına yorum yapmayı unutmayın :

#::1        localhost.localdomain   localhost

NOT

sysctl yöntemi için bir yeniden başlatma gerekebilir ve kesinlikle çekirdek çizgisi yaklaşımı için bir yeniden başlatma gerekli olabilir.

VEYA

İpv6'yı geçici olarak devre dışı bırakmak için :

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

To geçici etkinleştirmek:

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

Yani , belirli bir koşulda ipv6'yı devre dışı bırakmanız gerekirse , o zaman bu satırlar boyunca bir yere bir bash betiği yazın:

#!/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

NOT

/etc/hostsDosyanızdaki ipv6 ana bilgisayarlarını da önceki yöntemde önerdiğim gibi devre dışı bırakmanız gerekebilir .


5
Evet tamam. Ancak Ağ Yöneticisi'ni kullanarak VPN'e bağlanırken IPv6'yı devre dışı bırakmak istiyorum, sistemimde tamamen yok etmiyorum. Belki de daha netleştirmeliydim.
Lanet Terminal

@DamnTerminal, bu nedenle, yalnızca VPN'inize bağlandığınızda devre dışı bırakmak istediğinizde, sistem genelinde devre dışı bırakırken sorun değil, yalnızca VPN'inize bağlıyken olduğu sürece?
Alexej Magura 07.04

@DamnTerminal Bir koşulu kontrol edecek bir bash betiği kullanarak ipv6'nın nasıl devre dışı bırakılacağına bir örnek eklemek için cevabımı güncelledim. Muhtemelen NetworkManager'ın komut satırı arayüzünü kullanabilirsiniz: VPN'inize nmclibağlı olup olmadığınızı kontrol etmek için; Bu işe yaramazsa, o zaman orada bu bilgilere erişim sağlayacak bir komut satırı net yardımcı programı olduğundan eminim.
Alexej Magura

Neden aşağı oy?
Alexej Magura

Ne yazık ki bu çözüm ( sysctl), IPv6'yı WiFi için düzgün şekilde yeniden etkinleştirmiyor. Etkinleştirmek için erişim noktasına yeniden bağlanmanız gerekir.
Igor Mikushkin

5

IPv6 seçeneğini ipv6.method işlevini "yoksay" olarak ayarlayarak ipv6'yı belirli bir Ağ Yöneticisi bağlantısı için istemci düzeyinde devre dışı bırakabilirsiniz.

// SOP: LAN bağlantımı yeniden Ethernet FIXED IP 192.168.0.95 kullanarak yeniden oluşturun. `` ``

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
Ne yazık ki VPN bağlantıları için bir etkisi yoktur.
Igor Mikushkin

0

16.04.03 LTS Ubuntu'dayım, PiVPN üzerinden Pi-Hole sunucusuna bağlanıyorum.

Ağ Yöneticisi üzerinden bir VPN'e bağlanırken IPv6'yı otomatik olarak açıp kapatmak için yaptığım şey:

  1. Bir komut dosyası oluşturun /etc/NetworkManager/dispatcher.d:

    $ sudo vi /etc/NetworkManager/dispatcher.d/99vpn-ipv6-switch
    
  2. Aşağıdaki içeriği dosyaya ekleyin (gereksinimlerinize göre içeriği değiştirin):

    #!/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. Komut dosyasını yürütülebilir duruma getirin:

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

Bu kadar. Pi-Hole DNS'imi doğru şekilde güncellenmesini dnsmasqengelleyen bir hata nedeniyle manuel olarak eklemek zorunda kaldım resolv.conf, bu nedenle DNS sızıntınızı tespit ederseniz belirtilen satırları değiştirin.


Ne yazık ki bu çözüm WiFi için IPv6'yı düzgün şekilde yeniden etkinleştirmiyor. Etkinleştirmek için erişim noktasına yeniden bağlanmanız gerekir.
Igor Mikushkin

0

Çekirdek tcp yığınını değiştiren istemci dosyasında (edit client_conf_file.ovpn) ip6'yı devre dışı bırakmak daha az müdahaleci olduğunu düşünüyorum.

Conf_file.ovpn dosyasını açın ve aşağıdaki satırları ekleyin:

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

Denedim ve bundan sonra ipv6 yok oldu.

Önce. Koştum ip a |grep globalve sonuç:

    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

Sonra. Koştum ip a |grep globalve sonuç:

    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'da OpenVPN profilini düzenleyin, IPv6 sekmesini açın ve manuel olarak bir rota ekleyin:

Adres: 2000 Önek: 3 Ağ Geçidi: 0100 :: 1

2000 :: / 3 halka açık tüm IPv6 adreslerini yakalar. 0100 :: / 64 öneki, trafiği atmak için belirlenmiş özel bir önek. Temel olarak, tüm IPv6 trafiğini varolmayan bir ağ geçidine gönderiyor olacaksınız.

Upside: kolay ve tamamen otomatik.

Dezavantajı: Bazı uygulamalar, yani komut satırı araçları, bu yöntem kullanıldığında istediği kadar hızlı bir şekilde IPv4'e geri dönmeyebilir.


0

OpenVPN sunucusuna bağlanırken istemcideki IPv6'yı devre dışı bırakmak istiyorum. Mümkün mü?

Şimdi yaptığım basit senaryoyu dene.

  • Tüm arayüzleri ele alın.
  • OpenVPN başlatıldığında ipv6'yı devre dışı bırakın.
  • OpenVPN sona erdiğinde ipv6'yı etkinleştirin.
  • NetworkManager argümanı ile daha iyi uyumluluk.

Bazı arabirimlerde hala ipv6 adresi varsa, istemci hala ipv6 yönlendirmesini dener, ancak DNS UDP kullandığından, TCPwrapper'ın devre dışı bırakmayı başaramadığı DNS Sızıntısı olasılığı vardır.

Bu komut dosyası diğer arayüzlerle de iyi çalışır çünkü vpn-up vpn-down gibi artık NetworkManager'ın argümanına dayanmaz.

/etc/NetworkManager/dispatcher.d/ içinde çalıştırılabilir bir dosya oluşturun

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

aşağıdaki kodu yapıştırın

#!/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

sonra çalıştırılabilir yap

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

Network Manager içeren PS OpenVPN, komut satırı sürümlerinden çok sayıda OpenVPN avantajı seçeneğini kaybediyor.

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.