Řešení 1:
Linux 2.6.37 a vyšší to podporuje prostřednictvím funkce zvané AnyIP. Například když spustím
ip route add local 2001:db8::/32 dev lo
na počítači Ubuntu 11.04 bude přijímat připojení na jakékoli adrese v síti 2001:db8::/32.
Řešení 2:
Ano, Linux podporuje vazbu bloku síťových adres na síťové rozhraní... ale pouze na rozhraní zpětné smyčky. Takže můžete udělat toto:
ip addr add 192.168.5.0/24 dev lo
A pak udělejte toto:
$ 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
S vhodnými trasami to udělá, co chcete... pro adresy IPv4. Ptali jste se na IPv6 a já s IPv6 nemám žádné zkušenosti, ale je velká šance, že to bude fungovat stejně.
Původně jsem o tom četl zde (směrem ke konci článku). Všimněte si, že tento článek také pojednává o tom, jak explicitně přiřadit více adres k rozhraní pomocí funkcí CentOS/Red Hat, o kterých jsem dříve nevěděl.
Řešení 3:
Takže zde vidím několik možností:
-
použijte skript k propojení všech adres s rozhraním jednotlivě
-
směrujte blok, který chcete, na jedinou adresu vašeho počítače a pak nechte tento počítač použít rozhraní pcap k zachycení veškerého provozu pro daný blok (jako by to byl router) a zpracoval jej.
-
Dalo by se hrát triky s pravidly NAT, abyste pak přepsali blok IPS, které byly směrovány na jeden počítač, na jedinou interní IP na tomto počítači... ale stejně skončíte s jednou interní IP na IP, kterou opravdu chcete zaplatit. pozornost, která vás vrátí zpět k řešení 1.
Být vámi, napsal bych jen malý skript v možnosti 1. Nebo použijte tento:
#!/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
Řešení 4:
Jak již řekli jiní, můžete použít mechanismus AnyIP ke směrování příchozích paketů pro celou podsíť do rozhraní localhost, ale mějte na paměti, že budete také muset nastavit svůj upstream router, aby směroval všechny požadované pakety na tento počítač v první místo. To lze provést jednoduše pomocí položek směrovací tabulky na routeru nebo pomocí BGP. ARP není opravdu vhodné vzhledem k tomu, že váš počítač by musel ARP provádět pro každou IP jednotlivě.