Diferentes reglas de enrutamiento para un usuario en particular usando la marca de firewall y la regla ip

2

Ejecutando Ubuntu 12.10 en amd64.

Estoy tratando de configurar diferentes reglas de enrutamiento para un usuario en particular. Entiendo que la forma correcta de hacerlo es crear una regla de firewall que marque los paquetes para ese usuario y agregar una regla de enrutamiento para esa marca. Solo para comenzar las pruebas, he agregado una regla que descarta todos los paquetes como inalcanzables:

# ip rule
0:  from all lookup local
32765:  from all fwmark 0x1 unreachable
32766:  from all lookup main
32767:  from all lookup default

Con esta regla en su lugar y todas las cadenas de firewall en todas las tablas vacías y la política ACEPTAR, aún puedo hacer ping a los hosts remotos como cualquier usuario.

Si luego agrego una regla para marcar todos los paquetes e intento hacer ping a Google, falla como se esperaba

# iptables -t mangle -F OUTPUT
# iptables -t mangle -A OUTPUT -j MARK --set-mark 0x01
# ping www.google.com
ping: unknown host www.google.com

Si restringo esta regla al usuario de VPN, parece que no tiene ningún efecto.

# iptables -t mangle -F OUTPUT
# iptables -t mangle -A OUTPUT -j MARK --set-mark 0x01 -m owner --uid-owner vpn
# sudo -u vpn ping www.google.com
PING www.google.com (173.194.78.103) 56(84) bytes of data.
64 bytes from wg-in-f103.1e100.net (173.194.78.103): icmp_req=1 ttl=50 time=36.6 ms

Pero parece que la marca se está configurando, porque si agrego una regla para colocar estos paquetes en el firewall, funciona:

# iptables -t mangle -A OUTPUT -j DROP -m mark --mark 0x01
# sudo -u vpn ping www.google.com
ping: unknown host www.google.com

¿Qué me estoy perdiendo? ¡Gracias!

Paul Crowley
fuente

Respuestas:

2

Ping es setuid para que tenga permiso para construir paquetes ICMP, presumiblemente esto también evita que detecte la marca de firewall. Si intento esto en un cuadro de prueba, y uso excavar o telnet en mis casos de prueba, la ruta de la política parece activarse correctamente.

Jon Topper
fuente
De hecho, observo lo mismo. Todavía deja un misterio de por qué la regla DROP impide que el ping funcione, pero significa que puedo avanzar en este problema. ¡Gracias!
Paul Crowley
No creo que haya detenido el ping: el error que se produce con la búsqueda de DNS. Intente hacer ping a una IP en ese caso de prueba en lugar de buscar un nombre.
Jon Topper