DHCP para interface ethernet virtual USB

1

Estou tentando conectar minha placa Debian ARM Arietta G25 à minha rede doméstica usando DHCP (ou, na IP na sub-rede correta). No momento, estou usando a placa por USB, que aparece como um tipo de interface Ethernet virtual que é configurada usando um static 192.168.10.0/24 IP. Eu posso acessá-lo (SSH) da máquina que ele está conectada, mas eu quero poder acessar o resto da minha rede em 192.168.1.0/24 e a internet da placa, assim como acessar a placa da minha rede doméstica. / p>

A rede doméstica está na sub-rede 192.168.1.0/24 .

Atualmente, tenho dois arquivos /etc/network/interfaces :

Configuração do host (host do Linux)

allow-hotplug usb0
iface usb0 inet static
    address 192.168.10.20
    netmask 255.255.255.0

Configuração da placa (placa Debian ARM via USB)

auto usb0
iface usb0 inet static
    address 192.168.10.10
    netmask 255.255.255.0
    gateway 192.168.10.20

Eu tentei definir o IP da placa como 192.168.1.90 , mas isso tornou inacessível. Algo a ver com o gateway talvez? Eu também tentei

iface usb0 inet dhcp

sem sucesso.

Como posso obter minha placa ARM conectada por USB com interface Ethernet virtual para ter um endereço IP (DHCP ou estático) na sub-rede 192.168.1.0/24 usada pelo restante da minha rede quando conectada a uma caixa USB? Eu prefiro usar o DHCP. Há um servidor DHCP em execução no roteador em 192.168.1.1 .

    
por Bojangles 08.11.2014 / 00:32

2 respostas

1

Isso é possível usando NAT e iptables (graças à resposta de inspiração de Greg Bowser). Assumindo que eth0 é a interface de rede e usb0 é a interface de rede do Arietta, isso irá configurar o roteamento no host temporariamente :

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

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o usb0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT

Faça um teste (pode ser necessário ifdown usb0 e ifup usb0 ou reiniciar o Arietta). Se as regras funcionarem, você poderá fazer ping de um endereço externo ( 192.168.1.1 ou google.com talvez) do Arietta.

Se as regras acima do iptables funcionarem, você pode torná-las permanentes adicionando net.ipv4.ip_forward = 1 a /etc/sysctl.conf e salvando as regras iptables. Fiz isso instalando iptables-persistent ( apt-get install iptables-persistent ) e salvando as regras durante a instalação.

    
por 08.11.2014 / 20:02
1

Configurar o IP da placa para 192.168.1.90 não funcionará porque o roteamento irá falhar. Se você executar ip route na caixa do host, ele mostrará que 192.168.1.0/24 está conectado por meio de sua conexão de rede normal com o restante da LAN. Está tentando rotear os pacotes para fora dessa interface e não usb0 como pretendido.

Duas opções:

  1. Use o host do Linux como um roteador. Isso requer a habilitação do encaminhamento e configuração do NAT (MASQUERADING) com o iptables (isso é bem simples)

  2. Crie uma interface de ponte na sua caixa de host e adicione as duas interfaces físicas a essa ponte. Isso é basicamente como conectá-los ao mesmo switch, mas feito em software. Eu assumirei que sua rede está conectada à caixa do host em eth0 :

    brctl addbr br0
    brctl addif br0 usb0
    brctl addif eth0
    

Isso deve funcionar apenas ©. Você pode precisar instalar o pacote bridge-utils . Como você está usando uma distro baseada no Debian, veja aqui .

    
por 08.11.2014 / 03:32