Como usar regras NAT iptables para hostapd

7

Meu PC é equipado com duas interfaces de rede - wlan0 e eth0. Eu quero usar a porta WiFi como ponto de acesso no wlan0. Então eu uso o recurso hostapd e funciona corretamente no modo de roteamento na rede local. Os usuários podem se conectar a esse ponto de acesso criado e o DHCP funciona corretamente em ambos os segmentos. O PC com hostapd não possui nenhum firewall e / ou regras de iptables (iptables e firewalls desabilitados). Eu quero usar somente o firewall embutido no roteador ADSL.

Minha configuração de rede é a seguinte

...... PC com hostapd ................. conexão a cabo .................. ADSL roteador

..... wlan0 .............. eth0 ..... < ------------------- ----------- > ........... 192.168.0.1 ...................... & lt ; --- > Internet 192.168.10.1 ... 192.168.0.7 .............................. adicionou roteamento estático para 192.168.10.X

ifconfig no PC:

eth0      Link encap:Ethernet  HWaddr 00:12:3F:F2:31:65  
       inet addr:192.168.0.7  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::212:3fff:fef2:3165/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2169539 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1008097 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:3056198487 (2.8 GiB)  TX bytes:72727161 (69.3 MiB)
      Interrupt:16 

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:3398 errors:0 dropped:0 overruns:0 frame:0
      TX packets:3398 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:495444 (483.8 KiB)  TX bytes:495444 (483.8 KiB)

mon.wlan0 Link encap:UNSPEC  HWaddr 00-14-A5-04-94-3C-90-F0-00-00-00-00-00-00-00-00  
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:151 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:17092 (16.6 KiB)  TX bytes:0 (0.0 b)

wlan0     Link encap:Ethernet  HWaddr 00:14:A5:04:94:3C  
      inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
      inet6 addr: fe80::214:a5ff:fe04:943c/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1502 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 b)  TX bytes:279392 (272.8 KiB)

Eu estou totalmente no no iptables. Então alguém pode me ajudar a configurar config iptables NAT simples no PC? Eu quero que todos os usuários conectados à rede via hostapd (rede 192.168.10.X) tenham acesso de e para a internet? Eu não quero filtrar qualquer tráfego, apenas NAT.

OK, THX. Mas eu não consigo conexão com a Internet do segmento WiFi. O cliente conectado ao WiFi tem endereço 192.168.10.48 (via DHCP). O tráfego inly eu posso notar na porta eth0 a partir deste endereço é

16:50:14.671587 ARP, Request who-has 192.168.0.48 tell 192.168.0.1, length 46

Aviso - o endereço é 192.168.0.48 não 192.168.10.48. Então o disfarce parece funcionar.

Eaven Eu não consigo pingar para 192.168.0.1 - a porta do roteador ADSL. Isso foi possível antes.

E quanto ao acesso da Internet aos usuários do WIFI? É claro que configurarei o roteador ADSL, encaminhando o pooling particular de portas IP da Internet para um endereço IP específico desse usuário de WiFi.

EDITAR

systemstl mostra que o iptables é:

iptables.service          loaded active exited

Mas claro que corro:

systemctl enable iptables.service
systemctl start iptables.service

EDITAR

Funciona! Mas eu tenho que adicionar manualmente cada vez que eu iniciar o computador (a partir do script de inicialização):

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

É uma situação normal?

    
por mackowiakp 07.07.2013 / 10:05

2 respostas

6

Na forma mais simples:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Isso permitirá que todos os usuários do Wi-Fi acessem para a Internet.

Claro, supondo que sua outra configuração de roteamento já esteja concluída, a saber:

  1. Encaminhamento habilitado no kernel

    sysctl net.ipv4.ip_forward=1
    
  2. Encaminhamento ativado em iptables :

    iptables -P FORWARD ACCEPT
    iptables -F FORWARD
    

Use tcpdump -nn -i eth0 para observar o tráfego em eth0 em caso de problemas para ver se ele é NATed corretamente, se a resposta está voltando, etc.

EDIT: "Eu tenho que adicionar manualmente cada vez que eu iniciar o computador (a partir do script de inicialização) ..." Depende de qual distribuição Linux você possui. Infelizmente, praticamente cada distribuição tem sua própria ferramenta Firewall - no final eles só chamam iptables , mas por alguma razão os autores acreditam que ofuscar a maneira como o iptables funciona é o que os usuários querem.

Para responder à sua pergunta, é mais provável que seu firewall possa ser configurado para adicionar essa regra de NAT automaticamente. A maneira exata, no entanto, varia entre distros do Linux sem um bom motivo. Triste mas é verdade.

    
por 07.07.2013 / 11:04
3

Eu escrevi um firewall para todas as ocasiões. Por favor, leia o README e o SCRIPT antes de usá-lo. Eu incluí as regras necessárias para o HOSTAP

Essential Parts:

HostAP

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 wlan0 -o eth0 -j ACCEPT

HostAP requer que as linhas abaixo sejam ACCEPT para funcionar

iptables -A INPUT -j ACCEPT >> /dev/null 2>&1 
iptables -A OUTPUT -j ACCEPT >> /dev/null 2>&1

link

    
por 18.03.2018 / 08:29