Linux Networking: İnternetten gelen IPv6 bağlantılarını ikinci bir IPv4 arayüzü ile yerel bir ağdaki diğer bilgisayarlara nasıl iletirim?


1

İki ağ arabirimine sahip bir tür Debian sunucu ağ geçidi-zombi var: eth0 ve wlan0 (Evet, wlan0... Biliyorum.).

eth0 kendisine bir IPv6 adresi atayan bir internet kablosu modeme bağlanır. Bunun sadece bir IPv6 ödevi olduğunu varsayalım. (Aslında DS Lite kullanıyor, ancak şimdilik bunu görmezden gelelim.)

wlan0 IPv4 tabanlı bir yerel ağa, başka bir internet kablo modem olan ana ağ geçidi ile bağlanmıştır. Bu ikinci kablo modem sadece sağlayıcıdan bir IPv4 adresi alır ve portları yerel bilgisayarlara iletmek için NAT kullanır.

Server-zombie'nin önemli kısmı /etc/network/interfaces buna benzer:

allow-hotplug eth0 iface eth0 inet static
    # Ignore the following IPv4 stuff...
    # I just added this to connect to the cable modem more conveniently
    address 192.168.0.22 
    netmask 255.255.255.0
    gateway 192.168.0.1

auto wlan0 iface wlan0 inet static
    wpa-ssid [ssid] # only required for my wlan connection
    wpa-psk [key] # only required for my wlan connection
    address 192.168.1.22
    netmask 255.255.255.0

    # The following makes sure that the main IPv4 network
    # can be reached from this computer:
    #gateway 192.168.1.1 # can't use this because only one IPv4 gateway is allowed at a time
    post-up ip route add 192.168.1.0/24 dev wlan0 src 192.168.1.22 table rt2
    post-up ip route add default via 192.168.1.1 dev wlan0 table rt2
    post-up ip rule add from 192.168.1.22/24 table rt2
    post-up ip rule add to 192.168.1.22/32 table rt2

Şimdi aşağıdakileri gerçekleştirmek için server-gateway-zombie'yi kullanmak istiyorum: IPv6'dan gelen bağlantılar eth0 belirli bağlantı noktalarındaki bağdaştırıcı, bilgisayardaki IPv4 bağlantıları olarak iletilmelidir. wlan0 ağ. Bunu nasıl başarabilirim?


İşte size neden bunu yapmak istediğime dair bir fikir vermek için bazı ek bilgiler:

İki kablo modemim olduğundan, yalnızca bir IPv4-bir ve bir IPv6-bir-bir (en azından gelen bağlantılarla ilgili) olduğundan, bir tür IP versiyonuna bağlı yük dengelemesi yapmak istiyorum.

Bu, ne zaman bir müşteri ağıma bağlanmak için IPv6 kullanabiliyorsa, IPv6 kablo modemime erişir ve ardından trafiği sunucu ağ geçidi-zombisine yönlendirir ve ardından IPv4 ağındaki sunucuya yönlendirir. Öte yandan, bir istemci ağıma bağlanmak için yalnızca IPv4 kullanabiliyorsa, IPv4 yalnızca kablo modemin NAT'ı tekmeleyip trafiği buna göre yönlendirir.

Bu, ana bilgisayar adıma iki tane DNS girişi ekleyerek yapılabilir: biri IPv4 adresi için diğeri IPv6 adresi için.

Yanıtlar:


2

İçinde başka bir cevap Kullanılan diğer yön için oldukça basit bir çözüm buldum (IPv4 - & gt; IPv6) socat.

Bu çözüme dayanarak sadece server-gateway-zombie için bir cini kurdum. socat Takip ederek socat argümanlar:

TCP6-LISTEN:80,su=nobody,fork,reuseaddr TCP4:192.168.1.23:80

Bu şekilde, 80 numaralı bağlantı noktasından gelen tüm paketler yeniden paketlenecek ve ardından yalnızca IPv4 HTTP sunucusuna gönderilecektir. Sorun çözüldü!


1

IPv6 bağlantılarını (ör. IPv6 adreslerinden gelen bağlantılar) IPv4 ana bilgisayarlarına iletmek mümkün değildir. Dolayısıyla, "belirli bağlantı noktalarındaki IPv6 eth0 adaptöründen gelen bağlantılar, wlan0 ağındaki bilgisayarlara IPv4 bağlantıları olarak iletilmelidir" sanse yapmaz. IPv6 adresleri yalnızca diğer IPv6 ana bilgisayarlarıyla ve IPv4 adresleri diğer IPv4 ana bilgisayarlarıyla konuşabilir.

Ancak, aşağıdaki açıklama sizi daha doğru anladıysam daha mantıklı kılıyor: IPv6 adreslerinden gelen bağlantılar sunucunuza (bir bağlantı üzerinden) ve IPv4 adreslerinden gelen bağlantılar sunucunuza (diğer bağlantı üzerinden) ulaşmalıdır.

Bunun çalışması için iki olasılık var:

1) sunucunuzu çift istifli yapın (hem yerel IPv4 hem de genel IPv6 adreslerine sahip).

Bu durumda, yönlendiricinizin sunuculara yerel IPv4 adresine (IPv6'dan önce olduğu gibi) IPv4 DNAT vermesini ve yönlendiricinizden sunucunuza düzenli IPv6 yönlendirmesini ayarlamanız yeterlidir. İnternetten sunucuya giden IPv6 adresine giden bilgisayarlar yönlendiricinize eth0 arabiriminde gelecek ve sunucunuza genel IPv6 adresinize yönlendirilecektir. İnternetten gelen IPv4 halka açık adresinize giden sunucunuz yerel LAN adresinize DNATed olacaktır.

2) sunucunuzun sadece IPv4 kalmasına izin verin ve ihtiyacınız olan her protokol için yönlendiriciye protokol ters proxy'leri kurun.

Bu durumda, internetten IPv4 genel adresinize giden ana bilgisayarlar, sunucunuzun yerel LAN adresine, yukarıdakiyle aynı (ve IPv6'dan önceki gibi) DNATed olacaktır. Bununla birlikte, IPv6 adreslerinden gelen ana bilgisayarlar, yönlendiricinizde çalışan (örneğin, HTTP protokolü için ters proxy kurulumundaki kalamarınızda) çift yığınlı deamon'da sona erecek ve deamon sunucunuzla yeni bir IPv4 bağlantısı oluşturacak (ve ne olursa olsun iletecek orijinal IPv6 ana bilgisayarlarına geri döner).

Avantajı (2) sunucunuzu yeniden yapılandırmanız gerekmemesi, ancak dezavantajı, sunucunuzda ulaşmak istediğiniz her protokol için ters proxy uygulamanız, yönlendiriciniz için gereken karmaşıklığı (ve gücü) büyük ölçüde artırmanız gerektiği .


Cevaplarınız için teşekkürler. Sanırım ilk yaklaşım en temiz olanı. Bunu bir gün uygulayabilirim. Şimdilik iyiyim cevap sonunda kendimi buldum .
Hauke P.
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.