Compreendendo o iptables no dispositivo de roteamento

Compreendendo o iptables no dispositivo de roteamento

Então, tenho configurado um Raspberry Pi para funcionar como um roteador VPN com a ajuda de stunnel, OpenVPN e muitos artigos online (principalmente os deJayden Chua) e posso criar um com sucesso, mas não entendo completamente a parte do iptables (descrita abaixo), embora tenha lido alguma ajuda online sobre o assunto.

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -j ACCEPT
iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT

Alguém pode me explicar cada linha? Eu sei que pode ser simples, mas honestamente não consigo entender por que isso funciona =P

Desde já muito obrigado =)

Responder1

Primeiro de tudo, precisamos definir o encaminhamento de IP. Não vou explicar muito profundamente (nem sei), mas basicamente, neste contexto, o que você precisa saber é que significa o fluxo de pacotes de um host para outro através deste host.

Devo observar que nenhuma das -A FORWARD ... -j ACCEPTregras/comandos é necessária, a menos que você tenha -P FORWARD DROPalgo semelhante (ou seja, descarte qualquer pacote que deva ser encaminhado). As regras não fazem o encaminhamento acontecer, mas apenas abrem exceção quando o padrão não é "ACEITAR". (Você "ativa" o encaminhamento com sysctl.)

Agora podemos ver as regras:

iptables -A FORWARD -i wlan0 -j ACCEPT

Isso significa permitir que os pacotes vindos de wlan0 sejam encaminhados (para outra rede através de qualquer interface neste host).

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

Isso significa permitir que os pacotes que chegam do wlan1 sejam encaminhados para o tun0. (Observe que isso não é necessário para que os pacotes alcancem o(s) endereço(s) do próprio tun0, pois isso não conta como "encaminhamento".)

iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED

Isso significa permitir que pacotes que chegam de tun0 sejam encaminhados para wlan1, somente se houver conexão relacionada ou estabelecida, verificando com a extensão/módulo state(foi obsoleto com conntrack, que leva o switch --ctstate). Juntamente com a regra anterior, pretendem essencialmente permitir o encaminhamento entre tun0 e wlan1, desde que a ligação não seja iniciada por um pacote de tun0.

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

Isso basicamente significa que os pacotes que saem do tun0 teriam seu endereço de origem alterado para o do tun0. Se isso não for feito, o próximo roteador precisará ter uma rota de retorno para que qualquer resposta alcance o endereço de origem original. (ou seja, para alcançar o endereço de origem original, este host deve ser o gateway). Isso também é conhecido como NAT (sobrecarga)/PAT. Pense nisso como fazer o tun0 funcionar como a porta/interface WAN de um roteador típico de consumidor.

Responder2

Para entender isso, você deve compreender os princípios do roteamento. No entanto, não posso escrever um livro com esta resposta, por isso vou mantê-lo curto e simples.

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

Esta regra basicamente pega o pacote, aplica-seNAT, mas após a decisão de como encaminhar este pacote ser tomada. É por isso que é aplicado a POSTROUTING. Em seguida, ele envia o pacote de volta para o túnel chamado tun0. Esta é a sua conexão VPN. Também se aplica mascaramento, pois a regra não conhece o IP do dispositivo. Sem ele, você precisaria usar este comando para cada dispositivo conectado. Então você pode ver isso como uma espécie de curinga.

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

Esta linha diz para aceitar todo o tráfego encaminhado para a wlan0interface. Presumo wlan0que seja usada como conexão primária à Internet neste guia, portanto, esta é a rota principal entre o roteador e o túnel VPN. Isso faz com que o Pi aceite pacotes nesta interface e dáacesso à rede interna. A segunda linha aqui é basicamente o caminho de volta para o pacote. Do pi, de volta ao túnel.

iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT

Esta linha permite o tráfego vindo do túnel tun0indo para a interface wlan0, mas somente se uma conexão forestabelecidoanteriormente.

Resumindo, essas regras permitem que pacotes provenientes do túnel VPN fluam para o resto da rede privada e voltem.

informação relacionada