GNU/Linux >> Tutoriales Linux >  >> Linux

¿Puedo vincular un bloque (grande) de direcciones a una interfaz?

Solución 1:

Linux 2.6.37 y superior admite esto a través de una característica llamada AnyIP. Por ejemplo, si corro

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

en una máquina Ubuntu 11.04 aceptará conexiones en cualquier dirección en la red 2001:db8::/32.

Solución 2:

Sí, Linux admite vincular un bloque de direcciones de red a una interfaz de red... pero solo en la interfaz de bucle invertido. Así que puedes hacer esto:

ip addr add 192.168.5.0/24 dev lo

Y luego haz esto:

$ 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

Con las rutas apropiadas en su lugar, esto hará lo que quiera... para las direcciones IPv4. Ha preguntado acerca de IPv6 y no tengo ninguna experiencia con IPv6, pero es muy probable que funcione de la misma manera.

Originalmente leí sobre esto aquí (al final del artículo). Tenga en cuenta que este artículo también analiza cómo asignar explícitamente varias direcciones a una interfaz utilizando funciones de CentOS/Red Hat que no conocía anteriormente.

Solución 3:

Así que veo algunas opciones aquí:

  1. use un script para vincular todas las direcciones a la interfaz individualmente

  2. enrute el bloque que desea a la dirección única de su máquina y luego haga que esa máquina use la interfaz pcap para interceptar todo el tráfico de dicho bloque (como si fuera un enrutador) y manejarlo.

  3. Posiblemente podría jugar trucos con las reglas de NAT para luego reescribir un bloque de IP que se enrutaron a una máquina en una sola IP interna en esa máquina... pero aún así terminará con una IP interna por IP que realmente desea pagar. atención a, lo que lo lleva de regreso a la solución 1.

Si yo fuera tú, simplemente escribiría el pequeño guión en la opción 1. O usaría el de aquí:

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

Solución 4:

Como han dicho otros, puede usar el mecanismo AnyIP para enrutar los paquetes que llegan para una subred completa a la interfaz localhost, pero tenga en cuenta que también necesitará que su enrutador ascendente enrute todos los paquetes deseados a esta máquina en El primer lugar. Esto se puede hacer simplemente con las entradas de la tabla de enrutamiento en el enrutador o mediante BGP. ARP no es realmente apropiado dado que su máquina tendría que ARP para cada IP individualmente.


Linux
  1. ¿Puede el tema de color vincularse a un búfer?

  2. Bloquear direcciones IP y países usando .htaccess

  3. Cómo puede bloquear direcciones IP a través de la interfaz de cPanel

  4. CentOS / RHEL 6:Cómo agregar/eliminar direcciones IP adicionales a una interfaz de red

  5. cómo vincular un socket sin procesar a una interfaz específica

Cómo bloquear direcciones falsificadas locales usando el firewall de Linux

¿Obtener direcciones de interfaz de red local usando solo proc?

Obtener 2 direcciones IP en una tarjeta de red, usando DHCP

¿Puede ',' tener un alias de '..'?

¿Cómo puedo montar un dispositivo de bloques de una computadora a otra a través de la red como un dispositivo de bloques?

No se puede iniciar Bind open:/etc/named.conf:permiso denegado