O compartilhamento de conexão do NetworkManager não parece com pacotes NAT

4

Depois de configurar compartilhamento de rede de maneira fácil no Ubuntu máquina, e obtendo um endereço IP via DHCP no downstream da máquina Arch Linux, a máquina Arch é capaz de ssh para a máquina Ubuntu e resolver DNS, mas não se comunicar com a Internet ( ping , pacman time out) . Da máquina Arch Linux:

$ ip route show dev net0
default via 10.42.0.1 metric 202
10.42.0.0/24 proto kernel scope link src 10.42.0.15 metric 202
$ ip addr show dev net0
...
inet 10.42.0.15/24 brd 10.42.0.255 scope global net0
...

Na máquina Ubuntu:

$ ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether e8:11:32:66:e3:4d brd ff:ff:ff:ff:ff:ff
    inet 10.42.0.1/24 brd 10.42.0.255 scope global eth0
    inet6 fe80::ea11:32ff:fe66:e34d/64 scope link 
       valid_lft forever preferred_lft forever
$ ip addr show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 88:53:2e:1b:4b:1c brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.64/24 brd 192.168.1.255 scope global wlan0
    inet6 fe80::8a53:2eff:fe1b:4b1c/64 scope link 
       valid_lft forever preferred_lft forever

Será que a configuração automática de NAT no Ubuntu falhou? Não sei como isso funciona, então como eu detectaria isso?

    
por l0b0 07.09.2013 / 01:36

1 resposta

1

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.

    
por 05.02.2014 / 08:10