Ping: sendmsg: error de operación no permitida después de instalar iptables en Arch GNU / Linux

15

Ayer recibí una nueva computadora como servidor doméstico, un HP Proliant Microserver. Instalé Arch Linux en él, con la versión del kernel 3.2.12.

Después de instalar iptables (1.4.12.2 - la versión actual AFAIK) y cambiar la net.ipv4.ip_forwardclave a 1, y habilitar el reenvío en el archivo de configuración de iptables (y reiniciar), el sistema no puede usar ninguna de sus interfaces de red. Ping falla con

Ping: sendmsg: operation not permitted

Si elimino completamente iptables, la conexión en red está bien, pero necesito compartir la conexión de Internet a la red local.

eth0 - wan NIC integrado en la placa base (Broadcom NetXtreme BCM5723).

eth1 - lan NIC en una ranura pci-express (Intel 82574L Gigabit Network)

Como funciona sin iptables (el servidor puede acceder a Internet y puedo iniciar sesión con ssh desde la red interna), supongo que tiene algo que ver con iptables. No tengo mucha experiencia con iptables, así que los utilicé como referencia (separados unos de otros, por supuesto ...):

wiki.archlinux.org/index.php/Simple_stateful_firewall#Setting_up_a_NAT_gateway

revsys.com/writings/quicktips/nat.html

howtoforge.com/nat_iptables

En mi servidor anterior, utilicé la guía revsys para configurar nat, funcionó de maravilla.

¿Alguien ha experimentado algo como esto antes? ¿Qué estoy haciendo mal?

estol
fuente

Respuestas:

23

El mensaje de error:

Ping: sendmsg: operation not permitted

significa que su servidor no tiene permitido enviar paquetes ICMP. Debe permitir que su servidor envíe tráfico a través de una o más de las interfaces configuradas. Puedes hacer esto:

  1. Establezca la OUTPUTpolítica de cadena ACCEPTpara permitir todo el tráfico saliente de su casilla:

    sudo iptables -P OUTPUT ACCEPT
    
  2. Establezca la OUTPUTpolítica de cadena en DROPy luego permita selectivamente el tipo de tráfico que necesita.

Esto se aplica a todas las cadenas, no solo a la OUTPUTcadena. INPUTLa cadena controla el tráfico recibido por su caja. FORWARDLa cadena se ocupa del tráfico reenviado a través de la caja.

Khaled
fuente
Ping era solo un ejemplo, no podía enviar paquetes udp, ni paquetes tcp ...
estol
Aunque, la misma idea se aplica
Khaled
Intenté lo que dijiste, los mismos resultados. Obtuve las reglas del servidor anterior, esto funciona parcialmente. Cualquier cliente puede buscar nombres de dominio, incluso puede hacer ping, pero no puede navegar por la web. Instalé un proxy como solución alternativa (ya que la conexión en el servidor está bien, al igual que la conexión al servidor), pero muchos servicios no funcionan (Trillian, Skype) de esta manera.
estol
¿Cuál es el comando para configurar la política de la cadena de salida para aceptar?
Joseph Astrahan
44
@JosephAstrahan:sudo iptables -P OUTPUT ACCEPT
Khaled
1

Para mí, en Debian 9, me ayudó simplemente reinstalar ping:

apt-get install --reinstall iputils-ping 
Dawid Ferenczy Rogožan
fuente