La puesta en marcha:
Tengo varias configuraciones de cliente/servidor OpenVPN de clave estática, etiquetadas como "cliente1", "cliente2" y "cliente3" con IP de servidor/cliente 10.10.1.1/10.10.1.2, 10.10.2.1/10.10.2.2 y 10.10. 3.1/10.10.3.2, respectivamente, alojados en un servidor Linux y un cliente Linux (con tres procesos openvpn cada uno, cada uno con una interfaz tunX diferente). Tengo tres usuarios en mi máquina cliente Linux, el usuario "cliente1", "cliente2" y "cliente3". Tengo mi servidor configurado para hacer NAT de modo que el tráfico entrante del cliente1 en 10.10.1.2 salga a Internet (a través de -j SNAT en iptables) desde una IP, el cliente2 en 10.10.2.2 salga de otra IP, etc.
El problema:
Lo que no tengo es una forma para que la máquina cliente Linux enrute correctamente el tráfico de cada usuario a la IP adecuada del servidor OpenVPN a través de su túnel OpenVPN. Esencialmente, quiero que todo el tráfico destinado a Internet desde el cliente1 salga por una IP orientada a Internet en el servidor OpenVPN, el tráfico del cliente2 salga por otra, y así sucesivamente para tantos usuarios como me gustaría agregar. . Pero todo esto debe hacerse desde UNA máquina que aloje a todos los diferentes usuarios del cliente. Soy consciente de una funcionalidad de iptables que implica marcar paquetes por ID de usuario y luego configurar el enrutamiento IP en función de estas marcas, pero no sé cómo lograrlo.
¿Hay algún gurú de iptables/netfilter/etc que pueda ayudarme en este asunto?
Respuesta1
Puede marcar paquetes iptables
según el UID del proceso de creación. Puede utilizar esta marca de Netfilter tanto para enrutamiento (avanzado) ( ip rule
: man ip
o man ip-rule
; palabra clave "fwmark") como para DNAT. No estoy seguro de cuál es más fácil/mejor.
Editar 1 Para cada usuario:
iptables -t mangle -A PREROUTING -m owner --uid-owner $user -j MARK --set-mark $usermark
# one line in /etc/iproute2/rt_tables (numbers don't matter)
ip route add default via $user_gw_ip dev $user_if src $user_if_local_ip table $user_table
ip rule add type unicast fwmark $usermark priority 100 table $user_table