Açık IPP6 trafiğini openvpn tüneli üzerinden yönlendirme


13

Ne yapmaya çalışıyorum bir vpn tüneli üzerinden IPv6 trafiğini yönlendirmektir. Bu şekilde, IPv6'yı IPv6'yı desteklemeyen bir ağda kullanabilmeliyim.

IPv6 bloğu atanmış bir VPS var. Bu bloğun bir kısmı openvpn istemcileri için kullanmak istiyorum. Aklımdaki aralık 2001:db8::111:800:0/112(önek anonimleştirildi) idi, çünkü openvpn yalnızca / 64 ve / 112'yi alt ağlar olarak destekliyor.

Tünel üzerinden IPv6 zaten çalışıyor, istemciden, ben sunucu ( 2001:db8::111:800:1) ping ve ayrıca sunucu ( 2001:db8::111:100:100ve 2001:db8:216:3dfa:f1d4:81c0) arayüzleri .

Rağmen, istemciden google.com ping çalışırken, hiçbir yanıt (ping zaman aşımı) olsun. Bu sorunu ayıklamak için, sunucudaki trafiği yakalamak için tcpdump kullandım ve ping paketlerinin dışarı çıktığını görebiliyorum, ancak geri dönüş yok. İp6tables'a günlük kuralları eklemek, paketleri dışarıda gösterir, ancak hiçbir şey gelmez.

Sunucumdan zaman aşımına uğrayan çevrimiçi bir izleme aracı kullandım. Ben de ip ( 2001:db8::111:800:1001) ulaşılabilir olması için sonuç arabirim üzerinde doğrudan ip ayarlamak için çalıştı , bu yüzden bu bir yönlendirme sorunu olduğunu düşünüyorum.

İle ipv6 için yönlendirmeyi etkinleştirdim /proc/sys/net/ipv6/conf/all/forwarding. ip6tables tüm zincirler için izin politikası vardır.

Benim sorum, linux'un bir arabirime atanmamış bir ip için bu paketi kabul etmesi ve daha fazla yönlendirmesi için tam olarak ne gerekiyor? Sadece var olan bir rota yeterli görünmüyor.

İşte istemcim ve sunucum için kurulum. Daha fazla bilgi gerekip gerekmediğini lütfen bize bildirin.

müşteri

# ip -6 addresses
10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100
    inet6 2001:db8::111:800:1001/112 scope global 
       valid_lft forever preferred_lft forever

# ip -6 routes
2001:db8::111:800:0/112 dev tun0  proto kernel  metric 256 
2000::/3 dev tun0  metric 1024 

Sunucu

# ip -6 address
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2001:db8:216:3dfa:f1d4:81c0/64 scope global dynamic 
       valid_lft 86254sec preferred_lft 14254sec
    inet6 2001:db8::111:100:100/128 scope global 
       valid_lft forever preferred_lft forever
12: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100
    inet6 2001:db8::111:800:1/112 scope global 
       valid_lft forever preferred_lft forever

# ip -6 route
2001:db8::111:100:100 dev eth0  proto kernel  metric 256 
2001:db8::111:800:0/112 dev tun0  proto kernel  metric 256 
2001:db8::/64 dev eth0  proto kernel  metric 256  expires 86194sec
default via fe80::230:48ff:fe94:d6c5 dev eth0  proto ra  metric 1024  expires 1594sec

Olası aradığınız POSTROUTING ... MASQUERADEde natmasaya. Ama tamamen anladığımdan emin değilim. IPv6 trafiğini tünellemeye mi çalışıyorsunuz? Varsa, ilgili tesisleriniz var mı? Are -p ipv6IPv4 (!) Kurallarında izin paketler?
0xC0000022L

Yönlendiricinin IP yapılandırması var mı (eth0'da)? Yönlendiriciyi kontrol ediyor musunuz? (rota ekleyebilir misiniz?)
ysdx

Iptables ham tablo TRACEhedefini kullanmayı deneyin (belki burada çok fazla değil) ip neighbour, ve ip route get. Ayrıca, lütfen kimin ping attığını belirtin google.ca.
pilona

Google.com veya goole.com adresine ping gönderme.?
totti

@totti google.com, bir yazım hatası oldu
Ikke

Yanıtlar:


12

Yönlendiricinize sunucunuzu bu VPN alt ağı için kullanmasını söylemeniz gerekir: Sorununuza doğru çözüm, yönlendiriciye OpenVPN alt ağı için bir rota eklemektir.

Yönlendiriciye dokunamadığınız için bunu yapamazsanız, başka bir çözüm, eth0bağlantıdaki istemciler için bir NDP proxy'si kurmaktır .

Bir VPS kullandığınızdan muhtemelen yönlendiriciye rota ekleyemezsiniz: muhtemelen ikinci çözümü kullanmanız gerekir.

Alt ağ için rota ekleme

Sorununuzun doğru çözümü, yönlendiriciye VPN alt ağının OpenVPN sunucusu üzerinden yönlendirilmesi gerektiğini bildirmektir (bu Linux içindir):

ip route add 001:db8::111:800::/112 via 2001:db8::111:100:100

Sunucuda IPv6 iletmeyi etkinleştirmelisiniz:

sysctl sys.net.ipv6.conf.all.forwarding=1

NDP proxy'si

Yönlendiricinin tüm IPv6 aralığınızı eth0bağlantıya gönderecek şekilde yapılandırılmış olduğu anlaşılıyor : bir NDP proxy'si ayarlayabilirsiniz.

eth0İstemciden İnternetin geri kalanına erişmeye çalışırken OpenVPN alt ağınızın sunucusunun arayüzünde NDP isteklerini görmelisiniz .

Sunucuda IPv6 iletmeyi ve NDP proxy'sini de etkinleştirmeniz gerekir:

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

alt ağ NDP proxy'si

Linux çekirdeği, bir alt ağ için bir NDP proxy'sinin eklenmesine izin vermez, yalnızca tek tek IP'ler için izin verir. Bir arka plan programı kullanabilirsiniz ( tüm alt ağ için bir NDP proxy'si kurmak için ndppd gibi (hiç kullanmadıysanız).

IP NDP proxy'si başına

Başka bir çözüm, VPN alt ağının her IPv6'sına bir NDP proxy'si eklemektir:

for i in $(seq 0 65535) ; do
  ip neigh add proxy 2001:db8::111:800:$(printf %x $i) dev tun0
done

Bu, OpenVPN alt ağında karşılaştırmalı olarak az sayıda IP'ye sahip olduğunuz için çalışmalıdır.

OpenVPN kancalı dinamik NDP proxy'si

NDP proxy dinamiklerini eklemek için OpenVPN kancalarını kullanabilmeniz gerekir.

OpenVPN sunucusuna kanca ekleyin conf:

learn-address /etc/openvpn/learn-address

Aşağıdaki learn-addresskomut dosyasıyla:

#!/bin/sh

action="$1"
addr="$2"

case "$action" in
    add | update)
        ip neigh replace proxy "$addr" dev tun0
        ;;
    delete)
        ip neigh del proxy "$addr" dev tun0
        ;;
esac

Bu konuya bakın .

Kısa cevap

for i in $(seq 0 65535) ; do
  ip neigh add proxy 2001:db8::111:800:$(printf %x $i) dev tun0
done

1
Teşekkürler, içine bakacağım. Şimdi sorunu anlıyorum. ipsidixit.net/2010/03/24/239 bu konuda daha fazla ayrıntı içeriyor.
Ikke

Komşu proxy olarak istemciden ip var. Sys.net.ipv6.conf.all.proxy_ndp'yi etkinleştirdim, ancak yine de google.com'a ping atamıyorum. Sunucuyu kontrol ettiğimde, eth0 üzerinden gelen ndp toplama paketlerini görüyorum, ancak hiçbir reklam çıkmıyor.
Ikke

1
NPD6'yı kurduktan ve kurduktan sonra aniden çalışır!
Ikke
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.