Bir (büyük) adres bloğunu bir arayüze bağlayabilir miyim?


26

İp aracının bir arayüze birden fazla adres bağlamanıza izin verdiğini biliyorum (örneğin, http://www.linuxplanet.com/linuxplanet/tutorials/6553/1/ ). Şu anda, yine de, IPv6'nın üzerine bir şey inşa etmeye çalışıyorum ve programların aralıktan herhangi bir adresi seçebilmesi için tüm adres bloğunun (a / 64) mevcut olması gerçekten yararlı olacaktır. Buna bağlan. Söylemeye gerek yok, her IP'yi bu aralıktan bir arabirime bağlamak biraz zaman alabilir.

Linux bütün bir adres bloğunu bir arayüze bağlamayı destekliyor mu?


Farklı dağıtımların bunu ele almanın farklı yolları vardır. Birini seç.
Ignacio Vazquez-Abrams,

Şu an Ubuntu, ancak dağıtımlar arasında çalışan çözümler elbette tercih ediliyor.
p-statik

Bu öğretici, bir blok içindeki (/ 24) tek bir adresi bağlar. / 24 sadece hangi bloğun içinde olduğunu belirtir. IPv6 için aynı şekilde çalışması gerekir.
BillThor,

Çapraz dağıtım, "ip addr add" kullanan bir komut dosyası yazmak olacaktır. Red Hat, Ubuntu ve SuSE'nin farklı ağ oluşturma komut dosyaları var ...
Sean Reifschneider

1
@ChandraNakka Bu sizin için yararlı mı?
kasperd

Yanıtlar:


31

Linux 2.6.37 ve üzeri, bunu AnyIP adlı bir özellik ile destekler . Mesela ben koşarsam

ip route add local 2001:db8::/32 dev lo

Bir Ubuntu 11.04 makinesinde, 2001: db8 :: / 32 ağındaki herhangi bir adresteki bağlantıları kabul edecektir.


1
İpv4 için herhangi bir AnyIP çözümü var mı?
Coaku

Ubuntu 14.04'te çalışıyor mu?
Chandra Nakka

Bu işe yarayacak gibi görünüyor ve adres aralığına ping atabiliyorum ancak çalıştırdığımda ip route listveya ip -6 route listeklenen rota görünmüyorsa. AnyIP adres bloğunu nasıl numaralandırırsınız?
Colton

Bu, adresler için yerel olarak çalışır, ancak bu IP'lere dış kaynaklardan ping ya da erişemiyorum. Bunu düzeltmenin bir yolu var mı? (Lo'yu eth0 ile değiştirmeyi denedim ama hiçbir şey ulaşılamıyor)
BrainStone

@BrainStone bunun için ndppd kurmanız veya sağlayıcınızdan yönlendirilmiş bir önek almanız gerekiyor
Arya

6

Evet, Linux bir ağ adresleri bloğunu bir ağ arayüzüne bağlamayı destekler ... ama sadece geridöngü arayüzü üzerinde. Yani bunu yapabilirsiniz:

ip addr add 192.168.5.0/24 dev lo

Ve sonra bunu yapın:

$ nmap -sP -oG - 192.168.5.0/24

# Nmap 5.21 scan initiated Tue Dec  7 11:38:28 2010 as: nmap -sP -oG - 192.168.5.0/24 
Host: 192.168.5.0 ()    Status: Up
Host: 192.168.5.1 ()    Status: Up
Host: 192.168.5.2 ()    Status: Up
[...]
Host: 192.168.5.254 ()  Status: Up
Host: 192.168.5.255 ()  Status: Up
# Nmap done at Tue Dec  7 11:38:46 2010 -- 256 IP addresses (256 hosts up) scanned in 0.11 seconds

Uygun rotaların yerleştirilmesi ile IPv4 adresleri için istediğinizi yaparsınız. IPv6'yı sordunuz ve IPv6 ile ilgili hiçbir deneyimim yok, ancak aynı şekilde çalışması için iyi bir şans var.

Başlangıçta burada (makalenin altına doğru) burada okudum . Bu makalede ayrıca, daha önce bilmediğim CentOS / Red Hat özelliklerini kullanarak bir arayüze açıkça birden fazla adres atamanın da tartışıldığını unutmayın.


Güzel! Bunu IPv6 ile Ubuntu'da (Lucid & Hardy) şanssız bir şekilde denedim. Bunun IPv6 için katil bir özellik olacağını düşünüyorum - adresleri veritabanı nesnelerini eşleyebilir veya adresleri oturum kimlikleri olarak kullanabilirsiniz.
Gerald Combs

2
Hayır, lo için bir adres eklememelisiniz. Bunun yerine, bir yol ekleyin: ip -6 route add local <ip> dev lo.
Navin

2

Bu yüzden burada birkaç seçenek görüyorum:

  1. adresleri tek tek arabirime bağlamak için bir komut dosyası kullanın

  2. İstediğiniz bloğu makinenizin tek adresine yönlendirin ve daha sonra bu makinenin, söz konusu bloğun tüm trafiğini kesmek için (bir yönlendiriciymiş gibi) kesip işlemesi için pcap arabirimini kullanmasını sağlayın.

  3. Bilinçli bir şekilde NAT kurallarıyla püf noktaları oynayabilir ve daha sonra bir makineye o makinedeki tek bir dahili IP'ye yönlendirilen bir Ips bloğunu yeniden yazabilirsiniz ... ama yine de gerçekten IP başına ödemek istediğiniz bir IP ile bitirdiniz. dikkat, ki sizi çözüm 1'e geri götürür.

Yerinde olsam, ben sadece seçenek 1'de küçük senaryo yazmaya Ya birini kullanmayı tercih burada :

#!/bin/sh
if [ "$#" -ne "4" ]; then
        echo Usage:
        echo " $0 interface ip range netmask"
        echo " examples:"
        echo "  1) Assuming you want to bind the IP range 192.168.0.1..192.168.0.254 to eth0 with netmask 255.255.255.0:"
        echo "  $0 eth0 192.168.0. 1..254 255.255.255.0"
        echo "  2) Assuming you want to bind the IPv6 range 2001:41d0:1:5000::1-2001:41d0:1:5000::254 to eth0 with netmask /56"
        echo "  $0 eth0 2001:41d0:1:5000:: 1..254 56"
else
        echo "Attempting to assign the IP range $2($3) to interface $1 with netmask $4"
        for ip in $(eval echo "{$3}"); do ifconfig -v $1 add $2$ip netmask $4; done
fi

böyle bir komut dosyası nerede adlandırılır?
Skaperen,

2

Başkalarının söylediği gibi, bir alt ağın tümünden gelen paketleri yerel ana bilgisayar arabirimine yönlendirmek için AnyIP mekanizmasını kullanabilirsiniz, ancak akış yukarı yönlendiricinizin istenen tüm paketleri bu makineye yönlendirmesi gerektiğini de unutmayın. ilk sırada. Bu sadece yönlendiricideki yönlendirme tablosu girişleri veya BGP üzerinden yapılabilir. ARP, makinenizin her IP için ayrı ayrı ARP yapmak zorunda kalacağı için gerçekten uygun değildir.


1

Yukarıda açıklanan "Anyip", centos 7'de benim için işe yaramadı. Önyüklemede ipv6 adreslerini elle oluşturmak için bir komut dosyası oluşturmak zorunda kaldım. Bunu yapmak için / etc / crontab dizinine şunu ekledim:

@reboot root /path/to/bashscript

İşte kabaca 3000 ipv6 adresi oluşturmak için bash betiği:

#!/bin/bash
INETP="2a00:xxxx:xxxx:xxxx::"
PRE="64"
INTE="eth0"
IP1=/sbin/ip
echo -n "Adding IPv6 addresses..."
for i in {3..3000}
do
$IP1 -6 addr add ${INETP}$(printf '%x\n' $i)/${PRE} dev ${INTE}
done
echo "Done!"

Bu yöntem yalnızca 4000 adrese ulaşana kadar çalışır. Bundan daha fazla adres yapılandırmaya çalışırsanız çalışmaz. Tek bir ana bilgisayara / 96 veya / 64'ün tamamını atamanın istendiği senaryolar vardır, yönteminizin o kadar fazla ölçeklendirilmesinin imkanı yoktur.
kasperd

@kasperd, yukarıda belirtilen Gerald Combs tarafından Centos 7 veya Debian 8 üzerinde çalıştığı "herhangi bir mekanizma" yapmayı nerede mümkün kılıyor?
Nicolas Guérinet

1
Evet, işe yarıyor. Ancak bu cevapta belirtilenden daha birkaç adım var. Benzer bir soruya cevabımı görün .
kasperd,
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.