Bloquee todo el acceso WAN en la interfaz Wi-Fi usando DD-WRT

Bloquee todo el acceso WAN en la interfaz Wi-Fi usando DD-WRT

Tengo un enrutador dd-wrt con dos interfaces Wi-Fi ( ath0, ath1). Quiero que todo lo que esté encendido ath0no tenga ningún tipo de acceso WAN. Solo LAN (hacia y desde el dispositivo).

¿Cómo haría esto de la manera más fácil y sólida?

Antes, también probé esto usando ath1 agregando un AP virtual, un nuevo puente para el AP y algunas configuraciones avanzadas de enrutamiento y firewall. Sin embargo, esto era demasiado complicado y pensé que debería ser mucho más fácil usar mi ath0interfaz (5GHz) (de todos modos sin usar) para este propósito.

Estoy usando OpenVPN como cliente, lo que complica un poco las cosas. Cuando uso el firewall de iptables con el enfoque anterior, siempre tengo que restablecer manualmente la configuración del firewall porque un archivo en /etc/ está sobrescribiendo mis reglas ( -Ien la parte superior) debido a la VPN, permitiendo todo el acceso WAN siempre que finalice. la VPN. Debido a squashFS no pude encontrar una manera de evitarlo y tener que sobrescribirlo siempre manualmente después de guardar la configuración/reiniciar el enrutador no es tan agradable. Además, no estoy seguro de que no lo sobrescriba nuevamente más tarde.

Tampoco quiero ath0tener acceso VPN. No puedo usar iptables con una IP de origen porque debería ser para todos los clientes en ese SSID/interfaz y tan pronto como se conecten, por lo que realmente no sabré una IP de antemano.

Intenté buscar esto pero no pude encontrar nada que funcionara para mi caso, excepto la solución AP/puente virtual demasiado avanzada.

Respuesta1

Suponiendo que también tiene ebtables(o ebtables-nft) además de iptablesen el enrutador, y que todas las interfaces (W)LAN son esclavas de puente para el mismo maestro (por ejemplo, llamado bridge0):

ebtables -I INPUT -i ath0 -j mark --set-mark 0xabcd
iptables -I FORWARD -i bridge0 -m mark --mark 0xabcd -j DROP

(Tenga en cuenta que el valor de la marca 0xabcdes arbitrario).

Esto hace que todo el tráfico que ingresa al enrutador desde el "lado LAN" "permanezca dentro" del dominio de transmisión. La razón es que ebtables' INPUTno incluye el tráfico que va desde un puerto/esclavo de puente a otro (es decir, reenvío L2). Y para lo que apunta al enrutador en sí (que proviene ath0y, por lo tanto, está marcado), no queremos que se reenvíen en L3 (es decir, poder pasar de "LAN" a "WAN"/VPN/...) .

Como alternativa, también puedes hacerlo sin depender de iptables o del marcado de paquetes:

ebtables -I INPUT -i ath0 -d Unicast -p ip ! --ip-dst $ROUTER_LAN_IP -j DROP

Si bien no se ha probado, -d Unicastse supone que mantiene DHCP funcionando. Si también necesitas IPv6 (tráficospara el enrutador en L3) para funcionar, probablemente necesite/quiera una cadena adicional para más excepciones (lo que también le permitirá permitir DHCP con otro enfoque), como:

ebtables -N ATH0
ebtables -A ATH0 -p ip --ip-dst $ROUTER_LAN_IP -j ACCEPT # unicast
ebtables -A ATH0 -p ip --ip-dport 67 -j ACCEPT # broadcast
ebtables -A ATH0 -p ip ... -j ACCEPT
...
ebtables -A ATH0 -p ip6 ... -j ACCEPT
...
ebtables -A ATH0 -j DROP
ebtables -I INPUT -i ath0 -j ATH0

Pero como puede ver, este último enfoque es mucho más torpe.

PD: No tengo experiencia con todos los WRT o similares, por lo que no tengo idea de cómo hacer que las reglas de xtables sean persistentes en ellos. (Sin embargo, para ser justos, AFAIK es específico de la distribución de todos modos, incluso en las distribuciones de Linux "típicas").

información relacionada