GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann ich einen (großen) Adressblock an eine Schnittstelle binden?

Lösung 1:

Linux 2.6.37 und höher unterstützt dies über eine Funktion namens AnyIP. Zum Beispiel wenn ich renne

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

Auf einem Ubuntu 11.04-Rechner akzeptiert es Verbindungen an jeder Adresse im 2001:db8::/32-Netzwerk.

Lösung 2:

Ja, Linux unterstützt das Binden eines Blocks von Netzwerkadressen an eine Netzwerkschnittstelle ... aber nur auf der Loopback-Schnittstelle. So können Sie Folgendes tun:

ip addr add 192.168.5.0/24 dev lo

Und dann tun Sie dies:

$ 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

Mit den entsprechenden Routen wird dies das tun, was Sie wollen ... für IPv4-Adressen. Sie haben nach IPv6 gefragt, und ich habe keine Erfahrung mit IPv6, aber es besteht eine gute Chance, dass es genauso funktioniert.

Ich habe ursprünglich hier darüber gelesen (am Ende des Artikels). Beachten Sie, dass dieser Artikel auch beschreibt, wie man einer Schnittstelle explizit mehrere Adressen zuweist, indem CentOS/Red Hat-Funktionen verwendet werden, von denen ich vorher nichts wusste.

Lösung 3:

Also sehe ich hier ein paar Optionen:

  1. Verwenden Sie ein Skript, um die Adressen einzeln an die Schnittstelle zu binden

  2. Leiten Sie den gewünschten Block an die einzelne Adresse Ihrer Maschine und lassen Sie diese Maschine dann die pcap-Schnittstelle verwenden, um den gesamten Datenverkehr für diesen Block abzufangen (als ob es ein Router wäre) und ihn zu verarbeiten.

  3. Sie könnten möglicherweise Tricks mit NAT-Regeln spielen, um dann einen Block von IPs, die zu einer Maschine geroutet wurden, in eine einzige interne IP auf dieser Maschine umzuschreiben ... aber Sie werden immer noch eine interne IP pro IP haben, die Sie wirklich bezahlen möchten beachten, was Sie zu Lösung 1 zurückbringt.

Wenn ich Sie wäre, würde ich einfach das kleine Skript in Option 1 schreiben. Oder verwenden Sie das von hier:

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

Lösung 4:

Wie andere gesagt haben, können Sie den AnyIP-Mechanismus verwenden, um ankommende Pakete für ein ganzes Subnetz an die localhost-Schnittstelle weiterzuleiten, aber denken Sie daran, dass Sie auch Ihren Upstream-Router dazu bringen müssen, alle gewünschten Pakete an diese Maschine weiterzuleiten den ersten Platz. Dies kann einfach mit Routing-Tabelleneinträgen auf dem Router oder über BGP erfolgen. ARP ist nicht wirklich geeignet, da Ihr Rechner für jede IP einzeln ARP durchführen müsste.


Linux
  1. So blockieren Sie lokale gefälschte Adressen mit der Linux-Firewall

  2. Wie Sie IP-Adressen über die cPanel-Schnittstelle blockieren können

  3. Lokale Netzwerkschnittstellenadressen nur mit proc abrufen?

  4. Erhalten von 2 IP-Adressen auf einer Netzwerkkarte mit DHCP

  5. Wie kann ich einen Speicherblock aus dem Linux-Kernel reservieren?

Kann ich einen Benutzer (und seine Apps) auf eine Netzwerkschnittstelle beschränken?

Wie kann ich Dateisysteme mit > 4 KB Blockgröße mounten?

Wie kann ich eine Verknüpfung erstellen, um die Größe von Fenstern in einem Tmux-Fenster zu ändern?

Wie kann ich ein Blockgerät von einem Computer auf einen anderen über das Netzwerk als Blockgerät einhängen?

Warum MAC- und IP-Adressen auf der Bridge-Schnittstelle zuweisen?

Bind open kann nicht gestartet werden:/etc/named.conf:Zugriff verweigert