Configurar o Linux como WAP para MyBookLive?

4

Eu herdei uma caixa Linux antiga, assim como um MyBookLive, e gostaria de disponibilizar o MyBookLive através da minha rede sem fio, essencialmente usando a caixa do Linux como gateway.

Limpei a caixa do Linux (home) e instalei o Ubuntu 12.04 nela. Minha configuração de rede atualmente é assim:

       (192.168.0.1
    netmask 255.255.255.0)     
ISP --- wireless router --- wlan0 on home (192.168.0.12)
               |             eth0 on home --- MyBookLive
            MacBook
        (192.168.0.11)

para que o MyBookLive seja basicamente um disco rígido externo glorificado. O roteador tem uma porta Ethernet, mas está sendo usado pelo computador do meu colega de quarto, então não posso conectar o MyBookLive diretamente a ele.

Agora posso fazer ping MyBookLive.local e MacBook.local de casa, mas estou tendo problemas para entender e descobrir quais são os comandos iptables corretos para fazer com que meu MacBook veja meu MyBookLive através da rede Bonjour. Além disso, não tenho certeza se preciso configurar o DNS para encaminhar os endereços xxx.local Bonjour / Zeroconf.

Eu tentei o seguinte para encaminhar toda a minha rede com fio (que tem apenas meu MyBookLive) para um único endereço IP:

sysctl net.ipv4.ip_forward=1
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp -j DNAT --to 192.168.0.66
iptables -t nat -A PREROUTING -i eth0 -p udp -j DNAT --to 192.168.0.66

mas não consigo pingar esse endereço no meu MacBook. Provavelmente, isso está horrivelmente errado, mas eu sou um especialista completo em configurar esse tipo de rede e poderia usar alguma ajuda especializada para configurar isso corretamente.

    
por Jiahao Chen 28.11.2012 / 16:59

3 respostas

0

A melhor coisa a fazer aqui seria configurar um NAT e encaminhar as portas necessárias da interface wlan0 do home para as portas equivalentes na interface do disco rígido externo.

O script a seguir é um exemplo que configuraria o NAT de forma que os dispositivos conectados à eth0 em casa (por meio de um switch ou de um TP cruzado) obtivessem acesso à rede sem fio.

#!/bin/sh
INTERNAL_IP=home.lan
INTERNAL_NM=255.255.255.0
INTERNAL=eth0
EXTERNAL=wlan0

ifconfig $INTERNAL $INTERNAL_IP netmask $INTERNAL_NM up

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $EXTERNAL -s 192.168.0.0/24 -j MASQUERADE
iptables -A FORWARD -i $EXTERNAL -o $INTERNAL -m state \
    --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $INTERNAL -o $EXTERNAL -j ACCEPT

Para que a situação descrita funcione, os dispositivos da rede sem fio devem estar habilitados para "olhar para trás" na rede NAT (que está escondida atrás de home.lan). A abordagem que você tentou na pergunta é basicamente correta, exceto que ela se traduz na direção errada. Você deseja encaminhar pacotes recebidos em portas específicas na interface home.lan para o ip local NATH escondido de mbl.lan

#(continued)
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 445 -j DNAT \
      --to mbl.lan:445
iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 139 -j DNAT \
      --to mbl.lan:139

Esta configuração tornaria impossível executar um servidor samba no host, porque o tráfego vindo para as portas samba padrão é enviado para o disco rígido externo. Isso não faz parte da questão, mas uma possível solução seria executar o serviço samba de home em uma porta diferente, ou usar um valor --dport como 4455 e configurar manualmente os clientes para se conectar a uma porta diferente quando acessando meu livro ao vivo.

Note que esta resposta assume que o samba está sendo usado na unidade e que as portas precisarão ser ajustadas se um protocolo diferente for usado.

Uma limitação notável deste método é que todas as conexões que chegam à unidade externa parecerão ter sido originadas em home.lan.

Alias de rede:
mbl.lan (meu endereço ao vivo do livro; 192.160.0.66)
home.lan (endereço ip home wlan0; 192.168.0.12)

Referências:
link
link

    
por 04.12.2012 / 05:56
0

Acho que a solução simples é configurar o dispositivo de ponte br0 no linux-box e incluir as interfaces eth0 e wlan0 nele.

  1. Download bridge-utils no ubuntu
  2. Adicionar ponte brctl addbr br0
  3. Adicione dispositivos de rede para vincular brctl addif br0 eth0 e brctl addif br0 wlan0
  4. Defina o IP como sua interface br0 (não defina IPs como eth0 ou wlan0)
  5. Exclua as regras DNAT de iptables
  6. Edite seu iptables config e substitua os parâmetros -i e -o por -m physdev --physdev-in e -m physdev --physdev-out

Isso criará a interface br0 virtual, que age como se wlan0 e eth0 fossem uma interface em uma rede. Isso permite que você acesse seu disco de rede de qualquer PC da sua rede.

EDITAR:

Isso está funcionando se você estiver usando seu wlan0 como AP em master mode . Eu suponho que você esteja usando hostapd para criar esse AP no linux-box.

Outra coisa que eu devo mencionar é que adicionar a interface wlan0 no meu caso é possível somente depois de eu exec hostapd first.

Grande recurso para redes sem fio hostapd e linux: link

    
por 03.12.2012 / 14:02
0

Eu tenho uma configuração semelhante para testes de curto prazo.

Instale o hostapd desta forma: (hostapd é um daemon de ponto de acesso sem fio)

sudo apt-get install hostapd

Aqui está um arquivo de configuração hostapd.conf realmente mínimo (note que você precisará de mais configurações para proteger sua rede com WPA / WPA2).

interface=wlan0
driver=nl80211
ssid=AcidFlask
channel=9
hw_mode=g
country_code=NO
auth_algs=1
wpa=0
ignore_broadcast_ssid=0

Em seguida, inicio o daemon hostapd e o envio desta forma:

sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
ifconfig wlan0 172.20.99.1 netmask 255.255.255.0
iptables -t nat -A POSTROUTING -s 172.20.99.0/24 -o eth0 -j MASQUERADE
hostapd -d hostapd.conf

Por fim, defino um IP estático no meu cliente (172.20.99.2, por exemplo, com a máscara de rede 255.255.255.0, gateway 172.20.99.1 e DNS 8.8.8.8).

Esta é realmente uma solução barebone, já que não tem segurança wireless e DHCP, mas deve funcionar e você pode construir dependendo de suas necessidades além disso.

Observe também que esta solução requer que seu adaptador Wi-Fi suporte o modo AP:

  • ath9k funcionará na maioria dos casos
  • rtl8187 não funcionará AFAIK

EDITAR: Eu entendi mal sua frase "usando a caixa do Linux como um ponto de acesso sem fio". Eu pensei que você queria conectar sua caixa Linux ao seu MyBookLive sem fio. Por favor desconsidere minha solução.

    
por 06.12.2012 / 20:16