iptables regras para roteador

0

Estou executando o arco Linux em um Raspberry Pi para criar um roteador personalizado. A configuração:
eth0 : WAN / Internet opção 1 via DHCP
wlan0 : LAN via WPA2 / CCMP ( hostapd ) oferecendo DHCP ( dnsmasq , 192.168.0.0/24)
wlan1 : WAN / Internet opção 2 via DHCP (não considerado ainda)
Observação: dnsmasq consulta servidores DNS públicos (por exemplo, Google, 8.8.8.8) configurados no parâmetro server e também é configurado como um adblocker (parâmetro addn-hosts , FQDNs de anúncio apontando para 0.0.0.0).

Esta é minha configuração básica para IPv4 (conforme mostrado a seguir) e IPv6:
iptables -F
iptables -P INPUT DROP e iptables -P FORWARD DROP e iptables -P OUTPUT ACCEPT e iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 4444 -m state --state NEW -j DROP
Nota: 4444 é a porta default do medidor, portanto, novas conexões de saída nesta porta não são permitidas. / p>

Para NAT WAN e LAN, adiciono as seguintes regras iptables (daqui apenas IPv4): iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT e iptables -A INPUT -p tcp -m multiport --dports 22,53 -i wlan0 -j ACCEPT < br> iptables -A INPUT -p udp -m multiport --dports 53,67 -i wlan0 -j ACCEPT
Nota: As conexões de entrada para SSH (finalidade de administração) e DNS estão dentro da LAN permitida.

Como camada adicional de proteção e privacidade, o Pi estabelece um OpenVPN através de tun0 (DHCP, 10.10.0.0/24):
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

Desde que o túnel OpenVPN esteja presente, tudo funciona bem. Mas ainda não estou feliz com a configuração:

  1. Como posso configurar o Pi para encaminhar o tráfego através de eth0 caso o tun0 não esteja presente sem tocar novamente nas regras iptables ?
  2. Como posso configurar dnsmasq para usar o servidor DNS oferecido na configuração DHCP do servidor OpenVPN e, caso o provedor de VPN específico não ofereça uma entrada de servidor DNS, um servidor DNS público, como o Google, é apenas o failover opção?

Eu também gostaria de ter uma segunda conexão OpenVPN à nossa rede corporativa ( tun1 , DHCP, 10.10.1.0/24, * .mycorp.intern). Usando uma regra PREROUTING como:
iptables -t nat -A PREROUTING -i wlan0 --destination 10.10.1.0/24 --to-destination 10.10.1.1
Mas minha abordagem não funcionará, porque em tun1 o Pi receberá um IP (por exemplo, 10.10.1.100) de 10.10.1.0/24 com 10.10.1.1 como gateway e 10.10.1.2 como DNS para * mycorp.intern. Por outro lado, tun0 obterá um IP (por exemplo, 10.10.0.50) de 10.10.0.0/24 com 10.10.0.1 como gateway e talvez um servidor DNS. Contanto que os intervalos de endereços IP sejam estáticos, eu posso configurar tudo de alguma forma com tabelas IP, mas o OpenVPN envia as rotas, gateways, etc. para o meu iptables setup.

  1. Então, minha pergunta é, como eu tenho que mudar minha configuração, que os pacotes estão honrando as rotas locais e a configuração do DNS.

Loking para a frente para o apoio.

Kind regads.

    
por user286913 19.04.2018 / 11:17

0 respostas