Preciso restringir o tráfego em uma máquina Debian, por exemplo, usando tabelas IP. Especificamente, o servidor possui 3 interfaces de rede principais, eth0, wlan0 e tun0.
eth0 é a conexão ethernet normal com a qual a máquina se conecta à internet wlan0 é um hotspot wifi, ou seja, outros dispositivos se conectam através desta interface à máquina tun0 é uma VPN IPSec que conecta "através" da eth0 a um servidor VPN externo que preciso agora restringir todo o tráfego de dispositivos que se conectam à máquina via wifi (ou seja, via wlan0) de acessar a internet. Infelizmente, o servidor VPN externo não possui um endereço IP fixo.
Meu plano é, portanto, permitir que o tráfego "vindo" de wlan0 SOMENTE seja encaminhado para tun0, mas nunca para eth0. Pelo que entendi, isso deve resultar na queda de todo o tráfego que não seria roteado pela conexão VPN e na impossibilidade de acesso à Internet. Ao mesmo tempo, o próprio servidor poderia acessar a Internet normalmente.
Isso é possível ou irá interferir no estabelecimento da conexão VPN em primeiro lugar?
Minha ideia é mais ou menos assim usando iptables:
iptables -A OUTPUT -j DROP -i wlan0 -o eth0 -p all
iptables -A INPUT -j DROP -i eth0 -o wlan0 -p all
Também pensei em especificar rotas de forma que o tráfego de wlan0 só pudesse ser encaminhado via tun0 e não existissem outras opções.
Qual das abordagens é mais razoável?
Para resumir, o que fiz para ter sucesso aqui:
Adicionei as respectivas regras REJECT à cadeia FORWARD conforme sugerido por @Tom_Yan:
cortando assim efetivamente todo o tráfego da rede wifi para a interface eth0 "normal" (e vice-versa).
Isso já resolve. Se a VPN falhar, nenhum cliente wifi terá qualquer forma de acesso à internet. Assim que a conexão VPN for restabelecida, a Internet estará novamente disponível para esses clientes. Missão bem sucedida.