IPTables para roteamento de pacotes com duas redes wifi

2

No momento, estamos configurando um sistema no qual estamos usando um computador Linux (debian) que atua como um roteador e controle WiFi. O computador Linux se conecta a duas redes WiFi (vamos chamá-las de A e B) via WiFi (wlan0 e wlan1). Um PC é então conectado via Ethernet à caixa Linux para permitir o acesso a qualquer dispositivo nas duas redes WiFi. Veja imagem de arte ASCII

                                             WiFi A (192.170.1.xx)
                                            /
                                           /
PC (192.168.2.xx) ----- (192.168.2.1) Linux (192.170.1.253) 
                                           \
                                            \
                                             WiFi B (192.170.1.xx)

Protocolos que precisamos roteados:

  1. SSH para qualquer dispositivo 192.170.1.xx do PC
  2. TCP nas portas 1234/4321 para qualquer dispositivo 192.170.1.xx do PC
  3. PING para qualquer dispositivo 192.170.1.xx do PC

A questão refere-se a como configurar o IPTables

  • O PC tem o gateway configurado para 192.168.2.1, então qualquer pacote enviado pelo PC para 192.170.1.xx será encaminhado para a caixa do Linux?

Isto é o que eu acho que deveria funcionar (ainda não testado). Você poderia por favor indicar se isso está correto ou se eu tenho um erro fundamental na minha lógica?

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan 1-m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT
    
por Lhh92 01.08.2017 / 09:26

2 respostas

2

Nota: Wifi A e B devem estar em diferentes sub-redes, caso contrário o sistema Linux irá reclamar.

Assumirei que eth0 é para o PC, então você pode usar esta regra para conseguir o que deseja para as portas ssh e tcp:

iptables -t filter -A FORWARD -i eth0 -o <Interface> -d <Des subnet> -p tcp --dport <Des Port> -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

Para permitir o ping, você pode usar:

iptables -t filter -A FORWARD -i eth0 -o <Interface> -d <Des subnet> -p icmp --icmp-type 8 -j ACCEPT
    
por 01.08.2017 / 10:04
1

Como você parece estar usando o mesmo intervalo de endereços para Wi-Fi A e WiFi B e a caixa Linux tem apenas um endereço nessa faixa, eu acho que você precisaria preencher as duas interfaces wlan (ou seja, tratá-las como uma única rede) Nesse caso, suas regras do iptables precisariam fazer referência à interface da bridge.
Consulte esta pergunta para obter algumas ideias sobre como configurar a filtragem em uma rede de ponte. Alternativamente, se você tiver atribuído diferentes sub-redes de 192.170.1.xx a cada rede wifi, a caixa linux precisará de 1 endereço IP em cada sub-rede, não o endereço 192.170.1.253 que você indicar.

    
por 01.08.2017 / 10:17

Tags