encaminhamento de iptables entre duas interfaces


26

Então, eu tenho uma caixa Linux com duas interfaces sem fio, uma é uma estação e a outra um AP.

wlan0 (estação) - conectado à conexão à Internet

wlan1 (AP) - Outros clientes se conectam a ele.

Gostaria que os clientes conectados à wlan1 pudessem acessar a internet na wlan0. E eu gostaria de fazer isso com o iptables, pois meu kernel não tem suporte a pontes ...

Aqui está o que eu tentei até agora com o iptables, mas não está funcionando:

iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT

Eu apreciaria qualquer ajuda.


1
IPTABLES é um filtro de pacotes com estado, que permite / deixa cair / manipula pacotes. Não é um roteador ou ponte. Seus comandos ajustam o firewall para permitir o tráfego, mas eles não fazem nada para realmente enviá-lo.
precisa saber é o seguinte

Portanto, substitua o kernel por um que possua os recursos que você precisa. É "uma caixa de linux", afinal.
Michael Hampton

Posso conseguir o que estou tentando fazer com 'route'? Também analisarei a reconstrução do kernel com suporte a bridge, mas me perguntando se há outras opções.
broody

O percurso indica para onde ir quando estiver ativado. Michael disse o que você precisa fazer para oferecer suporte ao roteamento. Então você precisa ativá-lo via sysctl.
Magellan

Respostas:


35

Primeiro, para permitir que os hosts que se conectam à sua interface privada acessem a Internet, não é necessário fazer uma ponte entre as interfaces, é necessário rotear pacotes que entram em uma interface, na outra, para onde eles saem para a natureza.

Para fazer isso, você só precisa:

  1. Habilite o encaminhamento na sua caixa Linux:
  2. Permitir que pacotes específicos (ou todos eles) atravessem seu roteador
  3. Como alguém afirmou, como o netfilter é um firewall sem estado, permita o tráfego para conexões já estabelecidas
  4. Altere o endereço de origem nos pacotes enviados para a Internet
    eco 1> / proc / sys / net / ipv4 / ip_forward
    iptables -A FORWARD -i wlan1 -o wlan0 -j ACEITAR
    iptables -A FORWARD -i wlan0 -o wlan1 -m state --state ESTABELECIDO, RELACIONADO \
             -j ACEITA
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Isso deve resolver.


Eu acho que você provavelmente quis dizer: echo 1 >/proc/sys/net/ipv4/ip_forwardpara a primeira linha
Jason Tan

é isso ... não sei o que aconteceu com a última parte dessa linha ... corrigida.
Torian

Eu acho que você também teria que configurar os clientes para usar a caixa linux como gateway.
Jason Tan

E para tornar o envio persistem através de reinicializações que você quer fazer isso: 'echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf'
Jason Tan

1
@StudentsTea Sim, você faz, a menos que sua tabela iptables' FORWARDesteja definida para uma política de aceitação global. Você ainda precisará das natregras da tabela de qualquer maneira.
Thomas Ward
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.