
Soy nuevo con Linux y iptables
. Tengo una distribución de Ubuntu Server (12.04) en una PC que tiene 2 interfaces de red ( eth0
y eth1
). También tengo 2 portátiles, uno está conectado eth0
y el otro eth1
.
ipconfig del portátil1: 172.16.221.120 - 255.255.252.0 ipconfig del portátil2: 192.168.222.250 - 255.255.255.0
Quiero hacer ping a la computadora portátil2 desde la computadora portátil1 con éxito.
¿Tengo que crear INPUT
reglas OUTPUT
? ¿O también una FORWARD
regla?
Intenté esto sin éxito:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
Respuesta1
Puedes utilizar tcpdump
para saber hasta dónde llegan tus pings:
tcpdump -i eth0 -n icmp
tcpdump -i eth1 -n icmp
Además, no basta con permitir pings en el servidor; las computadoras portátiles deben configurarse para que sepan que pueden comunicarse con la otra a través del servidor (enrutamiento).
Probablemente su firewall tenga una regla que permita paquetes que sean una respuesta. Si no, entonces también necesitas
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
lo cual tiene sentido de todos modos, ya que probablemente desee permitir que ambas computadoras portátiles hagan ping a la otra. Sin embargo, puedes limitar esto a pings y pongs:
iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-reply -j ACCEPT
El último problema son los propios portátiles: si al menos uno de ellos tiene su propio firewall, puede bloquear los pings (en general o debido a la dirección de origen fuera de la red de interfaces).
Respuesta2
De forma predeterminada, no necesita ninguna regla ya que las cadenas de netfilter están vacías con una ACCEPT
política predeterminada. Si ya ha agregado reglas, para permitir el ping será necesario agregar reglas a la FORWARD
cadena.
También deberá configurar el servidor como enrutador y asegurarse de que cada computadora portátil tenga el servidor como ruta predeterminada (o al menos tenga una ruta para la subred de la otra computadora portátil).
Para habilitar el enrutamiento (reenvío de IP), debe configurarlo /proc/sys/net/ipv4/ip_forward
en 1
. Ubuntu debería tener /etc/sysctl.conf
un lugar donde puedas configurar elementos /proc/sys
automáticamente:
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
Si cambia esto, deberá cargar los cambios en el kernel:
sudo sysctl -p /etc/sysctl.conf
El cambio se cargará automáticamente en el próximo inicio, por lo que solo necesitará ejecutar este comando manualmente una vez después del cambio /etc/sysctl.conf
.