Com o iptables como encaminhar o tráfego do adaptador interno do virtualbox para a interface eth0?

1

eu estava aprendendo iptables um pouco mais e as coisas estavam indo bem, mas eu estou confuso com o uso de DNAT, SNAT e MASQUERADE, eu estava fazendo paratice com eles e não conseguia encontrar uma maneira de simplesmente direcionar o tráfego de uma interface para outra Eu tentei trafegar o tráfego do adaptador host virtual somente para eth0 (eu realmente não sei se é possível com iptables), eu encontrei vários posts na internet sobre este tópico (como o roteamento entre wlan0 et0 etc) com muita sintaxe iptables mas nenhum parece estar funcionando, então alguém pode fornecer a sintaxe certa para isso ou pode até dizer que pode estar com alguma outra tabela no iptables ou pelo menos o uso de SNAT, DNAT e MASQUERADE.

    
por Mr.IT 20.10.2015 / 15:47

2 respostas

3

Antes de chegar ao iptables, não é a única coisa que você precisa. Primeiro, no host, você deve ativar o encaminhamento IPv4,

 echo 1 > /proc/sys/net/ipv4/ip_forward

e, no convidado, você deve configurar um gateway padrão,

 ip route add default via 192.168.56.1 dev eth0

se o seu adaptador interno estiver usando a sub-rede 192.168.56.0/24 (o padrão), caso contrário, mude de acordo.

Quanto ao iptables: pacotes que chegam através do adaptador interno e tentam acessar a internet terão como endereço de origem o do convidado, o que na sua rede de contatos ninguém sabe, já que pertence a uma sub-rede diferente, 192.168.56.1 . Por isso nunca receberá uma resposta. Assim, precisamos de uma regra iptables que reescreva o endereço de origem para ser o do host, que pode ser acessado pelo seu roteador / modem / gateway. O próprio iptables manterá o controle da conexão para que os pacotes de resposta sejam enviados corretamente ao convidado, em vez de serem retidos pelo host; não há necessidade de fazermos nada.

Ambas as regras iptables funcionarão

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
    iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.15

(o acima afirma que o host tem o endereço IP 192.168.1.15 e está conectado ao seu modem / gateway / roteador via eth0 ; caso contrário, mude de acordo). A diferença entre essas duas declarações é clara: com o SNAT, você deve declarar explicitamente o endereço IP da interface, mas o MASQUERADE não. Portanto, se por algum motivo o endereço IP de sua interface for alterado, a regra com SNAT não estará mais correta, enquanto a com MASQUERADE (que verifica o endereço IP toda vez que for usada) não será necessário ajustar a regra. Obviamente, o MASQUERADE é um pouco mais lento que o SNAT.

Pessoalmente, prefiro o MASQUERADE porque torna minha configuração de firewall portátil, mas, como dizem, YMMV.

    
por 20.10.2015 / 16:36
0
iptables -t nat -A POSTROUTING -s 192.168.56.0/24 -d 0/0 -j MASQUERADE

Substitua 192.168.56.0/24 pelo seu endereço de rede somente para host e ele deve funcionar.

Mas será uma direção da rede Host_only ethX / wlanX e mais distante usando seu gateway padrão no host, se você quiser ir na direção oposta, todos os seus dispositivos devem ter o gateway padrão apontado para seu endereço IP ethX / wlanX

    
por 20.10.2015 / 16:01