Apenas uma coisa me intriga aqui: você diz que o DNS da máquina Arch está funcionando. Se o seu servidor DNS é sua caixa Ubuntu, ótimo. Se o seu servidor DNS é externo, então estou confuso. Eu não estou intimamente familiarizado com o Arch - apenas o instalei uma vez - mas você geralmente pode verificar /etc/resolv.conf
para ver quem são seus servidores DNS. Se eles são internos, muito provavelmente o seu NAT ou encaminhamento na caixa do Ubuntu não está funcionando. Se eles são externos - o que significa que você está resolvendo com êxito as consultas DNS contra um host externo - seu problema é provavelmente um problema do iptables.
De uma perspectiva "o que pode dar errado", é muito mais provável que seja encaminhamento / NAT. Então, verifique se o encaminhamento está de fato ativado na caixa do Ubuntu:
fireapple# cat /proc/sys/net/ipv4/conf/all/forwarding
1
Se ele retornar "0", é provável que seu encaminhamento não esteja ativado. Para corrigi-lo temporariamente, simplesmente
fireapple# echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
Para fazer isso durar até a reinicialização, edite /etc/sysctl.conf e adicione (ou modifique para parecer) a seguinte linha:
net.ipv4.ip_forward = 1
Em seguida, um script rápido de como configurar o NAT. Insira o seguinte em, digamos, NAT.sh
, certifique-se de ter chmod +x
it e coloque em /usr/local/bin/
. Note que eu fiz suposições sobre qual interface está fazendo o que, com base no fato de que ambos os hosts têm endereços 10.42.0.0/24:
#!/bin/sh
export INTERNET=wlan0 # Assuming eth0 is your Internet-facing address
export INTERNAL=eth0 # Likewise, assuming your WiFi is internal
iptables --flush # Clean slate
iptables -t nat -A POSTROUTING -o $INTERNAL -j MASQUERADE
iptables -A FORWARD -i $INTERNAL -o $INTERNET -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $INTERNAL -j ACCEPT
Quando estiver no local, execute-o (por exemplo, sudo /usr/local/bin/NAT.sh
); se tudo correr bem, você deve poder falar livremente com o mundo exterior.