Je sais que l'outil ip vous permet de lier plusieurs adresses à une interface (par exemple, http://www.linuxplanet.com/linuxplanet/tutorials/6553/1/ ). En ce moment, cependant, j'essaie de construire quelque chose au-dessus d'IPv6, et il serait vraiment utile d'avoir un bloc entier d'adresses (disons, un / 64) disponible, afin que les programmes puissent choisir n'importe quelle adresse dans la plage et lier à cela. Inutile de dire que connecter chaque IP de cette plage à une interface prendrait un certain temps.
Linux prend-il en charge la liaison d'un bloc entier d'adresses à une interface?
Réponses:
Linux 2.6.37 et supérieur prend en charge cela via une fonctionnalité appelée AnyIP . Par exemple, si je cours
sur une machine Ubuntu 11.04, il acceptera les connexions sur n'importe quelle adresse du réseau 2001: db8 :: / 32.
la source
ip route list
ou queip -6 route list
la route ajoutée n'est pas visible. Comment énuméreriez-vous un bloc d'adresse AnyIP?Oui, Linux prend en charge la liaison d'un bloc d'adresses réseau à une interface réseau ... mais uniquement sur l'interface de bouclage. Vous pouvez donc faire ceci:
Et puis faites ceci:
Avec les routes appropriées en place, cela fera ce que vous voulez ... pour les adresses IPv4. Vous avez posé des questions sur IPv6, et je n'ai aucune expérience avec IPv6, mais il y a de fortes chances que cela fonctionne de la même manière.
J'ai lu à ce sujet à l'origine ici (vers le bas de l'article). Notez que cet article explique également comment attribuer explicitement plusieurs adresses à une interface à l'aide des fonctionnalités CentOS / Red Hat que je ne connaissais pas auparavant.
la source
ip -6 route add local <ip> dev lo
.Je vois donc quelques options ici:
utiliser un script pour lier les adresses à l'interface individuellement
acheminez le bloc souhaité vers l'adresse unique de votre machine, puis demandez à cette machine d'utiliser l'interface pcap pour intercepter tout le trafic pour ce bloc (comme s'il s'agissait d'un routeur) et le gérer.
Vous pouvez jouer des astuces avec les règles NAT pour réécrire ensuite un bloc d'Ips qui ont été routés vers une machine en une seule IP interne sur cette machine ... mais vous vous retrouverez toujours avec une IP interne par IP que vous voulez vraiment payer attention à ce qui vous ramène à la solution 1.
Si j'étais vous, j'écrirais simplement le petit script dans l'option 1. Ou utiliser celui d' ici :
la source
Comme d'autres l'ont dit, vous pouvez utiliser le mécanisme AnyIP pour router les paquets arrivant pour un sous-réseau entier vers l'interface localhost, mais gardez à l'esprit que vous devrez également demander à votre routeur en amont de router tous les paquets souhaités vers cette machine dans la première place. Cela peut être fait simplement avec des entrées de table de routage sur le routeur, ou via BGP. ARP n'est pas vraiment approprié étant donné que votre machine devra ARP pour chaque IP individuellement.
la source
Le "Anyip" décrit ci-dessus n'a pas fonctionné pour moi sur centos 7. J'ai dû créer un script pour créer manuellement des adresses ipv6 au démarrage. Pour ce faire, j'ai ajouté ce qui suit à / etc / crontab:
Voici le script bash pour créer environ 3000 adresses ipv6:
la source